Skip to contentSkip to conversation

Audio support for adv7511 hdmi bridge

PATCH RESEND Superseded John Stultz 1 participant 3 messages Nov 3, 2016

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

v4 cover Audio support for adv7511 hdmi bridge

Just wanted to resend the adv7511 hdmi bridge audio support for review and consideration for merging.

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 dts changes (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

Cc David Airlie <[email protected]>
Cc Archit Taneja <[email protected]>
Cc Laurent Pinchart <[email protected]>
Cc Wolfram Sang <[email protected]>
Cc Srinivas Kandagatla <[email protected]>
Cc "Ville Syrjälä" <[email protected]>
Cc Boris Brezillon <[email protected]>
Cc Andy Green <[email protected]>
Cc Dave Long <[email protected]>
Cc Guodong Xu <[email protected]>
Cc Zhangfei Gao <[email protected]>
Cc Mark Brown <[email protected]>
Cc Lars-Peter Clausen <[email protected]>
Cc Jose Abreu <[email protected]>
Cc Kuninori Morimoto <[email protected]>

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
#1 lore raw

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

Cc David Airlie <[email protected]>
Cc Archit Taneja <[email protected]>
Cc Laurent Pinchart <[email protected]>
Cc Wolfram Sang <[email protected]>
Cc Srinivas Kandagatla <[email protected]>
Cc "Ville Syrjälä" <[email protected]>
Cc Boris Brezillon <[email protected]>
Cc Andy Green <[email protected]>
Cc Dave Long <[email protected]>
Cc Guodong Xu <[email protected]>
Cc Zhangfei Gao <[email protected]>
Cc Mark Brown <[email protected]>
Cc Lars-Peter Clausen <[email protected]>
Cc Jose Abreu <[email protected]>
Cc Kuninori Morimoto <[email protected]>

---
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
index d2b0499..2fed567 100644
@@ -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
index 9019327..5ba6755 100644
@@ -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
index 161c923..992d76c 100644
@@ -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
index 8ed3906..8dba729 100644
@@ -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
#2 lore raw

PATCH RESEND v4 2/2 drm/bridge: adv7511: Enable the audio data and clock pads on adv7533

In reply to John Stultz

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.

Cc David Airlie <[email protected]>
Cc Archit Taneja <[email protected]>
Cc Laurent Pinchart <[email protected]>
Cc Wolfram Sang <[email protected]>
Cc Srinivas Kandagatla <[email protected]>
Cc "Ville Syrjälä" <[email protected]>
Cc Boris Brezillon <[email protected]>
Cc Andy Green <[email protected]>
Cc Dave Long <[email protected]>
Cc Guodong Xu <[email protected]>
Cc Zhangfei Gao <[email protected]>
Cc Mark Brown <[email protected]>
Cc Lars-Peter Clausen <[email protected]>
Cc Jose Abreu <[email protected]>
Cc Kuninori Morimoto <[email protected]>
---
 drivers/gpu/drm/bridge/adv7511/adv7533.c | 1 +
 1 file changed, 1 insertion(+)
drivers/gpu/drm/bridge/adv7511/adv7533.c +1 -0
index d7f7b7c..8b21037 100644
@@ -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