|
@@ -541,27 +541,150 @@ static struct platform_device bfin_dpmc = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
+#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE) \
|
|
|
+ || defined(CONFIG_SND_BF5XX_AC97) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_AC97_MODULE)
|
|
|
+
|
|
|
+#include <asm/bfin_sport.h>
|
|
|
+
|
|
|
+#define SPORT_REQ(x) \
|
|
|
+ [x] = {P_SPORT##x##_TFS, P_SPORT##x##_DTPRI, P_SPORT##x##_TSCLK, \
|
|
|
+ P_SPORT##x##_RFS, P_SPORT##x##_DRPRI, P_SPORT##x##_RSCLK, 0}
|
|
|
+
|
|
|
+static const u16 bfin_snd_pin[][7] = {
|
|
|
+ SPORT_REQ(0),
|
|
|
+ SPORT_REQ(1),
|
|
|
+};
|
|
|
+
|
|
|
+static struct bfin_snd_platform_data bfin_snd_data[] = {
|
|
|
+ {
|
|
|
+ .pin_req = &bfin_snd_pin[0][0],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .pin_req = &bfin_snd_pin[1][0],
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+#define BFIN_SND_RES(x) \
|
|
|
+ [x] = { \
|
|
|
+ { \
|
|
|
+ .start = SPORT##x##_TCR1, \
|
|
|
+ .end = SPORT##x##_TCR1, \
|
|
|
+ .flags = IORESOURCE_MEM \
|
|
|
+ }, \
|
|
|
+ { \
|
|
|
+ .start = CH_SPORT##x##_RX, \
|
|
|
+ .end = CH_SPORT##x##_RX, \
|
|
|
+ .flags = IORESOURCE_DMA, \
|
|
|
+ }, \
|
|
|
+ { \
|
|
|
+ .start = CH_SPORT##x##_TX, \
|
|
|
+ .end = CH_SPORT##x##_TX, \
|
|
|
+ .flags = IORESOURCE_DMA, \
|
|
|
+ }, \
|
|
|
+ { \
|
|
|
+ .start = IRQ_SPORT##x##_ERROR, \
|
|
|
+ .end = IRQ_SPORT##x##_ERROR, \
|
|
|
+ .flags = IORESOURCE_IRQ, \
|
|
|
+ } \
|
|
|
+ }
|
|
|
+
|
|
|
+static struct resource bfin_snd_resources[][4] = {
|
|
|
+ BFIN_SND_RES(0),
|
|
|
+ BFIN_SND_RES(1),
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
|
|
|
+static struct platform_device bfin_i2s_pcm = {
|
|
|
+ .name = "bfin-i2s-pcm-audio",
|
|
|
+ .id = -1,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
|
|
|
+static struct platform_device bfin_tdm_pcm = {
|
|
|
+ .name = "bfin-tdm-pcm-audio",
|
|
|
+ .id = -1,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
|
|
|
+static struct platform_device bfin_ac97_pcm = {
|
|
|
+ .name = "bfin-ac97-pcm-audio",
|
|
|
+ .id = -1,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_AD73311) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_AD73311_MODULE)
|
|
|
+static const unsigned ad73311_gpio[] = {
|
|
|
+ GPIO_PF4,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device bfin_ad73311_machine = {
|
|
|
+ .name = "bfin-snd-ad73311",
|
|
|
+ .id = 1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = (void *)ad73311_gpio,
|
|
|
+ },
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_SOC_AD73311) || defined(CONFIG_SND_SOC_AD73311_MODULE)
|
|
|
+static struct platform_device bfin_ad73311_codec_device = {
|
|
|
+ .name = "ad73311",
|
|
|
+ .id = -1,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_SOC_AD74111) || defined(CONFIG_SND_SOC_AD74111_MODULE)
|
|
|
+static struct platform_device bfin_ad74111_codec_device = {
|
|
|
+ .name = "ad74111",
|
|
|
+ .id = -1,
|
|
|
+};
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_I2S) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_I2S_MODULE)
|
|
|
static struct platform_device bfin_i2s = {
|
|
|
.name = "bfin-i2s",
|
|
|
.id = CONFIG_SND_BF5XX_SPORT_NUM,
|
|
|
- /* TODO: add platform data here */
|
|
|
+ .num_resources =
|
|
|
+ ARRAY_SIZE(bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM]),
|
|
|
+ .resource = bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM],
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &bfin_snd_data[CONFIG_SND_BF5XX_SPORT_NUM],
|
|
|
+ },
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
-#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_TDM) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_TDM_MODULE)
|
|
|
static struct platform_device bfin_tdm = {
|
|
|
.name = "bfin-tdm",
|
|
|
.id = CONFIG_SND_BF5XX_SPORT_NUM,
|
|
|
- /* TODO: add platform data here */
|
|
|
+ .num_resources =
|
|
|
+ ARRAY_SIZE(bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM]),
|
|
|
+ .resource = bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM],
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &bfin_snd_data[CONFIG_SND_BF5XX_SPORT_NUM],
|
|
|
+ },
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
-#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_AC97) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_AC97_MODULE)
|
|
|
static struct platform_device bfin_ac97 = {
|
|
|
.name = "bfin-ac97",
|
|
|
.id = CONFIG_SND_BF5XX_SPORT_NUM,
|
|
|
- /* TODO: add platform data here */
|
|
|
+ .num_resources =
|
|
|
+ ARRAY_SIZE(bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM]),
|
|
|
+ .resource = bfin_snd_resources[CONFIG_SND_BF5XX_SPORT_NUM],
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &bfin_snd_data[CONFIG_SND_BF5XX_SPORT_NUM],
|
|
|
+ },
|
|
|
};
|
|
|
#endif
|
|
|
|
|
@@ -597,7 +720,8 @@ static struct platform_device *stamp_devices[] __initdata = {
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
-#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
|
|
|
+#if defined(CONFIG_SERIAL_BFIN_SPORT) || \
|
|
|
+ defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
|
|
|
#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
|
|
|
&bfin_sport0_uart_device,
|
|
|
#endif
|
|
@@ -619,14 +743,42 @@ static struct platform_device *stamp_devices[] __initdata = {
|
|
|
#endif
|
|
|
|
|
|
#if defined(CONFIG_SND_BF5XX_I2S) || defined(CONFIG_SND_BF5XX_I2S_MODULE)
|
|
|
- &bfin_i2s,
|
|
|
+ &bfin_i2s_pcm,
|
|
|
#endif
|
|
|
|
|
|
#if defined(CONFIG_SND_BF5XX_TDM) || defined(CONFIG_SND_BF5XX_TDM_MODULE)
|
|
|
- &bfin_tdm,
|
|
|
+ &bfin_tdm_pcm,
|
|
|
#endif
|
|
|
|
|
|
#if defined(CONFIG_SND_BF5XX_AC97) || defined(CONFIG_SND_BF5XX_AC97_MODULE)
|
|
|
+ &bfin_ac97_pcm,
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_AD73311) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_AD73311_MODULE)
|
|
|
+ &bfin_ad73311_machine,
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_SOC_AD73311) || defined(CONFIG_SND_SOC_AD73311_MODULE)
|
|
|
+ &bfin_ad73311_codec_device,
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_SOC_AD74111) || defined(CONFIG_SND_SOC_AD74111_MODULE)
|
|
|
+ &bfin_ad74111_codec_device,
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_I2S) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_I2S_MODULE)
|
|
|
+ &bfin_i2s,
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_TDM) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_TDM_MODULE)
|
|
|
+ &bfin_tdm,
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_BF5XX_SOC_AC97) || \
|
|
|
+ defined(CONFIG_SND_BF5XX_SOC_AC97_MODULE)
|
|
|
&bfin_ac97,
|
|
|
#endif
|
|
|
};
|