mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-26 18:43:33 -05:00
[ALSA] au88x0 - 64bit arch fixes
Modules: au88x0 driver Fix the driver codes to run on 64bit architectures. The patch taken from ALSA BTS bug#1047. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
7a6c8ff1ef
commit
97c67b65cb
11 changed files with 81 additions and 72 deletions
|
@ -151,14 +151,18 @@ snd_vortex_create(struct snd_card *card, struct pci_dev *pci, vortex_t ** rchip)
|
||||||
// check PCI availability (DMA).
|
// check PCI availability (DMA).
|
||||||
if ((err = pci_enable_device(pci)) < 0)
|
if ((err = pci_enable_device(pci)) < 0)
|
||||||
return err;
|
return err;
|
||||||
if (pci_set_dma_mask(pci, DMA_32BIT_MASK)) {
|
if (pci_set_dma_mask(pci, DMA_32BIT_MASK) < 0 ||
|
||||||
|
pci_set_consistent_dma_mask(pci, DMA_32BIT_MASK) < 0) {
|
||||||
printk(KERN_ERR "error to set DMA mask\n");
|
printk(KERN_ERR "error to set DMA mask\n");
|
||||||
|
pci_disable_device(pci);
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
||||||
if (chip == NULL)
|
if (chip == NULL) {
|
||||||
|
pci_disable_device(pci);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
chip->card = card;
|
chip->card = card;
|
||||||
|
|
||||||
|
@ -208,6 +212,8 @@ snd_vortex_create(struct snd_card *card, struct pci_dev *pci, vortex_t ** rchip)
|
||||||
goto alloc_out;
|
goto alloc_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
snd_card_set_dev(card, &pci->dev);
|
||||||
|
|
||||||
*rchip = chip;
|
*rchip = chip;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -39,8 +39,8 @@
|
||||||
#include "au88x0_wt.h"
|
#include "au88x0_wt.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define hwread(x,y) readl((x)+((y)>>2))
|
#define hwread(x,y) readl((x)+(y))
|
||||||
#define hwwrite(x,y,z) writel((z),(x)+((y)>>2))
|
#define hwwrite(x,y,z) writel((z),(x)+(y))
|
||||||
|
|
||||||
/* Vortex MPU401 defines. */
|
/* Vortex MPU401 defines. */
|
||||||
#define MIDI_CLOCK_DIV 0x61
|
#define MIDI_CLOCK_DIV 0x61
|
||||||
|
@ -113,7 +113,7 @@ typedef struct {
|
||||||
//int this_08; /* Still unknown */
|
//int this_08; /* Still unknown */
|
||||||
int fifo_enabled; /* this_24 */
|
int fifo_enabled; /* this_24 */
|
||||||
int fifo_status; /* this_1c */
|
int fifo_status; /* this_1c */
|
||||||
int dma_ctrl; /* this_78 (ADB), this_7c (WT) */
|
u32 dma_ctrl; /* this_78 (ADB), this_7c (WT) */
|
||||||
int dma_unknown; /* this_74 (ADB), this_78 (WT). WDM: +8 */
|
int dma_unknown; /* this_74 (ADB), this_78 (WT). WDM: +8 */
|
||||||
int cfg0;
|
int cfg0;
|
||||||
int cfg1;
|
int cfg1;
|
||||||
|
@ -178,7 +178,7 @@ struct snd_vortex {
|
||||||
|
|
||||||
/* PCI hardware resources */
|
/* PCI hardware resources */
|
||||||
unsigned long io;
|
unsigned long io;
|
||||||
unsigned long __iomem *mmio;
|
void __iomem *mmio;
|
||||||
unsigned int irq;
|
unsigned int irq;
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
|
|
||||||
|
@ -201,14 +201,14 @@ static void vortex_adbdma_setbuffers(vortex_t * vortex, int adbdma,
|
||||||
int count);
|
int count);
|
||||||
static void vortex_adbdma_setmode(vortex_t * vortex, int adbdma, int ie,
|
static void vortex_adbdma_setmode(vortex_t * vortex, int adbdma, int ie,
|
||||||
int dir, int fmt, int d,
|
int dir, int fmt, int d,
|
||||||
unsigned long offset);
|
u32 offset);
|
||||||
static void vortex_adbdma_setstartbuffer(vortex_t * vortex, int adbdma, int sb);
|
static void vortex_adbdma_setstartbuffer(vortex_t * vortex, int adbdma, int sb);
|
||||||
#ifndef CHIP_AU8810
|
#ifndef CHIP_AU8810
|
||||||
static void vortex_wtdma_setbuffers(vortex_t * vortex, int wtdma,
|
static void vortex_wtdma_setbuffers(vortex_t * vortex, int wtdma,
|
||||||
struct snd_sg_buf * sgbuf, int size,
|
struct snd_sg_buf * sgbuf, int size,
|
||||||
int count);
|
int count);
|
||||||
static void vortex_wtdma_setmode(vortex_t * vortex, int wtdma, int ie, int fmt, int d, /*int e, */
|
static void vortex_wtdma_setmode(vortex_t * vortex, int wtdma, int ie, int fmt, int d, /*int e, */
|
||||||
unsigned long offset);
|
u32 offset);
|
||||||
static void vortex_wtdma_setstartbuffer(vortex_t * vortex, int wtdma, int sb);
|
static void vortex_wtdma_setstartbuffer(vortex_t * vortex, int wtdma, int sb);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -376,7 +376,7 @@ vortex_mixer_delWTD(vortex_t * vortex, unsigned char mix, unsigned char ch)
|
||||||
|
|
||||||
static void vortex_mixer_init(vortex_t * vortex)
|
static void vortex_mixer_init(vortex_t * vortex)
|
||||||
{
|
{
|
||||||
unsigned long addr;
|
u32 addr;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
// FIXME: get rid of this crap.
|
// FIXME: get rid of this crap.
|
||||||
|
@ -639,7 +639,7 @@ static void vortex_src_setupchannel(vortex_t * card, unsigned char src,
|
||||||
|
|
||||||
static void vortex_srcblock_init(vortex_t * vortex)
|
static void vortex_srcblock_init(vortex_t * vortex)
|
||||||
{
|
{
|
||||||
unsigned long addr;
|
u32 addr;
|
||||||
int x;
|
int x;
|
||||||
hwwrite(vortex->mmio, VORTEX_SRC_SOURCESIZE, 0x1ff);
|
hwwrite(vortex->mmio, VORTEX_SRC_SOURCESIZE, 0x1ff);
|
||||||
/*
|
/*
|
||||||
|
@ -1035,7 +1035,7 @@ vortex_fifo_setwtctrl(vortex_t * vortex, int fifo, int ctrl, int priority,
|
||||||
static void vortex_fifo_init(vortex_t * vortex)
|
static void vortex_fifo_init(vortex_t * vortex)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
unsigned long addr;
|
u32 addr;
|
||||||
|
|
||||||
/* ADB DMA channels fifos. */
|
/* ADB DMA channels fifos. */
|
||||||
addr = VORTEX_FIFO_ADBCTRL + ((NR_ADB - 1) * 4);
|
addr = VORTEX_FIFO_ADBCTRL + ((NR_ADB - 1) * 4);
|
||||||
|
@ -1054,7 +1054,7 @@ static void vortex_fifo_init(vortex_t * vortex)
|
||||||
hwwrite(vortex->mmio, addr, FIFO_U0);
|
hwwrite(vortex->mmio, addr, FIFO_U0);
|
||||||
if (hwread(vortex->mmio, addr) != FIFO_U0)
|
if (hwread(vortex->mmio, addr) != FIFO_U0)
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
"bad wt fifo reset (0x%08lx, 0x%08x)!\n",
|
"bad wt fifo reset (0x%08x, 0x%08x)!\n",
|
||||||
addr, hwread(vortex->mmio, addr));
|
addr, hwread(vortex->mmio, addr));
|
||||||
vortex_fifo_clearwtdata(vortex, x, FIFO_SIZE);
|
vortex_fifo_clearwtdata(vortex, x, FIFO_SIZE);
|
||||||
addr -= 4;
|
addr -= 4;
|
||||||
|
@ -1152,7 +1152,7 @@ vortex_adbdma_setbuffers(vortex_t * vortex, int adbdma,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vortex_adbdma_setmode(vortex_t * vortex, int adbdma, int ie, int dir,
|
vortex_adbdma_setmode(vortex_t * vortex, int adbdma, int ie, int dir,
|
||||||
int fmt, int d, unsigned long offset)
|
int fmt, int d, u32 offset)
|
||||||
{
|
{
|
||||||
stream_t *dma = &vortex->dma_adb[adbdma];
|
stream_t *dma = &vortex->dma_adb[adbdma];
|
||||||
|
|
||||||
|
@ -1411,7 +1411,7 @@ vortex_wtdma_setbuffers(vortex_t * vortex, int wtdma,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vortex_wtdma_setmode(vortex_t * vortex, int wtdma, int ie, int fmt, int d,
|
vortex_wtdma_setmode(vortex_t * vortex, int wtdma, int ie, int fmt, int d,
|
||||||
/*int e, */ unsigned long offset)
|
/*int e, */ u32 offset)
|
||||||
{
|
{
|
||||||
stream_t *dma = &vortex->dma_wt[wtdma];
|
stream_t *dma = &vortex->dma_wt[wtdma];
|
||||||
|
|
||||||
|
|
|
@ -377,23 +377,23 @@ static void vortex_EqHw_GetLevels(vortex_t * vortex, u16 a[])
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/* Global Control */
|
/* Global Control */
|
||||||
static void vortex_EqHw_SetControlReg(vortex_t * vortex, unsigned long reg)
|
static void vortex_EqHw_SetControlReg(vortex_t * vortex, u32 reg)
|
||||||
{
|
{
|
||||||
hwwrite(vortex->mmio, 0x2b440, reg);
|
hwwrite(vortex->mmio, 0x2b440, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vortex_EqHw_SetSampleRate(vortex_t * vortex, int sr)
|
static void vortex_EqHw_SetSampleRate(vortex_t * vortex, u32 sr)
|
||||||
{
|
{
|
||||||
hwwrite(vortex->mmio, 0x2b440, ((sr & 0x1f) << 3) | 0xb800);
|
hwwrite(vortex->mmio, 0x2b440, ((sr & 0x1f) << 3) | 0xb800);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void vortex_EqHw_GetControlReg(vortex_t * vortex, unsigned long *reg)
|
static void vortex_EqHw_GetControlReg(vortex_t * vortex, u32 *reg)
|
||||||
{
|
{
|
||||||
*reg = hwread(vortex->mmio, 0x2b440);
|
*reg = hwread(vortex->mmio, 0x2b440);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vortex_EqHw_GetSampleRate(vortex_t * vortex, int *sr)
|
static void vortex_EqHw_GetSampleRate(vortex_t * vortex, u32 *sr)
|
||||||
{
|
{
|
||||||
*sr = (hwread(vortex->mmio, 0x2b440) >> 3) & 0x1f;
|
*sr = (hwread(vortex->mmio, 0x2b440) >> 3) & 0x1f;
|
||||||
}
|
}
|
||||||
|
@ -554,7 +554,7 @@ static void vortex_Eqlzr_SetRightGain(vortex_t * vortex, u16 index, u16 gain)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static int
|
static int
|
||||||
vortex_Eqlzr_GetAllBands(vortex_t * vortex, u16 * gains, unsigned long *cnt)
|
vortex_Eqlzr_GetAllBands(vortex_t * vortex, u16 * gains, s32 *cnt)
|
||||||
{
|
{
|
||||||
eqlzr_t *eq = &(vortex->eq);
|
eqlzr_t *eq = &(vortex->eq);
|
||||||
int si = 0;
|
int si = 0;
|
||||||
|
@ -586,7 +586,7 @@ static int vortex_Eqlzr_SetAllBandsFromActiveCoeffSet(vortex_t * vortex)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vortex_Eqlzr_SetAllBands(vortex_t * vortex, u16 gains[], unsigned long count)
|
vortex_Eqlzr_SetAllBands(vortex_t * vortex, u16 gains[], s32 count)
|
||||||
{
|
{
|
||||||
eqlzr_t *eq = &(vortex->eq);
|
eqlzr_t *eq = &(vortex->eq);
|
||||||
int i;
|
int i;
|
||||||
|
@ -604,11 +604,10 @@ vortex_Eqlzr_SetAllBands(vortex_t * vortex, u16 gains[], unsigned long count)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vortex_Eqlzr_SetA3dBypassGain(vortex_t * vortex, unsigned long a,
|
vortex_Eqlzr_SetA3dBypassGain(vortex_t * vortex, u32 a, u32 b)
|
||||||
unsigned long b)
|
|
||||||
{
|
{
|
||||||
eqlzr_t *eq = &(vortex->eq);
|
eqlzr_t *eq = &(vortex->eq);
|
||||||
int eax, ebx;
|
u32 eax, ebx;
|
||||||
|
|
||||||
eq->this58 = a;
|
eq->this58 = a;
|
||||||
eq->this5c = b;
|
eq->this5c = b;
|
||||||
|
@ -624,7 +623,7 @@ vortex_Eqlzr_SetA3dBypassGain(vortex_t * vortex, unsigned long a,
|
||||||
static void vortex_Eqlzr_ProgramA3dBypassGain(vortex_t * vortex)
|
static void vortex_Eqlzr_ProgramA3dBypassGain(vortex_t * vortex)
|
||||||
{
|
{
|
||||||
eqlzr_t *eq = &(vortex->eq);
|
eqlzr_t *eq = &(vortex->eq);
|
||||||
int eax, ebx;
|
u32 eax, ebx;
|
||||||
|
|
||||||
if (eq->this54)
|
if (eq->this54)
|
||||||
eax = eq->this0e;
|
eax = eq->this0e;
|
||||||
|
@ -641,7 +640,7 @@ static void vortex_Eqlzr_ShutDownA3d(vortex_t * vortex)
|
||||||
vortex_EqHw_ZeroA3DIO(vortex);
|
vortex_EqHw_ZeroA3DIO(vortex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vortex_Eqlzr_SetBypass(vortex_t * vortex, long bp)
|
static void vortex_Eqlzr_SetBypass(vortex_t * vortex, u32 bp)
|
||||||
{
|
{
|
||||||
eqlzr_t *eq = &(vortex->eq);
|
eqlzr_t *eq = &(vortex->eq);
|
||||||
|
|
||||||
|
@ -651,8 +650,8 @@ static void vortex_Eqlzr_SetBypass(vortex_t * vortex, long bp)
|
||||||
vortex_EqHw_SetBypassGain(vortex, eq->this08, eq->this08);
|
vortex_EqHw_SetBypassGain(vortex, eq->this08, eq->this08);
|
||||||
} else {
|
} else {
|
||||||
/* EQ disabled. */
|
/* EQ disabled. */
|
||||||
vortex_EqHw_SetLeftGainsTarget(vortex, (u16 *) (eq->this14));
|
vortex_EqHw_SetLeftGainsTarget(vortex, eq->this14_array);
|
||||||
vortex_EqHw_SetRightGainsTarget(vortex, (u16 *) (eq->this14));
|
vortex_EqHw_SetRightGainsTarget(vortex, eq->this14_array);
|
||||||
vortex_EqHw_SetBypassGain(vortex, eq->this0c, eq->this0c);
|
vortex_EqHw_SetBypassGain(vortex, eq->this0c, eq->this0c);
|
||||||
}
|
}
|
||||||
vortex_Eqlzr_ProgramA3dBypassGain(vortex);
|
vortex_Eqlzr_ProgramA3dBypassGain(vortex);
|
||||||
|
@ -706,7 +705,7 @@ static void vortex_Eqlzr_init(vortex_t * vortex)
|
||||||
eq->this5c = 0xffff;
|
eq->this5c = 0xffff;
|
||||||
|
|
||||||
/* Set gains. */
|
/* Set gains. */
|
||||||
memset(eq->this14, 0, 2 * 10);
|
memset(eq->this14_array, 0, sizeof(eq->this14_array));
|
||||||
|
|
||||||
/* Actual init. */
|
/* Actual init. */
|
||||||
vortex_EqHw_ZeroState(vortex);
|
vortex_EqHw_ZeroState(vortex);
|
||||||
|
@ -792,7 +791,7 @@ snd_vortex_eq_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucon
|
||||||
{
|
{
|
||||||
vortex_t *vortex = snd_kcontrol_chip(kcontrol);
|
vortex_t *vortex = snd_kcontrol_chip(kcontrol);
|
||||||
int i = kcontrol->private_value;
|
int i = kcontrol->private_value;
|
||||||
u16 gainL, gainR;
|
u16 gainL = 0, gainR = 0;
|
||||||
|
|
||||||
vortex_Eqlzr_GetLeftGain(vortex, i, &gainL);
|
vortex_Eqlzr_GetLeftGain(vortex, i, &gainL);
|
||||||
vortex_Eqlzr_GetRightGain(vortex, i, &gainR);
|
vortex_Eqlzr_GetRightGain(vortex, i, &gainR);
|
||||||
|
@ -806,7 +805,7 @@ snd_vortex_eq_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucon
|
||||||
{
|
{
|
||||||
vortex_t *vortex = snd_kcontrol_chip(kcontrol);
|
vortex_t *vortex = snd_kcontrol_chip(kcontrol);
|
||||||
int changed = 0, i = kcontrol->private_value;
|
int changed = 0, i = kcontrol->private_value;
|
||||||
u16 gainL, gainR;
|
u16 gainL = 0, gainR = 0;
|
||||||
|
|
||||||
vortex_Eqlzr_GetLeftGain(vortex, i, &gainL);
|
vortex_Eqlzr_GetLeftGain(vortex, i, &gainL);
|
||||||
vortex_Eqlzr_GetRightGain(vortex, i, &gainR);
|
vortex_Eqlzr_GetRightGain(vortex, i, &gainR);
|
||||||
|
|
|
@ -18,26 +18,26 @@ typedef struct {
|
||||||
} auxxEqCoeffSet_t;
|
} auxxEqCoeffSet_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int *this00; /*CAsp4HwIO */
|
u32 ptr_this00; /*CAsp4HwIO */
|
||||||
long this04; /* How many filters for each side (default = 10) */
|
s32 this04; /* How many filters for each side (default = 10) */
|
||||||
long this08; /* inited to cero. Stereo flag? */
|
s32 this08; /* inited to cero. Stereo flag? */
|
||||||
} eqhw_t;
|
} eqhw_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int *this00; /*CAsp4Core */
|
u32 ptr_this00; /*CAsp4Core */
|
||||||
eqhw_t this04; /* CHwEq */
|
eqhw_t this04; /* CHwEq */
|
||||||
short this08; /* Bad codec flag ? SetBypassGain: bypass gain */
|
u16 this08; /* Bad codec flag ? SetBypassGain: bypass gain */
|
||||||
short this0a;
|
u16 this0a;
|
||||||
short this0c; /* SetBypassGain: bypass gain when this28 is not set. */
|
u16 this0c; /* SetBypassGain: bypass gain when this28 is not set. */
|
||||||
short this0e;
|
u16 this0e;
|
||||||
|
|
||||||
long this10; /* How many gains are used for each side (right or left). */
|
s32 this10; /* How many gains are used for each side (right or left). */
|
||||||
u16 this14[32]; /* SetLeftGainsTarget: Left (and right?) EQ gains */
|
u16 this14_array[32]; /* SetLeftGainsTarget: Left (and right?) EQ gains */
|
||||||
long this24;
|
s32 this24;
|
||||||
long this28; /* flag related to EQ enabled or not. Gang flag ? */
|
s32 this28; /* flag related to EQ enabled or not. Gang flag ? */
|
||||||
long this54; /* SetBypass */
|
s32 this54; /* SetBypass */
|
||||||
long this58;
|
s32 this58;
|
||||||
long this5c;
|
s32 this5c;
|
||||||
/*0x60 */ auxxEqCoeffSet_t coefset;
|
/*0x60 */ auxxEqCoeffSet_t coefset;
|
||||||
/* 50 u16 word each channel. */
|
/* 50 u16 word each channel. */
|
||||||
u16 this130[20]; /* Left and Right gains */
|
u16 this130[20]; /* Left and Right gains */
|
||||||
|
|
|
@ -104,7 +104,11 @@ static u16 asEqOutStateZeros[48] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*_rodataba0:*/
|
/*_rodataba0:*/
|
||||||
static long eq_levels[32] = {
|
static u16 eq_levels[64] = {
|
||||||
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
|
|
@ -95,7 +95,7 @@ static int __devinit snd_vortex_midi(vortex_t * vortex)
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
port = (unsigned long)(vortex->mmio + (VORTEX_MIDI_DATA >> 2));
|
port = (unsigned long)(vortex->mmio + VORTEX_MIDI_DATA);
|
||||||
if ((temp =
|
if ((temp =
|
||||||
snd_mpu401_uart_new(vortex->card, 0, MPU401_HW_AUREAL, port,
|
snd_mpu401_uart_new(vortex->card, 0, MPU401_HW_AUREAL, port,
|
||||||
1, 0, 0, &rmidi)) != 0) {
|
1, 0, 0, &rmidi)) != 0) {
|
||||||
|
@ -105,7 +105,7 @@ static int __devinit snd_vortex_midi(vortex_t * vortex)
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
mpu = rmidi->private_data;
|
mpu = rmidi->private_data;
|
||||||
mpu->cport = (unsigned long)(vortex->mmio + (VORTEX_MIDI_CMD >> 2));
|
mpu->cport = (unsigned long)(vortex->mmio + VORTEX_MIDI_CMD);
|
||||||
#endif
|
#endif
|
||||||
vortex->rmidi = rmidi;
|
vortex->rmidi = rmidi;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -32,7 +32,7 @@ static void vortex_connection_mixin_mix(vortex_t * vortex, int en,
|
||||||
unsigned char mix, int a);
|
unsigned char mix, int a);
|
||||||
static void vortex_fifo_wtinitialize(vortex_t * vortex, int fifo, int j);
|
static void vortex_fifo_wtinitialize(vortex_t * vortex, int fifo, int j);
|
||||||
static int vortex_wt_SetReg(vortex_t * vortex, unsigned char reg, int wt,
|
static int vortex_wt_SetReg(vortex_t * vortex, unsigned char reg, int wt,
|
||||||
unsigned long val);
|
u32 val);
|
||||||
|
|
||||||
/* WT */
|
/* WT */
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ static int vortex_wt_GetReg(vortex_t * vortex, char reg, int wt)
|
||||||
/* WT hardware abstraction layer generic register interface. */
|
/* WT hardware abstraction layer generic register interface. */
|
||||||
static int
|
static int
|
||||||
vortex_wt_SetReg2(vortex_t * vortex, unsigned char reg, int wt,
|
vortex_wt_SetReg2(vortex_t * vortex, unsigned char reg, int wt,
|
||||||
unsigned short val)
|
u16 val)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
int eax, edx;
|
int eax, edx;
|
||||||
|
@ -190,7 +190,7 @@ vortex_wt_SetReg2(vortex_t * vortex, unsigned char reg, int wt,
|
||||||
#endif
|
#endif
|
||||||
static int
|
static int
|
||||||
vortex_wt_SetReg(vortex_t * vortex, unsigned char reg, int wt,
|
vortex_wt_SetReg(vortex_t * vortex, unsigned char reg, int wt,
|
||||||
unsigned long val)
|
u32 val)
|
||||||
{
|
{
|
||||||
int ecx;
|
int ecx;
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ vortex_wt_SetReg(vortex_t * vortex, unsigned char reg, int wt,
|
||||||
|
|
||||||
static void vortex_wt_init(vortex_t * vortex)
|
static void vortex_wt_init(vortex_t * vortex)
|
||||||
{
|
{
|
||||||
int var4, var8, varc, var10 = 0, edi;
|
u32 var4, var8, varc, var10 = 0, edi;
|
||||||
|
|
||||||
var10 &= 0xFFFFFFE3;
|
var10 &= 0xFFFFFFE3;
|
||||||
var10 |= 0x22;
|
var10 |= 0x22;
|
||||||
|
@ -353,7 +353,7 @@ static void vortex_wt_SetVolume(vortex_t * vortex, int wt, int vol[])
|
||||||
static void vortex_wt_SetFrequency(vortex_t * vortex, int wt, unsigned int sr)
|
static void vortex_wt_SetFrequency(vortex_t * vortex, int wt, unsigned int sr)
|
||||||
{
|
{
|
||||||
wt_voice_t *voice = &(vortex->wt_voice[wt]);
|
wt_voice_t *voice = &(vortex->wt_voice[wt]);
|
||||||
long int eax, edx;
|
u32 eax, edx;
|
||||||
|
|
||||||
//FIXME: 64 bit operation.
|
//FIXME: 64 bit operation.
|
||||||
eax = ((sr << 0xf) * 0x57619F1) & 0xffffffff;
|
eax = ((sr << 0xf) * 0x57619F1) & 0xffffffff;
|
||||||
|
|
|
@ -53,11 +53,11 @@ enum {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int parm0; /* this_1E4 */
|
u32 parm0; /* this_1E4 */
|
||||||
unsigned int parm1; /* this_1E8 */
|
u32 parm1; /* this_1E8 */
|
||||||
unsigned int parm2; /* this_1EC */
|
u32 parm2; /* this_1EC */
|
||||||
unsigned int parm3; /* this_1F0 */
|
u32 parm3; /* this_1F0 */
|
||||||
unsigned int this_1D0;
|
u32 this_1D0;
|
||||||
} wt_voice_t;
|
} wt_voice_t;
|
||||||
|
|
||||||
#endif /* _AU88X0_WT_H */
|
#endif /* _AU88X0_WT_H */
|
||||||
|
|
|
@ -562,7 +562,7 @@ static void
|
||||||
vortex_XtalkHw_SetDelay(vortex_t * vortex, unsigned short right,
|
vortex_XtalkHw_SetDelay(vortex_t * vortex, unsigned short right,
|
||||||
unsigned short left)
|
unsigned short left)
|
||||||
{
|
{
|
||||||
int esp0 = 0;
|
u32 esp0 = 0;
|
||||||
|
|
||||||
esp0 &= 0x1FFFFFFF;
|
esp0 &= 0x1FFFFFFF;
|
||||||
esp0 |= 0xA0000000;
|
esp0 |= 0xA0000000;
|
||||||
|
@ -632,18 +632,18 @@ static void vortex_XtalkHw_GetRightDline(vortex_t * vortex, xtalk_dline_t dline)
|
||||||
/* Control/Global stuff */
|
/* Control/Global stuff */
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void vortex_XtalkHw_SetControlReg(vortex_t * vortex, unsigned long ctrl)
|
static void vortex_XtalkHw_SetControlReg(vortex_t * vortex, u32 ctrl)
|
||||||
{
|
{
|
||||||
hwwrite(vortex->mmio, 0x24660, ctrl);
|
hwwrite(vortex->mmio, 0x24660, ctrl);
|
||||||
}
|
}
|
||||||
static void vortex_XtalkHw_GetControlReg(vortex_t * vortex, unsigned long *ctrl)
|
static void vortex_XtalkHw_GetControlReg(vortex_t * vortex, u32 *ctrl)
|
||||||
{
|
{
|
||||||
*ctrl = hwread(vortex->mmio, 0x24660);
|
*ctrl = hwread(vortex->mmio, 0x24660);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
static void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, int sr)
|
static void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, u32 sr)
|
||||||
{
|
{
|
||||||
int temp;
|
u32 temp;
|
||||||
|
|
||||||
temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
|
temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
|
||||||
temp = (temp & 0xffffff07) | ((sr & 0x1f) << 3);
|
temp = (temp & 0xffffff07) | ((sr & 0x1f) << 3);
|
||||||
|
@ -651,7 +651,7 @@ static void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, int sr)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void vortex_XtalkHw_GetSampleRate(vortex_t * vortex, int *sr)
|
static void vortex_XtalkHw_GetSampleRate(vortex_t * vortex, u32 *sr)
|
||||||
{
|
{
|
||||||
*sr = (hwread(vortex->mmio, 0x24660) >> 3) & 0x1f;
|
*sr = (hwread(vortex->mmio, 0x24660) >> 3) & 0x1f;
|
||||||
}
|
}
|
||||||
|
@ -659,7 +659,7 @@ static void vortex_XtalkHw_GetSampleRate(vortex_t * vortex, int *sr)
|
||||||
#endif
|
#endif
|
||||||
static void vortex_XtalkHw_Enable(vortex_t * vortex)
|
static void vortex_XtalkHw_Enable(vortex_t * vortex)
|
||||||
{
|
{
|
||||||
int temp;
|
u32 temp;
|
||||||
|
|
||||||
temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
|
temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
|
||||||
temp |= 1;
|
temp |= 1;
|
||||||
|
@ -669,7 +669,7 @@ static void vortex_XtalkHw_Enable(vortex_t * vortex)
|
||||||
|
|
||||||
static void vortex_XtalkHw_Disable(vortex_t * vortex)
|
static void vortex_XtalkHw_Disable(vortex_t * vortex)
|
||||||
{
|
{
|
||||||
int temp;
|
u32 temp;
|
||||||
|
|
||||||
temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
|
temp = (hwread(vortex->mmio, 0x24660) & 0x1FFFFFFF) | 0xC0000000;
|
||||||
temp &= 0xfffffffe;
|
temp &= 0xfffffffe;
|
||||||
|
|
|
@ -39,16 +39,16 @@
|
||||||
#define XT_SPEAKER1 3
|
#define XT_SPEAKER1 3
|
||||||
#define XT_DIAMOND 4
|
#define XT_DIAMOND 4
|
||||||
|
|
||||||
typedef long xtalk_dline_t[XTDLINE_SZ];
|
typedef u32 xtalk_dline_t[XTDLINE_SZ];
|
||||||
typedef short xtalk_gains_t[XTGAINS_SZ];
|
typedef u16 xtalk_gains_t[XTGAINS_SZ];
|
||||||
typedef short xtalk_instate_t[XTINST_SZ];
|
typedef u16 xtalk_instate_t[XTINST_SZ];
|
||||||
typedef short xtalk_coefs_t[5][5];
|
typedef u16 xtalk_coefs_t[5][5];
|
||||||
typedef short xtalk_state_t[5][4];
|
typedef u16 xtalk_state_t[5][4];
|
||||||
|
|
||||||
static void vortex_XtalkHw_SetGains(vortex_t * vortex,
|
static void vortex_XtalkHw_SetGains(vortex_t * vortex,
|
||||||
xtalk_gains_t const gains);
|
xtalk_gains_t const gains);
|
||||||
static void vortex_XtalkHw_SetGainsAllChan(vortex_t * vortex);
|
static void vortex_XtalkHw_SetGainsAllChan(vortex_t * vortex);
|
||||||
static void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, int sr);
|
static void vortex_XtalkHw_SetSampleRate(vortex_t * vortex, u32 sr);
|
||||||
static void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
|
static void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
|
||||||
static void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
|
static void vortex_XtalkHw_ProgramPipe(vortex_t * vortex);
|
||||||
static void vortex_XtalkHw_ProgramXtalkWide(vortex_t * vortex);
|
static void vortex_XtalkHw_ProgramXtalkWide(vortex_t * vortex);
|
||||||
|
|
Loading…
Add table
Reference in a new issue