drm/bridge: adv7511: Add Audio support.
Subsystems (3)
PATCH RESEND v4 1/2 drm/bridge: adv7511: Add Audio support.
This patch adds support to Audio for both adv7511 and adv7533 bridge chips.
This patch was originally from [1] by Lars-Peter Clausen <[email protected]> and was adapted by Archit Taneja <[email protected]> and Srinivas Kandagatla <[email protected]>.
Then I heavily reworked it to use the hdmi-codec driver. And also folded in some audio packet initialization done by Andy Green <[email protected]>. So credit to them, but blame to me.
[1] https://github.com/analogdevicesinc/linux/blob/xcomm_zynq/drivers/gpu/drm/i2c/adv7511_audio.c
---
v4:
* Kconfig tweaks suggested by Lars-Peter Clausen
v3:
* Allowed audio support to be configured in or out, as suggested by Laurent
* Minor cleanups suggested by Laurent
* Folded in Andy's audio packet initialization patch, as suggested by Archit
--- drivers/gpu/drm/bridge/adv7511/Kconfig | 8 + drivers/gpu/drm/bridge/adv7511/Makefile | 1 + drivers/gpu/drm/bridge/adv7511/adv7511.h | 16 ++ drivers/gpu/drm/bridge/adv7511/adv7511_audio.c | 213 +++++++++++++++++++++++++ drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 4 + 5 files changed, 242 insertions(+) create mode 100644 drivers/gpu/drm/bridge/adv7511/adv7511_audio.c
drivers/gpu/drm/bridge/adv7511/Kconfig +8 -0
@@ -6,6 +6,14 @@ config DRM_I2C_ADV7511 help Support for the Analog Device ADV7511(W) and ADV7513 HDMI encoders. +config DRM_I2C_ADV7511_AUDIO + bool "ADV7511 HDMI Audio driver" + depends on DRM_I2C_ADV7511 && SND_SOC + select SND_SOC_HDMI_CODEC + help + Support the ADV7511 HDMI Audio interface. This is used in + conjunction with the AV7511 HDMI driver. + config DRM_I2C_ADV7533 bool "ADV7533 encoder" depends on DRM_I2C_ADV7511
drivers/gpu/drm/bridge/adv7511/Makefile +1 -0
@@ -1,3 +1,4 @@ adv7511-y := adv7511_drv.o +adv7511-$(CONFIG_DRM_I2C_ADV7511_AUDIO) += adv7511_audio.o adv7511-$(CONFIG_DRM_I2C_ADV7533) += adv7533.o obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511.o
drivers/gpu/drm/bridge/adv7511/adv7511.h +16 -0
@@ -309,6 +309,8 @@ struct adv7511 {struct drm_display_mode curr_mode;unsigned int f_tmds; +unsigned int f_audio; +unsigned int audio_source;unsigned int current_edid_segment;uint8_t edid_buf[256 ];
@@ -334,6 +336,7 @@ struct adv7511 {bool use_timing_gen;enum adv7511_type type; +struct platform_device *audio_pdev; };#ifdef CONFIG_DRM_I2C_ADV7533
@@ -389,4 +392,17 @@ static inline int adv7533_parse_dt(struct device_node *np, struct adv7511 *adv) }#endif +#ifdef CONFIG_DRM_I2C_ADV7511_AUDIO +int adv7511_audio_init (struct device *dev,struct adv7511 *adv7511); +void adv7511_audio_exit (struct adv7511 *adv7511); +#else /*CONFIG_DRM_I2C_ADV7511_AUDIO */ +static inline int adv7511_audio_init (struct device *dev,struct adv7511 *adv7511) +{ +return 0 ; +} +static inline void adv7511_audio_exit (struct adv7511 *adv7511) +{ +} +#endif /* CONFIG_DRM_I2C_ADV7511_AUDIO */ +#endif /* __DRM_I2C_ADV7511_H__ */
drivers/gpu/drm/bridge/adv7511/adv7511_audio.c new file +213 -0
213 lines not on this page · raw message
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +4 -0
@@ -1037,6 +1037,8 @@ static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id *id) goto err_unregister_cec; } +adv7511_audio_init (dev, adv7511); +return 0 ; err_unregister_cec:
@@ -1058,6 +1060,8 @@ static int adv7511_remove(struct i2c_client *i2c)drm_bridge_remove (&adv7511->bridge); +adv7511_audio_exit (adv7511); +i2c_unregister_device (adv7511->i2c_edid);kfree (adv7511->edid);
Signature · 6 lines
2.7.4 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
PATCH RESEND v4 2/2 drm/bridge: adv7511: Enable the audio data and clock pads on adv7533
From: Srinivas Kandagatla <[email protected]>
This patch enables the Audio Data and Clock pads to the adv7533 bridge. Without this patch audio can not be played.
--- drivers/gpu/drm/bridge/adv7511/adv7533.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/bridge/adv7511/adv7533.c +1 -0
@@ -29,6 +29,7 @@ static const struct reg_sequence adv7533_cec_fixed_registers[] = { { 0x17, 0xd0 }, { 0x24, 0x20 }, { 0x57, 0x11 }, + { 0x05, 0xc8 }, }; static const struct regmap_config adv7533_cec_regmap_config = {
Signature · 6 lines
2.7.4 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel