Audio support for adv7511 hdmi bridge
Subsystems (3)
v4 cover Audio support for adv7511 hdmi bridge
Just wanted to resend the adv7511 hdmi bridge audio support again for review and consideration for merging (am I missing anyone from the CC list here, or submitting this improperly?)
I've taken the core audio work done by Lars-Peter Clausen, and adapted by Srinivas Kandagatla and Archit Taneja, and tried to rework it to use the hdmi-codec sound driver.
This patchset, along with the i2s driver and dts changes allows HDMI audio to work on the HiKey board.
As suggested, I do intend to rework the hikey dts (not submitted here) to use the of graph simple-card, instead of the simple-card method I currently use, but I don't believe that that change would effect these patches.
I'd really appreciate any thoughts or feedback.
thanks
-john
New in v4:
* Kconfig tweaks suggested by Lars-Peter Clausen
John Stultz (1):
drm/bridge: adv7511: Add Audio support.
Srinivas Kandagatla (1):
drm/bridge: adv7511: Enable the audio data and clock pads on adv7533
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 + drivers/gpu/drm/bridge/adv7511/adv7533.c | 1 + 6 files changed, 243 insertions(+) create mode 100644 drivers/gpu/drm/bridge/adv7511/adv7511_audio.c
Signature · 6 lines
2.7.4 _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
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
In reply to John StultzFrom: 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