summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i2c
Commit message (Collapse)AuthorAgeFilesLines
...
* drm/i2c: tda998x: move and rename tda998x_encoder_set_config()Russell King2016-11-181-20/+20
| | | | | | | | | | | | The naming of tda998x_encoder_set_config() is a left-over from when TDA998x was a slave encoder. Since this is part of the initialisation, drop the _encoder from the name, and move it near tda998x_bind(). Tested-by: Robin Murphy <robin.murphy@arm.com> Tested-by: Jon Medhurst <tixy@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org> Tested-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* drm/i2c: tda998x: correct function name in commentsRussell King2016-11-181-2/+2
| | | | | | | | | | | Correct two references to tda998x_connector_get_modes() which were incorrectly referring to tda998x_encoder_get_modes(). Tested-by: Robin Murphy <robin.murphy@arm.com> Tested-by: Jon Medhurst <tixy@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org> Tested-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* drm/i2c: tda998x: only enable audio if supported by sinkRussell King2016-11-181-3/+24
| | | | | | | | | | | | Check for audio support by the attached sink by consulting the EDID prior to enabling audio over the TMDS link. We must consult the EDID after calling drm_helper_probe_single_connector_modes(), as this can use an override EDID, or load a replacement EDID. Tested-by: Jon Medhurst <tixy@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org> Tested-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* drm/i2c: tda998x: only configure infoframes and audio if supportedRussell King2016-11-181-5/+19
| | | | | | | | | | | | | | | | | The CEA 861B specification indicates the situations when we are able to send each infoframe based on the version of the EDID's CEA extension. Update the tda998x driver to follow the CEA specification wrt sending of infoframes. Since we only support the generation of AVI version 2, this limits us to CEA extension version 3, so we treat CEA extension version 2 as CEA 861 (no infoframes, no audio.) Tested-by: Robin Murphy <robin.murphy@arm.com> Tested-by: Jon Medhurst <tixy@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org> Tested-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* drm/i2c: tda998x: avoid race when programming audioRussell King2016-11-181-2/+2
| | | | | | | | | | | | | | | | | | Avoid a race between programming audio and an in-progress mode set. A mode set is complex, and disables the ability to send infoframes to the sink, and is disruptive to audio - we have to mute the audio FIFO while doing a mode set. If an attempt is made to start up the audio side, we will undo the audio FIFO mute before the mode set has completed. Move the lock so that we prevent audio interfering with an in-progress mode set. Tested-by: Jon Medhurst <tixy@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org> Tested-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* drm/i2c: tda998x: avoid racy access to mode clockRussell King2016-11-181-14/+11
| | | | | | | | | | | Avoid a racy access to the mode clock by storing the current mode clock during a mode set under the audio mutex. This allows us to access it from the audio path in a safe way. Tested-by: Jon Medhurst <tixy@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org> Tested-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* drm/i2c: tda998x: avoid race in tda998x_encoder_mode_set()Russell King2016-11-181-4/+3
| | | | | | | | | | | | | | | | | As priv->audio_params can now be changed at run time, we need to be more careful about how we deal with a mode set. We must take the audio lock while checking if there's a valid audio configuration. However, it's slightly worse than that - during mode set, we mute the audio, and it must not be unmuted until we have finished the mode set. It is possible that the audio side may start while a mode set is in progress, so take the audio_mutex lock around the whole mode setting procedure. Tested-by: Jon Medhurst <tixy@linaro.org> Acked-by: Jon Medhurst <tixy@linaro.org> Tested-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* drm/i2c: tda998x: move audio mutex initialisationRussell King2016-11-171-2/+2
| | | | | | | We will need the audio mutex initialised in all cases, so lets move this to be early, rather than only being initialised for the DT case. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* Merge branch 'drm-tda998x-mali' into drm-tda998x-develRussell King2016-11-016-1336/+2
|\
| * drm/i2c: tda998x: mali-dp: hdlcd: refactor connector registrationBrian Starkey2016-10-311-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Connectors shouldn't be registered until the rest of the whole device is set up, so that consistent state is presented to userspace. As such, remove the calls to drm_connector_register() and drm_connector_unregister() from tda998x, as these are now handled by drm_dev_(un)register() itself. To work with this change, the mali-dp and hdlcd bind and unbind sequences have to be reordered, to ensure that the componentised encoder/connector is bound before drm_dev_register() registers all connectors. Similarly, the device must be unregistered before the component is unbound. Altogether, this allows other drivers using tda998x to be de-midlayered, and to have less racy initialisation of their components. Splitting this commit into three (one per driver) isn't possible without intermediate breakage, so it is all squashed together here. Suggested-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Brian Starkey <brian.starkey@arm.com> Reviewed-by: Liviu Dudau <Liviu.Dudau@arm.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
| * drm/i2c: adv7511: Move to bridge folderArchit Taneja2016-07-134-1387/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The driver has been converted to use drm_bridge instead of drm_i2c_slave_encoder. We can now move it to the bridge folder. Create a separate folder since we already have a couple of files and expect more when we support audio and ADV7533. Rename the driver to adv7511_drv.c. This will come in handy later when the driver module will need to be built from multiple object files. Signed-off-by: Archit Taneja <architt@codeaurora.org>
| * drm/i2c: adv7511: Convert to drm_bridgeArchit Taneja2016-07-132-74/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't want to use the old i2c slave encoder interface anymore. Remove that and make the i2c driver create a drm_bridge entity instead. Converting to bridges helps because the kms drivers don't need to exract encoder slave ops from this driver and use it within their own encoder/connector ops. The driver now creates its own connector when a kms driver attaches itself to the bridge. Therefore, kms drivers don't need to create their own connectors anymore. The old encoder slave ops are now used by the new bridge and connector entities. The of_node member in drm_bridge is accessible only when CONFIG_OF is enabled. The driver anyway only works only when OF is available. Make the driver depend on OF in its Kconfig. Signed-off-by: Archit Taneja <architt@codeaurora.org>
| * drm/i2c/ch7006: Use helper to turn off CRTCLukas Wunner2016-06-241-7/+2
| | | | | | | | | | | | | | | | | | | | | | Use shiny new drm_crtc_force_disable() instead of open coding the same. No functional change intended. Cc: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Lukas Wunner <lukas@wunner.de> Reviewed-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/ec7d5c06e2a21dfb8f9fc9413d3e6df86d6aa1fb.1465392124.git.lukas@wunner.de
* | drm/i2c: tda998x: Register ASoC hdmi-codec and add audio DT bindingJyri Sarha2016-09-072-3/+211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Register ASoC HDMI codec for audio functionality and adds device tree binding for audio configuration. With the registered HDMI codec the tda998x node can be used like a regular codec node in ASoC card configurations. HDMI audio info-frame and audio stream header is generated by the ASoC HDMI codec. The codec also applies constraints for available sample-rates based on Edid Like Data from the display. The device tree binding document has been updated [1]. Part of this patch has been inspired by Jean Francoise's "drm/i2c: tda998x: Add support of a DT graph of ports"-patch [2]. There may still be some identical lines left from the original patch and some of the ideas have come from there. [1] Documentation/devicetree/bindings/display/bridge/tda998x.txt [2] http://mailman.alsa-project.org/pipermail/alsa-devel/2015-July/095255.html Signed-off-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* | drm/i2c: tda998x: Improve tda998x_configure_audio() audio related pdataJyri Sarha2016-09-071-38/+46
|/ | | | | | | | | | Define struct tda998x_audio_params in include/drm/i2c/tda998x.h and use it in pdata and for tda998x_configure_audio() parameters. Also updates tda998x_write_aif() to take struct hdmi_audio_infoframe * directly as a parameter. Signed-off-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
* Merge drm-fixes into drm-next.Dave Airlie2016-03-141-1/+9
|\ | | | | | | Nouveau wanted this to avoid some worse conflicts when I merge that.
| * drm/i2c: tda998x: Choose between atomic or non atomic dpms helperJyri Sarha2016-03-081-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Choose between atomic or non atomic connector dpms helper. If tda998x is connected to a drm driver that does not support atomic modeset calling drm_atomic_helper_connector_dpms() causes a crash when the connectors atomic state is not initialized. The patch implements a driver specific connector dpms helper that calls drm_atomic_helper_connector_dpms() if driver supports DRIVER_ATOMIC and otherwise it calls the legacy drm_helper_connector_dpms(). Fixes commit 9736e988d328 ("drm/i2c: tda998x: Add support for atomic modesetting"). Signed-off-by: Jyri Sarha <jsarha@ti.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* | drm/i2c/tda998x: removed unnecessary code, mode_fixup is now optional.Carlos Palminha2016-02-111-9/+0
| | | | | | | | | | | | | | | | Removed dummy mode_fixup. Signed-off-by: Carlos Palminha <palminha@synopsys.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1455118167-12178-3-git-send-email-palminha@synopsys.com
* | drm/i2c/sil164: removed unnecessary code, mode_fixup is now optional.Carlos Palminha2016-02-111-9/+0
| | | | | | | | | | | | | | | | Removed dummy mode_fixup. Signed-off-by: Carlos Palminha <palminha@synopsys.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1455118167-12178-2-git-send-email-palminha@synopsys.com
* | ch7006: correctly handling failed allocationInsu Yun2016-02-091-0/+2
|/ | | | | | | | | Since drm_property_create_range can be failed in memory pressure, it needs to be checked and return -ENOMEM. Signed-off-by: Insu Yun <wuninsu@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1454025276-13465-1-git-send-email-wuninsu@gmail.com
* drm: adv7511: it's HPD, not HDPWolfram Sang2016-02-022-17/+17
| | | | | | | | | Fix this typo, consequently used over both files :) Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Archit Taneja <architt@codeaurora.org>
* drm: adv7511: mark ADV7511_REG_EDID_READ_CTRL volatileWolfram Sang2016-02-021-0/+1
| | | | | | | | | This register includes a counter which is decremented by the chip on I2C failures. Also, it is reset when powering down. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Archit Taneja <architt@codeaurora.org>
* drm: adv7511: really enable interrupts for EDID detectionWolfram Sang2016-02-021-8/+17
| | | | | | | | | | | The interrupts for EDID_READY or DDC_ERROR were never enabled in this driver, so reading EDID always timed out when chip was powered down and interrupts were used. Fix this and also remove clearing the interrupt flags, they are cleared in POWER_DOWN mode anyhow (unlike the interrupt enable flags) according to docs and my tests. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Tested-by: Archit Taneja <architt@codeaurora.org>
* Merge tag 'topic/drm-misc-2016-01-17' of ↵Dave Airlie2016-01-181-1/+0
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://anongit.freedesktop.org/drm-intel into drm-next Since your main drm-next pull isn't out of the door yet I figured I might as well flush out drm-misc instead of delaying for 4.6. It's really just random stuff all over, biggest thing probably connector_mask tracking from Maarten. * tag 'topic/drm-misc-2016-01-17' of git://anongit.freedesktop.org/drm-intel: (24 commits) drm/fb_cma_helper: Remove implicit call to disable_unused_functions drm/sysfs: use kobj_to_dev() drm/i915: Init power domains early in driver load drm: Do not set connector->encoder in drivers apple-gmux: Add initial documentation drm: move MODULE_PARM_DESC to other file drm/edid: index CEA/HDMI mode tables using the VIC drm/atomic: Remove drm_atomic_connectors_for_crtc. drm/i915: Update connector_mask during readout, v2. drm: Remove opencoded drm_gem_object_release_handle() drm: Do not set outparam on error during GEM handle allocation drm/docs: more leftovers from the big vtable documentation pile drm/atomic-helper: Reject legacy flips on a disabled pipe drm/atomic: add connector mask to drm_crtc_state. drm/tegra: Use __drm_atomic_helper_reset_connector for subclassing connector state, v2. drm/atomic: Add __drm_atomic_helper_connector_reset, v2. drm/i915: Set connector_state->connector using the helper. drm: Use a normal idr allocation for the obj->name drm: Only bump object-reference count when adding first handle drm: Balance error path for GEM handle allocation ...
| * drm: Do not set connector->encoder in driversThierry Reding2016-01-131-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An encoder is associated with a connector by the DRM core as a result of setting up a configuration. Drivers using the atomic or legacy helpers should never set up this link, even if it is a static one. While at it, try to catch this kind of error in the future by adding a WARN_ON() in drm_mode_connector_attach_encoder(). Note that this doesn't cover all the cases, since drivers could set this up after attaching. Drivers that use the atomic helpers will get a warning later on, though, so hopefully the two combined cover enough to help people avoid this in the future. Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Philipp Zabel <p.zabel@pengutronix.de> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Liviu Dudau <Liviu.Dudau@arm.com> Cc: Mark yao <mark.yao@rock-chips.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1447694393-24700-1-git-send-email-thierry.reding@gmail.com
* | Merge branch 'drm-tda998x-devel' of ↵Dave Airlie2015-12-231-2/+10
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next These changes from Liviu add support for atomic mode setting, add the TMDS clock limitation according to the device, and ensure that we correctly clean up in the unbind function. * 'drm-tda998x-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: drm/i2c: tda998x: Add support for atomic modesetting drm/i2c: tda998x: increase the supported dotclock frequency to 165MHz for TDA19988 drm/i2c: tda998x: unregister the connector in the unbind function
| * drm/i2c: tda998x: Add support for atomic modesettingLiviu Dudau (ARM)2015-12-031-1/+5
| | | | | | | | | | | | | | | | | | | | When used with a DRIVER_ATOMIC enabled CRTC driver, the tda998x will cause crashes due to missing atomic operations. Fill the drm_connector_funcs struct with the atomic versions of the required functions and add the atomic modeset specific callbacks. Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: increase the supported dotclock frequency to 165MHz for ↵Liviu Dudau (ARM)2015-12-031-1/+4
| | | | | | | | | | | | | | | | | | | | TDA19988 Spec sheet states that the TDA19988 supports up to 165MHz dotclock speeds. Without this change modes higher than 1080p are un-attainable. Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: unregister the connector in the unbind functionLiviu Dudau (ARM)2015-12-031-0/+1
| | | | | | | | | | | | | | | | | | | | tda998x uses drm_connector_register() in the .bind function that needs to be balanced with a drm_connector_unregister() in the .unbind. Otherwise dangling sysfs entries are left behind and future rebinds will fail. Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | drm/i2c/sil164: Constify function pointer structsVille Syrjälä2015-12-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moves a bunch of junk to .rodata from .data. drivers/gpu/drm/i2c/sil164.ko: -.text 1660 +.text 1656 -.rodata 56 +.rodata 104 -.data 212 +.data 164 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Link: http://patchwork.freedesktop.org/patch/msgid/1450178476-26284-21-git-send-email-boris.brezillon@free-electrons.com Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
* | drm/i2c/adv7511: Constify function pointer structsVille Syrjälä2015-12-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moves a bunch of junk to .rodata from .data. drivers/gpu/drm/i2c/adv7511.ko: -.rodata 1368 +.rodata 1416 -.data 164 +.data 116 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Link: http://patchwork.freedesktop.org/patch/msgid/1450178476-26284-20-git-send-email-boris.brezillon@free-electrons.com Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
* | drm/i2c/ch7006: Constify function pointer structsVille Syrjälä2015-12-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moves a bunch of junk to .rodata from .data. drivers/gpu/drm/i2c/ch7006.ko: -.text 5752 +.text 5760 -.rodata 6608 +.rodata 6656 -.data 216 +.data 168 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Link: http://patchwork.freedesktop.org/patch/msgid/1450178476-26284-17-git-send-email-boris.brezillon@free-electrons.com Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
* | drm: Pass 'name' to drm_encoder_init()Ville Syrjälä2015-12-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Done with coccinelle for the most part. However, it thinks '...' is part of the semantic patch, so I put an 'int DOTDOTDOT' placeholder in its place and got rid of it with sed afterwards. @@ identifier dev, encoder, funcs; @@ int drm_encoder_init(struct drm_device *dev, struct drm_encoder *encoder, const struct drm_encoder_funcs *funcs, int encoder_type + ,const char *name, int DOTDOTDOT ) { ... } @@ identifier dev, encoder, funcs; @@ int drm_encoder_init(struct drm_device *dev, struct drm_encoder *encoder, const struct drm_encoder_funcs *funcs, int encoder_type + ,const char *name, int DOTDOTDOT ); @@ expression E1, E2, E3, E4; @@ drm_encoder_init(E1, E2, E3, E4 + ,NULL ) v2: Add ', or NULL...' to @name kernel doc (Jani) Annotate the function with __printf() attribute (Jani) Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1449670818-2966-1-git-send-email-ville.syrjala@linux.intel.com
* | drm/i2c/tda998x: Remove unused save/restore drm encoder helpers.Rodrigo Vivi2015-12-081-14/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | save/restore have been removed from drm_encoder_helper_funcs by 'commit 79f13ad5d8e0 ("drm: Move encoder->save/restore into nouveau")' But this module was still defining it with empty content causing compilation fails: drivers/gpu/drm/i2c/tda998x_drv.c:1354:10: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] .save = tda998x_encoder_save, drivers/gpu/drm/i2c/tda998x_drv.c:1355:2: error: unknown field 'restore' specified in initializer .restore = tda998x_encoder_restore, Cc: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1449513306-17309-1-git-send-email-rodrigo.vivi@intel.com
* | Merge branch 'drm-tda998x-devel' of ↵Dave Airlie2015-10-151-302/+185
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next * removes the now unused DRM slave encoder support, which all users have migrated away from, allowing us to simplify the code. * ensure all pending interrupts are processed together, rather than needing the handler to be re-entered each time. * use more HDMI helpers to setup the info frames. * fix EDID read handling by ensuring that we always wait the specified time before attempting to read the EDID, no matter where the EDID read request came from. * 'drm-tda998x-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: drm/i2c: tda998x: clean up after struct tda998x_priv2 removal drm/i2c: tda998x: kill struct tda998x_priv2 drm/i2c: tda998x: move connector into struct tda998x_priv drm/i2c: tda998x: remove encoder pointer drm/i2c: tda998x: remove DRM slave encoder support drm/i2c: tda998x: use more HDMI helpers drm/i2c: tda998x: handle all outstanding interrupts drm/i2c: tda998x: convert to u8/u16/u32 types drm/i2c: tda998x: re-implement "Fix EDID read timeout on HDMI connect" drm/i2c: tda998x: report whether we actually handled the IRQ drm/i2c: tda998x: remove useless NULL checks
| * drm/i2c: tda998x: clean up after struct tda998x_priv2 removalRussell King2015-09-291-58/+22
| | | | | | | | | | | | | | | | We can now kill a number of glue functions which were sitting between the common tda998x code and the drm encoder/connector methods. This results in slightly cleaner code. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: kill struct tda998x_priv2Russell King2015-09-291-42/+38
| | | | | | | | | | | | | | Kill the redundant tda998x_priv2 structure now that its only member is the struct tda998x_priv. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: move connector into struct tda998x_privRussell King2015-09-291-11/+11
| | | | | | | | | | | | | | Move the DRM connector structure into struct tda998x_priv from the old struct tda998x_priv2. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: remove encoder pointerRussell King2015-09-291-13/+12
| | | | | | | | | | | | | | Remove the encoder pointer from struct tda998x_priv, moving the encoder itself from struct tda998x_priv2 here. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: remove DRM slave encoder supportRussell King2015-09-291-138/+8
| | | | | | | | | | | | | | Remove the DRM slave encoder compatibility from the TDA998x driver. We now use the component helpers to manage the binding of DRM sub-drivers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: use more HDMI helpersRussell King2015-09-151-40/+31
| | | | | | | | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: handle all outstanding interruptsRussell King2015-09-151-5/+11
| | | | | | | | | | | | | | | | | | As reading the interrupt registers clears the outstanding interrupts, we must process all received interrupts to avoid dropping any. Rearrange the code to achieve this, and properly check for a HPD interrupt from the CEC_RXSHPDINT register. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: convert to u8/u16/u32 typesRussell King2015-09-151-37/+37
| | | | | | | | | | | | | | | | C99 types are against the style of the Linux kernel. Convert to using Linus-friendly types. See https://lwn.net/Articles/113367/ for more information. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: re-implement "Fix EDID read timeout on HDMI connect"Russell King2015-09-151-12/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 6833d26ef823 ("drm: tda998x: Fix EDID read timeout on HDMI connect") used a weak scheme to try and delay reading EDID on a HDMI connect event. It is weak because delaying the notification of a hotplug event does not stop userspace from trying to read the EDID within the 100ms delay. The solution provided here solves this issue: * When a HDMI connection event is detected, mark a blocking flag for EDID reads, and start a timer for the delay. * If an EDID read is attempted, and the blocking flag is set, wait for the blocking flag to clear. * When the timer expires, clear the blocking flag and wake any thread waiting for the EDID read. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: report whether we actually handled the IRQRussell King2015-09-151-1/+4
| | | | | | | | | | | | | | | | | | | | | | Rather than always reporting that the interrupt was handled, we should report whether we did handle the interrupt. Arrange to report IRQ_NONE for cases where we found nothing to do. This allows us to (eventually) recover from stuck-IRQ problems, rather than causing the kernel to solidly lock up. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| * drm/i2c: tda998x: remove useless NULL checksRussell King2015-09-151-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | There is no way 'priv' can be NULL in tda998x_irq_thread() - this can only happen if request_threaded_irq() was passed a NULL priv pointer, and we would have crashed long before then if that was the case. We also always ensure that priv->encoder is correctly setup, which must have been initialised prior to the interrupt being claimed, so we can remove this check as well. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | Merge tag 'v4.3-rc2' into topic/drm-miscDaniel Vetter2015-09-241-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backmerge Linux 4.3-rc2 because of conflicts in the dp helper code between bugfixes and new code. Just adjacent lines really. On top of that there's a silent conflict in the new fsl-dcu driver merged into 4.3 and commit 844f9111f6f54f88eb2f0fac121b82ce77193866 Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Date: Wed Sep 2 10:42:40 2015 +0200 drm/atomic: Make prepare_fb/cleanup_fb only take state, v3. which Thierry Reding spotted and provided a fixup for. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
| | \
| | \
| *-. \ Merge remote-tracking branches 'asoc/topic/rcar', 'asoc/topic/reg-default', ↵Mark Brown2015-08-301-1/+1
| |\ \ \ | | |_|/ | |/| | | | | | 'asoc/topic/rl6231', 'asoc/topic/rockchip' and 'asoc/topic/rt286' into asoc-next
| | | * regmap: Use reg_sequence for multi_reg_write / register_patchNariman Poushin2015-07-161-1/+1
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Separate the functionality using sequences of register writes from the functions that take register defaults. This change renames the arguments in order to support the extension of reg_sequence to take an optional delay to be applied after any given register in a sequence is written. This avoids adding an int to all register defaults, which could substantially increase memory usage for regmaps with large default tables. This also updates all the clients of multi_reg_write/register_patch. Signed-off-by: Nariman Poushin <nariman@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* | | drm/i2c/ch7006: Constify ch7006_tv_norms[] and ch7006_modes[]Ville Syrjälä2015-09-082-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | drivers/gpu/drm/i2c/ch7006.ko: -.text 5913 +.text 5897 -.rodata 664 +.rodata 7256 -.data 6992 +.data 416 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
OpenPOWER on IntegriCloud