/*
- * linux/drivers/sound/dmasound/dmasound_awacs.c
+ * linux/sound/oss/dmasound/dmasound_awacs.c
*
* PowerMac `AWACS' and `Burgundy' DMA Sound Driver
* with some limited support for DACA & Tumbler
*
- * See linux/drivers/sound/dmasound/dmasound_core.c for copyright and
+ * See linux/sound/oss/dmasound/dmasound_core.c for copyright and
* history prior to 2001/01/26.
*
* 26/01/2001 ed 0.1 Iain Sandoe
#include <linux/nvram.h>
#include <linux/tty.h>
#include <linux/vt_kern.h>
-#include <linux/irq.h>
#include <linux/spinlock.h>
#include <linux/kmod.h>
#include <linux/interrupt.h>
* Interrupt numbers and addresses, & info obtained from the device tree.
*/
static int awacs_irq, awacs_tx_irq, awacs_rx_irq;
-static volatile struct awacs_regs *awacs;
-static volatile u32 *i2s;
-static volatile struct dbdma_regs *awacs_txdma, *awacs_rxdma;
+static volatile struct awacs_regs __iomem *awacs;
+static volatile u32 __iomem *i2s;
+static volatile struct dbdma_regs __iomem *awacs_txdma, *awacs_rxdma;
static int awacs_rate_index;
static int awacs_subframe;
static struct device_node* awacs_node;
/* for earlier powerbooks which need fiddling with mac-io to enable
* cd etc.
*/
-static unsigned char *latch_base;
-static unsigned char *macio_base;
+static unsigned char __iomem *latch_base;
+static unsigned char __iomem *macio_base;
/*
* Space for the DBDMA command blocks.
#undef IOCTL_OUT
#define IOCTL_IN(arg, ret) \
- rc = get_user(ret, (int *)(arg)); \
+ rc = get_user(ret, (int __user *)(arg)); \
if (rc) break;
#define IOCTL_OUT(arg, ret) \
- ioctl_return2((int *)(arg), ret)
+ ioctl_return2((int __user *)(arg), ret)
-static inline int ioctl_return2(int *addr, int value)
+static inline int ioctl_return2(int __user *addr, int value)
{
return value < 0 ? value : put_user(value, addr);
}
write_audio_gpio(gpio_audio_reset, !gpio_audio_reset_pol);
msleep(100);
if (gpio_headphone_irq) {
- if (request_irq(gpio_headphone_irq,headphone_intr,0,"Headphone detect",0) < 0) {
+ if (request_irq(gpio_headphone_irq,headphone_intr,0,"Headphone detect",NULL) < 0) {
printk(KERN_ERR "tumbler: Can't request headphone interrupt\n");
gpio_headphone_irq = 0;
} else {
val = pmac_call_feature(PMAC_FTR_READ_GPIO, NULL, gpio_headphone_detect, 0);
pmac_call_feature(PMAC_FTR_WRITE_GPIO, NULL, gpio_headphone_detect, val | 0x80);
/* Trigger it */
- headphone_intr(0,0,0);
+ headphone_intr(0,NULL,NULL);
}
}
if (!gpio_headphone_irq) {
tas_dmasound_cleanup(void)
{
if (gpio_headphone_irq)
- free_irq(gpio_headphone_irq, 0);
+ free_irq(gpio_headphone_irq, NULL);
return 0;
}
static int
tas_mixer_ioctl(u_int cmd, u_long arg)
{
+ int __user *argp = (int __user *)arg;
int data;
int rc;
if ((cmd & ~0xff) == MIXER_WRITE(0) &&
tas_supported_mixers() & (1<<(cmd & 0xff))) {
- rc = get_user(data, (int *)(arg));
+ rc = get_user(data, argp);
if (rc<0) return rc;
tas_set_mixer_level(cmd & 0xff, data);
tas_get_mixer_level(cmd & 0xff, &data);
- return ioctl_return2((int *)(arg), data);
+ return ioctl_return2(argp, data);
}
if ((cmd & ~0xff) == MIXER_READ(0) &&
tas_supported_mixers() & (1<<(cmd & 0xff))) {
tas_get_mixer_level(cmd & 0xff, &data);
- return ioctl_return2((int *)(arg), data);
+ return ioctl_return2(argp, data);
}
switch(cmd) {
static int __init PMacIrqInit(void)
{
if (awacs)
- if (request_irq(awacs_irq, pmac_awacs_intr, 0, "Built-in Sound misc", 0))
+ if (request_irq(awacs_irq, pmac_awacs_intr, 0, "Built-in Sound misc", NULL))
return 0;
- if (request_irq(awacs_tx_irq, pmac_awacs_tx_intr, 0, "Built-in Sound out", 0)
- || request_irq(awacs_rx_irq, pmac_awacs_rx_intr, 0, "Built-in Sound in", 0))
+ if (request_irq(awacs_tx_irq, pmac_awacs_tx_intr, 0, "Built-in Sound out", NULL)
+ || request_irq(awacs_rx_irq, pmac_awacs_rx_intr, 0, "Built-in Sound in", NULL))
return 0;
return 1;
}
msleep(200);
}
if (awacs)
- free_irq(awacs_irq, 0);
- free_irq(awacs_tx_irq, 0);
- free_irq(awacs_rx_irq, 0);
+ free_irq(awacs_irq, NULL);
+ free_irq(awacs_tx_irq, NULL);
+ free_irq(awacs_rx_irq, NULL);
if (awacs)
- iounmap((void *)awacs);
+ iounmap(awacs);
if (i2s)
- iounmap((void *)i2s);
- iounmap((void *)awacs_txdma);
- iounmap((void *)awacs_rxdma);
+ iounmap(i2s);
+ iounmap(awacs_txdma);
+ iounmap(awacs_rxdma);
release_OF_resource(awacs_node, 0);
release_OF_resource(awacs_node, 1);
write_audio_gpio(gpio_audio_reset, !gpio_audio_reset_pol);
msleep(150);
tas_leave_sleep(); /* Stub for now */
- headphone_intr(0,0,0);
+ headphone_intr(0,NULL,NULL);
break;
case AWACS_DACA:
msleep(10); /* Check this !!! */
/* all OF versions I've seen use this value */
if (i2s_node)
- i2s = (u32 *)ioremap(io->addrs[0].address, 0x1000);
+ i2s = ioremap(io->addrs[0].address, 0x1000);
else
- awacs = (volatile struct awacs_regs *)
- ioremap(io->addrs[0].address, 0x1000);
- awacs_txdma = (volatile struct dbdma_regs *)
- ioremap(io->addrs[1].address, 0x100);
- awacs_rxdma = (volatile struct dbdma_regs *)
- ioremap(io->addrs[2].address, 0x100);
+ awacs = ioremap(io->addrs[0].address, 0x1000);
+ awacs_txdma = ioremap(io->addrs[1].address, 0x100);
+ awacs_rxdma = ioremap(io->addrs[2].address, 0x100);
/* first of all make sure that the chip is powered up....*/
pmac_call_feature(PMAC_FTR_SOUND_CHIP_ENABLE, io, 0, 1);
sound_device_id = 0;
/* device ID appears post g3 b&w */
- prop = (unsigned int *)get_property(info, "device-id", 0);
+ prop = (unsigned int *)get_property(info, "device-id", NULL);
if (prop != 0)
sound_device_id = *prop;
* sound input. The 0x100 enables the SCSI bus
* terminator power.
*/
- latch_base = (unsigned char *) ioremap (0xf301a000, 0x1000);
+ latch_base = ioremap (0xf301a000, 0x1000);
in_8(latch_base + 0x190);
} else if (is_pbook_g3) {
struct device_node* mio;
- macio_base = 0;
+ macio_base = NULL;
for (mio = io->parent; mio; mio = mio->parent) {
if (strcmp(mio->name, "mac-io") == 0
&& mio->n_addrs > 0) {
- macio_base = (unsigned char *) ioremap
- (mio->addrs[0].address, 0x40);
+ macio_base = ioremap(mio->addrs[0].address, 0x40);
break;
}
}