This series represents development work collected over the last six months to improve the TDA998x driver, particularly for the audio side. These patches can be found in my "drm-tda998x-devel" branch at git://git.armlinux.org.uk/~rmk/linux-arm.git - Introduce an audio_settings structure so we can store the derived register settings independently of the audio parameters. - Add support for the different I2S flavours. - Improve the calculation of the audio clock divisor, the old code seemed to prevent combinations of video mode and audio sample rate from working. Document what we don't know, what assumptions we are making, what has been found through experimentation, and what we are actually doing. - Add calculation of the CTS n and k values depending on the bit clock to sample rate ratio (bclk_ratio) - we assume a bclk_ratio appropriate for the bus format that gives us the values we are using prior to this change to maintain compatibility. - Move the "ena_ap" register value into the audio_settings structure. - Eliminate the audio port array and repetitive searching of the array, instead looking up the "ena_ap" value by format - the DT binding only supports one setting per format, so old approach was not a good design. - There is no need to set the two fields of the AIP_CLKSEL register independently of each other, so just write the register once while setting up audio. - Deal with the format specific audio routing configuration when the audio settings are configured, rather than when programming the TDA998x, which means we can do all the validation at configuration time, rather than spreading it into other paths like modeset, where failures can't be reported. - Since tda998x_configure_audio() is called from paths where failure is not an option, and we have eliminated the configuration dependent failures, we can make this functions return type void. This allows simplification of tda998x_audio_hw_params() within the mutex protected region. - We no longer need to store the full audio params within the audio settings structure, so eliminate it, only storing in the audio settings structure what we need to actually program the hardware. - Add support for pixel repeated modes, tested on a Panasonic TV that supports these formats. - Add bridge timing specifications for TDA9989 and TDA19988 devices, although we have no current users of this data it may be useful to complete the information passed from the bridge driver, especially where the pixel clock edge needs configuration. - Add support for selecting the appropriate RGB quantisation range depending on the sink capabilities, and avoid sending full range RGB when the sink only supports limited range RGB for the mode. We do this by enabling the TDA998x's colour scaling matrix and applying the appropriate constants. drivers/gpu/drm/i2c/tda998x_drv.c | 459 ++++++++++++++++++++++++++------------ 1 file changed, 311 insertions(+), 148 deletions(-) -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel