Age | Commit message (Collapse) | Author | Files | Lines |
|
mode fixes for tda998x.
* 'tda998x-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox:
drm/i2c: tda998x: add some basic mode validation
drm/i2c: tda998x: faster polling for edid
drm/i2c: tda998x: move drm_i2c_encoder_destroy call
|
|
The TDA998x can't handle modes with clocks above 150MHz, or resolutions
larger than 8192x2048.
Signed-off-by: Russell King <[email protected]>
|
|
One of Jean-Francois patches changed the EDID polling to once every
10ms for 10 interations, whereas the original code did 1ms for 100
interations. This appears to cause boot-time detection to take
noticably longer. Revert this change.
Acked-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
Currently tda998x_encoder_destroy() calls cec_write() and reg_clear(),
as part of the release procedure. Such calls need to access the I2C bus
and therefore, we need to call them before drm_i2c_encoder_destroy()
which unregisters the I2C device.
This commit moves the latter so it's done afterwards.
Signed-off-by: Guido Martínez <[email protected]>
Signed-off-by: Ezequiel García <[email protected]>
Cc: <[email protected]> #v3.9+
Signed-off-by: Russell King <[email protected]>
|
|
This is C standard hair-splitting, but afaict
- sum will be promoted to signed int in computation since
uint8_t fits
- signed overflow is undefined.
No we need to add up an awful lot of bytes to actually make it
overflow. But I guess the real risk is gcc spotting this and going
bananas. Fix this by simply using unsigned in to force all computations
to use the well-defined unsigned behaviour.
Spotted by coverity.
v2: Simplify the entire computation as suggested by Jean.
Cc: Russell King <[email protected]>
Cc: Rob Clark <[email protected]>
Cc: Jean-Francois Moine <[email protected]>
Reviewed-by: David Herrmann <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
|
|
Rather than using a mixture of the parent DRM device and the component
device for messages from the driver, consistently use the component
device for all messages.
Signed-off-by: Russell King <[email protected]>
|
|
According to some tests on the Cubox (Marvell Armada 510 + TDA19988),
the S/PDIF input asks for a greater audio clock divider.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch reduces the number of I2C exchanges by setting many bits in
one write and removing a useless write.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
ca_i2s is only ever written to, but never read, so let's get rid of it.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch adds a definition of the values of the MUX_AP register and
simplifies the macro's defining the fields of the AIP_CLKSEL register.
This makes the format specific audio init sequence more readable.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch adds the optional treatment of the tda998x IRQ.
The interrupt function is used to know the display connection status
without polling and to speedup reading the EDID.
The IRQ number and trigger type are defined in the i2c client either
by platform data or in the DT.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
There is no need to enable/disable EDID read IRQ at each EDID block
read. This patch enables the IRQ at init time.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch adds DT support to the tda998x.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch takes care of the write-only registers of the tda998x.
The registers SOFTRESET, TBG_CNTRL_0 and TBG_CNTRL_1 have all bits
cleared after reset, so, they may be fully re-written.
The register MAT_CONTRL is set to
MAT_CONTRL_MAT_BP | MAT_CONTRL_MAT_SC(1)
after reset, so, it may be fully set again to this value.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch prevents the system to be freezed at audio startup time,
replacing mdelay by msleep.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
On probe, a message giving the TDA chip version seems to come from the
DRM driver:
armada-drm armada-510-drm: found TDA19988
This patch changes the originator of the message to the TDA driver:
tda998x 0-0070: found TDA19988
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch:
- replaces ARRAY_SIZE() by sizeof() when a number of bytes is needed,
- adds a linefeed in an error message and
- removes an useless variable setting.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This is a nicer way, and results in proper return codes should the
read of the MSB version register fail.
Signed-off-by: Russell King <[email protected]>
|
|
This patch adds more error checking inn I2C I/O functions.
In case of I/O error, this permits to avoid writing in bad controller
pages, a bad chipset detection or looping when getting the EDID.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch simplifies the i2c read/write functions and permits them to
be easily called in more contexts.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch sets the frequency as 'not indicated' instead of '48kHz'
and uses the asound values in the channel status definition.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
The picture aspect setting was zero, which is reserved.
A setting of Same As Picture makes more sense.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch replaces hard coded values by hdmi constants.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
Commit 6ae668cc19e8 (drm/i2c: tda998x: check the CEC device creation)
introduced a memory leak in the error path of tda998x_encoder_init
Picked up by the nightly Coverity scan. CID 1174076
Signed-off-by: Dave Jones <[email protected]>
Acked-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch fixes the ENABLE_SPACE register, the value of which was
inverted.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
The predivider division factor of the register PLL_SERIAL_2 is in the
range 0..3, the value 0 being used for a division by 1.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch forces the page register to be set on the first I/O operation.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
The cec i2c device is created in tda998x_encoder_init() when the DRM
driver starts.
This patch frees it when the DRM driver is unloaded.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
This patch checks if the CEC device is well created at intialization
time.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
The AIF has an uninitialized byte. This patch clears the whole buffer
before filling it.
Tested-by: Russell King <[email protected]>
Acked-by: Russell King <[email protected]>
Signed-off-by: Jean-Francois Moine <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
Tested-by: Sebastian Hesselbarth <[email protected]>
Reviewed-by: Rob Clark <[email protected]>
Signed-off-by: Russell King <[email protected]>
|
|
Fix a bug that was introduced in commit c4c11dd160a8 ("drm/i2c: tda998x:
add video and audio input configuration") when Sebastian cleaned up my
original patch. Without this being fixed, audio is muted when the
display is turned off, never to be re-enabled.
Signed-off-by: Russell King <[email protected]>
Cc: Sebastian Hesselbarth <[email protected]>
Cc: Darren Etheridge <[email protected]>
Cc: Dave Airlie <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
|
|
Suppress warning of unused-variables by adding a BUG()+return for invalid
audio-formats.
Cc: Rob Clark <[email protected]>
Signed-off-by: David Herrmann <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
Some LCD controller cannot provide valid VESA style sync, i.e. coincident
HS/VS edges. First, this patch adds hskew passed from the adjusted_mode to
reference pixel calculation to allow those controllers to add an offset
relative to the expected reference pixel.
Signed-off-by: Darren Etheridge <[email protected]>
Signed-off-by: Sebastian Hesselbarth <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
This fixes the wrong sync generation and sync calculation of TDA998x
for HS/VS-based sync detection.
Signed-off-by: Sebastian Hesselbarth <[email protected]>
Tested-by: Darren Etheridge <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
This patch adds tda998x specific parameters to allow it to be configured
for different boards using it. Also, this implements rudimentary audio
support for S/PDIF attached controllers.
Signed-off-by: Russell King <[email protected]>
Signed-off-by: Sebastian Hesselbarth <[email protected]>
Tested-by: Darren Etheridge <[email protected]>
Tested-by: Russell King <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
The video-input-port (VIP) is highly configurable. This prepares
current driver to allow to configure VIP configuration, as some
boards connect lcd controller and TDA998x "pin-swapped" and depend
on VIP to swap the pins by register configuration.
Signed-off-by: Russell King <[email protected]>
Tested-by: Darren Etheridge <[email protected]>
Tested-by: Sebastian Hesselbarth <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
The npix/nline registers are supposed to be programmed with the total
number of pixels/lines, not the displayed pixels/lines, and not minus
one either.
Signed-off-by: Russell King <[email protected]>
Tested-by: Darren Etheridge <[email protected]>
Tested-by: Sebastian Hesselbarth <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
When switching between various drivers for this device, it's possible
that some critical registers are left containing values which affect
the device operation. One such case encountered is the VIP output
mux register. This defaults to 0x24 on powerup, but other drivers may
set this to 0x12. This results in incorrect colours.
Fix this by ensuring that the register is always set to the power on
default setting.
Signed-off-by: Russell King <[email protected]>
Tested-by: Darren Etheridge <[email protected]>
Tested-by: Sebastian Hesselbarth <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
TDA19988 devices need their RAM enabled in order to read EDID
information. Add support for this.
Signed-off-by: Russell King <[email protected]>
Signed-off-by: Rob Clark <[email protected]>
Tested-by: Darren Etheridge <[email protected]>
Tested-by: Sebastian Hesselbarth <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
Driver for the NXP TDA998X i2c hdmi encoder slave.
v1: original
v2: fix npix/nline programming
v3: add Kconfig, fix dup'd MODULE_DESCRIPTION
Signed-off-by: Rob Clark <[email protected]>
Reviewed-by: Daniel Vetter <[email protected]>
Tested-by: Koen Kooi <[email protected]>
|
|
Move this out of nouveau directory. As we start to add more encoder
slaves used by other drivers, it makes sense to put the Kconfig bits in
one place.
Signed-off-by: Rob Clark <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
With refcounting we need to adjust framebuffer refcounts at each
callsite - much easier to do if they all call the same little helper
function.
Reviewed-by: Rob Clark <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
|
|
Signed-off-by: Rob Clark <[email protected]>
|
|
Pull drm merge (part 1) from Dave Airlie:
"So first of all my tree and uapi stuff has a conflict mess, its my
fault as the nouveau stuff didn't hit -next as were trying to rebase
regressions out of it before we merged.
Highlights:
- SH mobile modesetting driver and associated helpers
- some DRM core documentation
- i915 modesetting rework, haswell hdmi, haswell and vlv fixes, write
combined pte writing, ilk rc6 support,
- nouveau: major driver rework into a hw core driver, makes features
like SLI a lot saner to implement,
- psb: add eDP/DP support for Cedarview
- radeon: 2 layer page tables, async VM pte updates, better PLL
selection for > 2 screens, better ACPI interactions
The rest is general grab bag of fixes.
So why part 1? well I have the exynos pull req which came in a bit
late but was waiting for me to do something they shouldn't have and it
looks fairly safe, and David Howells has some more header cleanups
he'd like me to pull, that seem like a good idea, but I'd like to get
this merge out of the way so -next dosen't get blocked."
Tons of conflicts mostly due to silly include line changes, but mostly
mindless. A few other small semantic conflicts too, noted from Dave's
pre-merged branch.
* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (447 commits)
drm/nv98/crypt: fix fuc build with latest envyas
drm/nouveau/devinit: fixup various issues with subdev ctor/init ordering
drm/nv41/vm: fix and enable use of "real" pciegart
drm/nv44/vm: fix and enable use of "real" pciegart
drm/nv04/dmaobj: fixup vm target handling in preparation for nv4x pcie
drm/nouveau: store supported dma mask in vmmgr
drm/nvc0/ibus: initial implementation of subdev
drm/nouveau/therm: add support for fan-control modes
drm/nouveau/hwmon: rename pwm0* to pmw1* to follow hwmon's rules
drm/nouveau/therm: calculate the pwm divisor on nv50+
drm/nouveau/fan: rewrite the fan tachometer driver to get more precision, faster
drm/nouveau/therm: move thermal-related functions to the therm subdev
drm/nouveau/bios: parse the pwm divisor from the perf table
drm/nouveau/therm: use the EXTDEV table to detect i2c monitoring devices
drm/nouveau/therm: rework thermal table parsing
drm/nouveau/gpio: expose the PWM/TOGGLE parameter found in the gpio vbios table
drm/nouveau: fix pm initialization order
drm/nouveau/bios: check that fixed tvdac gpio data is valid before using it
drm/nouveau: log channel debug/error messages from client object rather than drm client
drm/nouveau: have drm debugging macros build on top of core macros
...
|
|
Convert #include "..." to #include <path/...> in drivers/gpu/.
Signed-off-by: David Howells <[email protected]>
Acked-by: Dave Airlie <[email protected]>
Acked-by: Arnd Bergmann <[email protected]>
Acked-by: Thomas Gleixner <[email protected]>
Acked-by: Paul E. McKenney <[email protected]>
Acked-by: Dave Jones <[email protected]>
|
|
The I2C specific suspend and resume functions have been deprecated and
printing a warning on boot for over a year, dev_pm_ops should be used
instead so convert to that.
Also remove the suspend function since all it does is log.
Signed-off-by: Mark Brown <[email protected]>
Acked-by: Francisco Jerez <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
The passed mode must not be modified by the operation, make it const.
Signed-off-by: Laurent Pinchart <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
Creating a range property is a common pattern, so create
a convenience function for this and use it where appropriate.
Signed-off-by: Sascha Hauer <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
|
|
So that we don't get build failures once the implicit module.h
presence is removed.
Signed-off-by: Paul Gortmaker <[email protected]>
|