aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-07-03 18:28:34 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-03 18:28:34 -0400
commit912b2539e1e062cec73e2e61448e507f7719bd08 (patch)
tree233807569ee5e0ab3118dd54c0ae9164fec8343e /sound
parent70b97a7f0b19cf1f2619deb5cc41e8b78c591aa7 (diff)
parent39ab9c212aac48f2744f2fd7722fa639ec048eb7 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: powerpc: add defconfig for Freescale MPC8349E-mITX board powerpc: Add base support for the Freescale MPC8349E-mITX eval board Documentation: correct values in MPC8548E SEC example node [POWERPC] Actually copy over i8259.c to arch/ppc/syslib this time [POWERPC] Add new interrupt mapping core and change platforms to use it [POWERPC] Copy i8259 code back to arch/ppc [POWERPC] New device-tree interrupt parsing code [POWERPC] Use the genirq framework [PATCH] genirq: Allow fasteoi handler to retrigger disabled interrupts [POWERPC] Update the SWIM3 (powermac) floppy driver [POWERPC] Fix error handling in detecting legacy serial ports [POWERPC] Fix booting on Momentum "Apache" board (a Maple derivative) [POWERPC] Fix various offb and BootX-related issues [POWERPC] Add a default config for 32-bit CHRP machines [POWERPC] fix implicit declaration on cell. [POWERPC] change get_property to return void *
Diffstat (limited to 'sound')
-rw-r--r--sound/aoa/core/snd-aoa-gpio-feature.c7
-rw-r--r--sound/aoa/soundbus/i2sbus/i2sbus-core.c7
-rw-r--r--sound/oss/dmasound/dmasound_awacs.c16
-rw-r--r--sound/ppc/pmac.c33
-rw-r--r--sound/ppc/tumbler.c8
5 files changed, 29 insertions, 42 deletions
diff --git a/sound/aoa/core/snd-aoa-gpio-feature.c b/sound/aoa/core/snd-aoa-gpio-feature.c
index bab97547a052..7ae0c0bdfad8 100644
--- a/sound/aoa/core/snd-aoa-gpio-feature.c
+++ b/sound/aoa/core/snd-aoa-gpio-feature.c
@@ -112,12 +112,7 @@ static struct device_node *get_gpio(char *name,
112 112
113static void get_irq(struct device_node * np, int *irqptr) 113static void get_irq(struct device_node * np, int *irqptr)
114{ 114{
115 *irqptr = -1; 115 *irqptr = irq_of_parse_and_map(np, 0);
116 if (!np)
117 return;
118 if (np->n_intrs != 1)
119 return;
120 *irqptr = np->intrs[0].line;
121} 116}
122 117
123/* 0x4 is outenable, 0x1 is out, thus 4 or 5 */ 118/* 0x4 is outenable, 0x1 is out, thus 4 or 5 */
diff --git a/sound/aoa/soundbus/i2sbus/i2sbus-core.c b/sound/aoa/soundbus/i2sbus/i2sbus-core.c
index f268dacdaa00..01c0724335a3 100644
--- a/sound/aoa/soundbus/i2sbus/i2sbus-core.c
+++ b/sound/aoa/soundbus/i2sbus/i2sbus-core.c
@@ -129,7 +129,7 @@ static int i2sbus_add_dev(struct macio_dev *macio,
129 if (strncmp(np->name, "i2s-", 4)) 129 if (strncmp(np->name, "i2s-", 4))
130 return 0; 130 return 0;
131 131
132 if (np->n_intrs != 3) 132 if (macio_irq_count(macio) != 3)
133 return 0; 133 return 0;
134 134
135 dev = kzalloc(sizeof(struct i2sbus_dev), GFP_KERNEL); 135 dev = kzalloc(sizeof(struct i2sbus_dev), GFP_KERNEL);
@@ -183,9 +183,10 @@ static int i2sbus_add_dev(struct macio_dev *macio,
183 snprintf(dev->rnames[i], sizeof(dev->rnames[i]), rnames[i], np->name); 183 snprintf(dev->rnames[i], sizeof(dev->rnames[i]), rnames[i], np->name);
184 } 184 }
185 for (i=0;i<3;i++) { 185 for (i=0;i<3;i++) {
186 if (request_irq(np->intrs[i].line, ints[i], 0, dev->rnames[i], dev)) 186 if (request_irq(macio_irq(macio, i), ints[i], 0,
187 dev->rnames[i], dev))
187 goto err; 188 goto err;
188 dev->interrupts[i] = np->intrs[i].line; 189 dev->interrupts[i] = macio_irq(macio, i);
189 } 190 }
190 191
191 for (i=0;i<3;i++) { 192 for (i=0;i<3;i++) {
diff --git a/sound/oss/dmasound/dmasound_awacs.c b/sound/oss/dmasound/dmasound_awacs.c
index de454ca39226..4359903f4376 100644
--- a/sound/oss/dmasound/dmasound_awacs.c
+++ b/sound/oss/dmasound/dmasound_awacs.c
@@ -374,10 +374,7 @@ setup_audio_gpio(const char *name, const char* compatible, int *gpio_addr, int*
374 *gpio_pol = *pp; 374 *gpio_pol = *pp;
375 else 375 else
376 *gpio_pol = 1; 376 *gpio_pol = 1;
377 if (np->n_intrs > 0) 377 return irq_of_parse_and_map(np, 0);
378 return np->intrs[0].line;
379
380 return 0;
381} 378}
382 379
383static inline void 380static inline void
@@ -2864,14 +2861,13 @@ printk("dmasound_pmac: couldn't find a Codec we can handle\n");
2864 * other info if necessary (early AWACS we want to read chip ids) 2861 * other info if necessary (early AWACS we want to read chip ids)
2865 */ 2862 */
2866 2863
2867 if (of_get_address(io, 2, NULL, NULL) == NULL || io->n_intrs < 3) { 2864 if (of_get_address(io, 2, NULL, NULL) == NULL) {
2868 /* OK - maybe we need to use the 'awacs' node (on earlier 2865 /* OK - maybe we need to use the 'awacs' node (on earlier
2869 * machines). 2866 * machines).
2870 */ 2867 */
2871 if (awacs_node) { 2868 if (awacs_node) {
2872 io = awacs_node ; 2869 io = awacs_node ;
2873 if (of_get_address(io, 2, NULL, NULL) == NULL || 2870 if (of_get_address(io, 2, NULL, NULL) == NULL) {
2874 io->n_intrs < 3) {
2875 printk("dmasound_pmac: can't use %s\n", 2871 printk("dmasound_pmac: can't use %s\n",
2876 io->full_name); 2872 io->full_name);
2877 return -ENODEV; 2873 return -ENODEV;
@@ -2940,9 +2936,9 @@ printk("dmasound_pmac: couldn't find a Codec we can handle\n");
2940 if (awacs_revision == AWACS_SCREAMER && awacs) 2936 if (awacs_revision == AWACS_SCREAMER && awacs)
2941 awacs_recalibrate(); 2937 awacs_recalibrate();
2942 2938
2943 awacs_irq = io->intrs[0].line; 2939 awacs_irq = irq_of_parse_and_map(io, 0);
2944 awacs_tx_irq = io->intrs[1].line; 2940 awacs_tx_irq = irq_of_parse_and_map(io, 1);
2945 awacs_rx_irq = io->intrs[2].line; 2941 awacs_rx_irq = irq_of_parse_and_map(io, 2);
2946 2942
2947 /* Hack for legacy crap that will be killed someday */ 2943 /* Hack for legacy crap that will be killed someday */
2948 awacs_node = io; 2944 awacs_node = io;
diff --git a/sound/ppc/pmac.c b/sound/ppc/pmac.c
index 90db9a1d1e0a..641430631505 100644
--- a/sound/ppc/pmac.c
+++ b/sound/ppc/pmac.c
@@ -1120,6 +1120,7 @@ int __init snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
1120 struct snd_pmac *chip; 1120 struct snd_pmac *chip;
1121 struct device_node *np; 1121 struct device_node *np;
1122 int i, err; 1122 int i, err;
1123 unsigned int irq;
1123 unsigned long ctrl_addr, txdma_addr, rxdma_addr; 1124 unsigned long ctrl_addr, txdma_addr, rxdma_addr;
1124 static struct snd_device_ops ops = { 1125 static struct snd_device_ops ops = {
1125 .dev_free = snd_pmac_dev_free, 1126 .dev_free = snd_pmac_dev_free,
@@ -1153,10 +1154,6 @@ int __init snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
1153 if (chip->is_k2) { 1154 if (chip->is_k2) {
1154 static char *rnames[] = { 1155 static char *rnames[] = {
1155 "Sound Control", "Sound DMA" }; 1156 "Sound Control", "Sound DMA" };
1156 if (np->n_intrs < 3) {
1157 err = -ENODEV;
1158 goto __error;
1159 }
1160 for (i = 0; i < 2; i ++) { 1157 for (i = 0; i < 2; i ++) {
1161 if (of_address_to_resource(np->parent, i, 1158 if (of_address_to_resource(np->parent, i,
1162 &chip->rsrc[i])) { 1159 &chip->rsrc[i])) {
@@ -1185,10 +1182,6 @@ int __init snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
1185 } else { 1182 } else {
1186 static char *rnames[] = { 1183 static char *rnames[] = {
1187 "Sound Control", "Sound Tx DMA", "Sound Rx DMA" }; 1184 "Sound Control", "Sound Tx DMA", "Sound Rx DMA" };
1188 if (np->n_intrs < 3) {
1189 err = -ENODEV;
1190 goto __error;
1191 }
1192 for (i = 0; i < 3; i ++) { 1185 for (i = 0; i < 3; i ++) {
1193 if (of_address_to_resource(np, i, 1186 if (of_address_to_resource(np, i,
1194 &chip->rsrc[i])) { 1187 &chip->rsrc[i])) {
@@ -1220,28 +1213,30 @@ int __init snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
1220 chip->playback.dma = ioremap(txdma_addr, 0x100); 1213 chip->playback.dma = ioremap(txdma_addr, 0x100);
1221 chip->capture.dma = ioremap(rxdma_addr, 0x100); 1214 chip->capture.dma = ioremap(rxdma_addr, 0x100);
1222 if (chip->model <= PMAC_BURGUNDY) { 1215 if (chip->model <= PMAC_BURGUNDY) {
1223 if (request_irq(np->intrs[0].line, snd_pmac_ctrl_intr, 0, 1216 irq = irq_of_parse_and_map(np, 0);
1217 if (request_irq(irq, snd_pmac_ctrl_intr, 0,
1224 "PMac", (void*)chip)) { 1218 "PMac", (void*)chip)) {
1225 snd_printk(KERN_ERR "pmac: unable to grab IRQ %d\n", np->intrs[0].line); 1219 snd_printk(KERN_ERR "pmac: unable to grab IRQ %d\n",
1220 irq);
1226 err = -EBUSY; 1221 err = -EBUSY;
1227 goto __error; 1222 goto __error;
1228 } 1223 }
1229 chip->irq = np->intrs[0].line; 1224 chip->irq = irq;
1230 } 1225 }
1231 if (request_irq(np->intrs[1].line, snd_pmac_tx_intr, 0, 1226 irq = irq_of_parse_and_map(np, 1);
1232 "PMac Output", (void*)chip)) { 1227 if (request_irq(irq, snd_pmac_tx_intr, 0, "PMac Output", (void*)chip)){
1233 snd_printk(KERN_ERR "pmac: unable to grab IRQ %d\n", np->intrs[1].line); 1228 snd_printk(KERN_ERR "pmac: unable to grab IRQ %d\n", irq);
1234 err = -EBUSY; 1229 err = -EBUSY;
1235 goto __error; 1230 goto __error;
1236 } 1231 }
1237 chip->tx_irq = np->intrs[1].line; 1232 chip->tx_irq = irq;
1238 if (request_irq(np->intrs[2].line, snd_pmac_rx_intr, 0, 1233 irq = irq_of_parse_and_map(np, 2);
1239 "PMac Input", (void*)chip)) { 1234 if (request_irq(irq, snd_pmac_rx_intr, 0, "PMac Input", (void*)chip)) {
1240 snd_printk(KERN_ERR "pmac: unable to grab IRQ %d\n", np->intrs[2].line); 1235 snd_printk(KERN_ERR "pmac: unable to grab IRQ %d\n", irq);
1241 err = -EBUSY; 1236 err = -EBUSY;
1242 goto __error; 1237 goto __error;
1243 } 1238 }
1244 chip->rx_irq = np->intrs[2].line; 1239 chip->rx_irq = irq;
1245 1240
1246 snd_pmac_sound_feature(chip, 1); 1241 snd_pmac_sound_feature(chip, 1);
1247 1242
diff --git a/sound/ppc/tumbler.c b/sound/ppc/tumbler.c
index 70e4ebc70260..692c61177678 100644
--- a/sound/ppc/tumbler.c
+++ b/sound/ppc/tumbler.c
@@ -1121,7 +1121,7 @@ static long tumbler_find_device(const char *device, const char *platform,
1121 DBG("(I) GPIO device %s found, offset: %x, active state: %d !\n", 1121 DBG("(I) GPIO device %s found, offset: %x, active state: %d !\n",
1122 device, gp->addr, gp->active_state); 1122 device, gp->addr, gp->active_state);
1123 1123
1124 return (node->n_intrs > 0) ? node->intrs[0].line : 0; 1124 return irq_of_parse_and_map(node, 0);
1125} 1125}
1126 1126
1127/* reset audio */ 1127/* reset audio */
@@ -1264,16 +1264,16 @@ static int __init tumbler_init(struct snd_pmac *chip)
1264 &mix->line_mute, 1); 1264 &mix->line_mute, 1);
1265 irq = tumbler_find_device("headphone-detect", 1265 irq = tumbler_find_device("headphone-detect",
1266 NULL, &mix->hp_detect, 0); 1266 NULL, &mix->hp_detect, 0);
1267 if (irq < 0) 1267 if (irq <= NO_IRQ)
1268 irq = tumbler_find_device("headphone-detect", 1268 irq = tumbler_find_device("headphone-detect",
1269 NULL, &mix->hp_detect, 1); 1269 NULL, &mix->hp_detect, 1);
1270 if (irq < 0) 1270 if (irq <= NO_IRQ)
1271 irq = tumbler_find_device("keywest-gpio15", 1271 irq = tumbler_find_device("keywest-gpio15",
1272 NULL, &mix->hp_detect, 1); 1272 NULL, &mix->hp_detect, 1);
1273 mix->headphone_irq = irq; 1273 mix->headphone_irq = irq;
1274 irq = tumbler_find_device("line-output-detect", 1274 irq = tumbler_find_device("line-output-detect",
1275 NULL, &mix->line_detect, 0); 1275 NULL, &mix->line_detect, 0);
1276 if (irq < 0) 1276 if (irq <= NO_IRQ)
1277 irq = tumbler_find_device("line-output-detect", 1277 irq = tumbler_find_device("line-output-detect",
1278 NULL, &mix->line_detect, 1); 1278 NULL, &mix->line_detect, 1);
1279 mix->lineout_irq = irq; 1279 mix->lineout_irq = irq;