2019-09-04 17:01:23 +00:00
|
|
|
From e1b0a468d01290237f0fd33a91fc32ec204b4fb0 Mon Sep 17 00:00:00 2001
|
2019-08-09 17:50:30 +00:00
|
|
|
From: James Hughes <james.hughes@raspberrypi.org>
|
|
|
|
Date: Tue, 16 Jul 2019 12:18:21 +0100
|
2019-09-04 17:01:23 +00:00
|
|
|
Subject: [PATCH 746/782] Add HDMI1 facility to the driver.
|
2019-08-09 17:50:30 +00:00
|
|
|
|
|
|
|
For generic ALSA, all you need is the bcm2835.h change, but
|
|
|
|
have also added structures for IEC958 HDMI. Not sure how to
|
|
|
|
test those.
|
|
|
|
---
|
|
|
|
.../vc04_services/bcm2835-audio/bcm2835.c | 29 ++++++++++++++++---
|
|
|
|
.../vc04_services/bcm2835-audio/bcm2835.h | 4 ++-
|
|
|
|
2 files changed, 28 insertions(+), 5 deletions(-)
|
|
|
|
|
|
|
|
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
|
|
|
|
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
|
|
|
|
@@ -79,7 +79,11 @@ static int bcm2835_audio_alsa_newpcm(str
|
|
|
|
if (err)
|
|
|
|
return err;
|
|
|
|
|
|
|
|
- err = snd_bcm2835_new_pcm(chip, "bcm2835 IEC958/HDMI", 1, 0, 1, true);
|
|
|
|
+ err = snd_bcm2835_new_pcm(chip, "bcm2835 IEC958/HDMI", 1, AUDIO_DEST_HDMI0, 1, true);
|
|
|
|
+ if (err)
|
|
|
|
+ return err;
|
|
|
|
+
|
|
|
|
+ err = snd_bcm2835_new_pcm(chip, "bcm2835 IEC958/HDMI1", 2, AUDIO_DEST_HDMI1, 1, true);
|
|
|
|
if (err)
|
|
|
|
return err;
|
|
|
|
|
|
|
|
@@ -106,7 +110,7 @@ static struct bcm2835_audio_driver bcm28
|
|
|
|
.newctl = snd_bcm2835_new_ctl,
|
|
|
|
};
|
|
|
|
|
|
|
|
-static struct bcm2835_audio_driver bcm2835_audio_hdmi = {
|
|
|
|
+static struct bcm2835_audio_driver bcm2835_audio_hdmi0 = {
|
|
|
|
.driver = {
|
|
|
|
.name = "bcm2835_hdmi",
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
@@ -116,7 +120,20 @@ static struct bcm2835_audio_driver bcm28
|
|
|
|
.minchannels = 1,
|
|
|
|
.newpcm = bcm2835_audio_simple_newpcm,
|
|
|
|
.newctl = snd_bcm2835_new_hdmi_ctl,
|
|
|
|
- .route = AUDIO_DEST_HDMI
|
|
|
|
+ .route = AUDIO_DEST_HDMI0
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct bcm2835_audio_driver bcm2835_audio_hdmi1 = {
|
|
|
|
+ .driver = {
|
|
|
|
+ .name = "bcm2835_hdmi",
|
|
|
|
+ .owner = THIS_MODULE,
|
|
|
|
+ },
|
|
|
|
+ .shortname = "bcm2835 HDMI 1",
|
|
|
|
+ .longname = "bcm2835 HDMI 1",
|
|
|
|
+ .minchannels = 1,
|
|
|
|
+ .newpcm = bcm2835_audio_simple_newpcm,
|
|
|
|
+ .newctl = snd_bcm2835_new_hdmi_ctl,
|
|
|
|
+ .route = AUDIO_DEST_HDMI1
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct bcm2835_audio_driver bcm2835_audio_headphones = {
|
|
|
|
@@ -143,7 +160,11 @@ static struct bcm2835_audio_drivers chil
|
|
|
|
.is_enabled = &enable_compat_alsa,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
- .audio_driver = &bcm2835_audio_hdmi,
|
|
|
|
+ .audio_driver = &bcm2835_audio_hdmi0,
|
|
|
|
+ .is_enabled = &enable_hdmi,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ .audio_driver = &bcm2835_audio_hdmi1,
|
|
|
|
.is_enabled = &enable_hdmi,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
|
|
|
|
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
|
|
|
|
@@ -33,7 +33,9 @@ enum {
|
|
|
|
enum snd_bcm2835_route {
|
|
|
|
AUDIO_DEST_AUTO = 0,
|
|
|
|
AUDIO_DEST_HEADPHONES = 1,
|
|
|
|
- AUDIO_DEST_HDMI = 2,
|
|
|
|
+ AUDIO_DEST_HDMI = 2, // for backwards compatibility.
|
|
|
|
+ AUDIO_DEST_HDMI0 = 2,
|
|
|
|
+ AUDIO_DEST_HDMI1 = 3,
|
|
|
|
AUDIO_DEST_MAX,
|
|
|
|
};
|
|
|
|
|