From: Ralf Baechle Update the code for the NEC DDB family. Signed-off-by: Andrew Morton --- 25-akpm/arch/mips/Kconfig | 3 + 25-akpm/arch/mips/configs/ddb5476_defconfig | 52 ++++++++++++++++++++++++-- 25-akpm/arch/mips/configs/ddb5477_defconfig | 51 +++++++++++++++++++++++-- 25-akpm/arch/mips/ddb5xxx/ddb5074/irq.c | 1 25-akpm/arch/mips/ddb5xxx/ddb5074/setup.c | 1 25-akpm/arch/mips/ddb5xxx/ddb5476/setup.c | 1 25-akpm/include/linux/pci_ids.h | 1 25-akpm/sound/oss/nec_vrc5477.c | 55 ++++++++++++++++++++++++---- 8 files changed, 148 insertions(+), 17 deletions(-) diff -puN arch/mips/configs/ddb5476_defconfig~mips-nec-ddb-board-updates arch/mips/configs/ddb5476_defconfig --- 25/arch/mips/configs/ddb5476_defconfig~mips-nec-ddb-board-updates 2005-01-29 11:26:11.116058024 -0800 +++ 25-akpm/arch/mips/configs/ddb5476_defconfig 2005-01-29 11:26:11.135055136 -0800 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.10-rc2 -# Sun Nov 21 14:11:57 2004 +# Linux kernel version: 2.6.11-rc2 +# Wed Jan 26 02:49:02 2005 # CONFIG_MIPS=y # CONFIG_MIPS64 is not set @@ -79,6 +79,7 @@ CONFIG_DDB5476=y # CONFIG_SNI_RM200_PCI is not set # CONFIG_TOSHIBA_RBTX4927 is not set CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_HAVE_DEC_LOCK=y CONFIG_DMA_NONCOHERENT=y CONFIG_I8259=y @@ -86,7 +87,6 @@ CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_IRQ_CPU=y CONFIG_DDB5XXX_COMMON=y CONFIG_MIPS_L1_CACHE_SHIFT=5 -CONFIG_FB=y CONFIG_HAVE_STD_PC_SERIAL_PORT=y # @@ -130,6 +130,21 @@ CONFIG_ISA=y CONFIG_MMU=y # +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# PC-card bridges +# +CONFIG_PCMCIA_PROBE=y + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set + +# # Executable file formats # CONFIG_BINFMT_ELF=y @@ -145,6 +160,7 @@ CONFIG_TRAD_SIGNALS=y # CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_FW_LOADER is not set # # Memory Technology Devices (MTD) @@ -170,10 +186,12 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set # CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_SX8 is not set # CONFIG_BLK_DEV_RAM is not set +CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_INITRAMFS_SOURCE="" # CONFIG_LBD is not set CONFIG_CDROM_PKTCDVD=y @@ -187,6 +205,7 @@ CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y +CONFIG_ATA_OVER_ETH=y # # ATA/ATAPI/MFM/RLL support @@ -424,6 +443,7 @@ CONFIG_SERIO=y CONFIG_SERIO_SERPORT=y # CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_PCIPS2 is not set +# CONFIG_SERIO_LIBPS2 is not set CONFIG_SERIO_RAW=y # @@ -478,7 +498,6 @@ CONFIG_LEGACY_PTY_COUNT=256 # # Ftape, the floppy tape device driver # -# CONFIG_AGP is not set # CONFIG_DRM is not set # CONFIG_RAW_DRIVER is not set @@ -509,6 +528,7 @@ CONFIG_LEGACY_PTY_COUNT=256 # # Graphics support # +CONFIG_FB=y # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set # CONFIG_FB_CIRRUS is not set @@ -544,6 +564,7 @@ CONFIG_DUMMY_CONSOLE=y # Logo configuration # # CONFIG_LOGO is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Sound @@ -558,11 +579,25 @@ CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y # +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information +# + +# # USB Gadget Support # # CONFIG_USB_GADGET is not set # +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# InfiniBand support +# +# CONFIG_INFINIBAND is not set + +# # File systems # CONFIG_EXT2_FS=y @@ -654,6 +689,11 @@ CONFIG_MSDOS_PARTITION=y # CONFIG_NLS is not set # +# Profiling support +# +# CONFIG_PROFILING is not set + +# # Kernel hacking # # CONFIG_DEBUG_KERNEL is not set @@ -673,6 +713,10 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y # CONFIG_CRYPTO is not set # +# Hardware crypto devices +# + +# # Library routines # # CONFIG_CRC_CCITT is not set diff -puN arch/mips/configs/ddb5477_defconfig~mips-nec-ddb-board-updates arch/mips/configs/ddb5477_defconfig --- 25/arch/mips/configs/ddb5477_defconfig~mips-nec-ddb-board-updates 2005-01-29 11:26:11.118057720 -0800 +++ 25-akpm/arch/mips/configs/ddb5477_defconfig 2005-01-29 11:26:11.136054984 -0800 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.10-rc2 -# Sun Nov 21 14:11:58 2004 +# Linux kernel version: 2.6.11-rc2 +# Wed Jan 26 02:49:02 2005 # CONFIG_MIPS=y # CONFIG_MIPS64 is not set @@ -80,6 +80,7 @@ CONFIG_DDB5477_BUS_FREQUENCY=0 # CONFIG_SNI_RM200_PCI is not set # CONFIG_TOSHIBA_RBTX4927 is not set CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_HAVE_DEC_LOCK=y CONFIG_DMA_NONCOHERENT=y CONFIG_I8259=y @@ -87,7 +88,6 @@ CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_IRQ_CPU=y CONFIG_DDB5XXX_COMMON=y CONFIG_MIPS_L1_CACHE_SHIFT=5 -# CONFIG_FB is not set # # CPU selection @@ -129,6 +129,20 @@ CONFIG_PCI_NAMES=y CONFIG_MMU=y # +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# PC-card bridges +# + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set + +# # Executable file formats # CONFIG_BINFMT_ELF=y @@ -144,6 +158,7 @@ CONFIG_TRAD_SIGNALS=y # CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_FW_LOADER is not set # # Memory Technology Devices (MTD) @@ -167,10 +182,12 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set # CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_SX8 is not set # CONFIG_BLK_DEV_RAM is not set +CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_INITRAMFS_SOURCE="" # CONFIG_LBD is not set CONFIG_CDROM_PKTCDVD=y @@ -184,6 +201,7 @@ CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y +CONFIG_ATA_OVER_ETH=y # # ATA/ATAPI/MFM/RLL support @@ -406,6 +424,7 @@ CONFIG_SERIO=y CONFIG_SERIO_SERPORT=y # CONFIG_SERIO_CT82C710 is not set # CONFIG_SERIO_PCIPS2 is not set +# CONFIG_SERIO_LIBPS2 is not set CONFIG_SERIO_RAW=y # @@ -460,7 +479,6 @@ CONFIG_LEGACY_PTY_COUNT=256 # # Ftape, the floppy tape device driver # -# CONFIG_AGP is not set # CONFIG_DRM is not set # CONFIG_RAW_DRIVER is not set @@ -491,12 +509,14 @@ CONFIG_LEGACY_PTY_COUNT=256 # # Graphics support # +# CONFIG_FB is not set # # Console display driver support # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Sound @@ -511,11 +531,25 @@ CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y # +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information +# + +# # USB Gadget Support # # CONFIG_USB_GADGET is not set # +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# InfiniBand support +# +# CONFIG_INFINIBAND is not set + +# # File systems # CONFIG_EXT2_FS=y @@ -609,6 +643,11 @@ CONFIG_MSDOS_PARTITION=y # CONFIG_NLS is not set # +# Profiling support +# +# CONFIG_PROFILING is not set + +# # Kernel hacking # # CONFIG_DEBUG_KERNEL is not set @@ -628,6 +667,10 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y # CONFIG_CRYPTO is not set # +# Hardware crypto devices +# + +# # Library routines # # CONFIG_CRC_CCITT is not set diff -puN arch/mips/ddb5xxx/ddb5074/irq.c~mips-nec-ddb-board-updates arch/mips/ddb5xxx/ddb5074/irq.c --- 25/arch/mips/ddb5xxx/ddb5074/irq.c~mips-nec-ddb-board-updates 2005-01-29 11:26:11.119057568 -0800 +++ 25-akpm/arch/mips/ddb5xxx/ddb5074/irq.c 2005-01-29 11:26:11.130055896 -0800 @@ -4,7 +4,6 @@ * Copyright (C) 2000 Geert Uytterhoeven * Sony Software Development Center Europe (SDCE), Brussels */ -#include #include #include #include diff -puN arch/mips/ddb5xxx/ddb5074/setup.c~mips-nec-ddb-board-updates arch/mips/ddb5xxx/ddb5074/setup.c --- 25/arch/mips/ddb5xxx/ddb5074/setup.c~mips-nec-ddb-board-updates 2005-01-29 11:26:11.121057264 -0800 +++ 25-akpm/arch/mips/ddb5xxx/ddb5074/setup.c 2005-01-29 11:26:11.131055744 -0800 @@ -4,7 +4,6 @@ * Copyright (C) 2000 Geert Uytterhoeven * Sony Software Development Center Europe (SDCE), Brussels */ -#include #include #include #include diff -puN arch/mips/ddb5xxx/ddb5476/setup.c~mips-nec-ddb-board-updates arch/mips/ddb5xxx/ddb5476/setup.c --- 25/arch/mips/ddb5xxx/ddb5476/setup.c~mips-nec-ddb-board-updates 2005-01-29 11:26:11.122057112 -0800 +++ 25-akpm/arch/mips/ddb5xxx/ddb5476/setup.c 2005-01-29 11:26:11.132055592 -0800 @@ -4,7 +4,6 @@ * Copyright (C) 2000 Geert Uytterhoeven * Sony Software Development Center Europe (SDCE), Brussels */ -#include #include #include #include diff -puN arch/mips/Kconfig~mips-nec-ddb-board-updates arch/mips/Kconfig --- 25/arch/mips/Kconfig~mips-nec-ddb-board-updates 2005-01-29 11:26:11.123056960 -0800 +++ 25-akpm/arch/mips/Kconfig 2005-01-29 11:26:11.223041760 -0800 @@ -403,6 +403,7 @@ config DDB5074 select HAVE_STD_PC_SERIAL_PORT select HW_HAS_PCI select IRQ_CPU + select I8259 select ISA help This enables support for the VR5000-based NEC DDB Vrc-5074 @@ -414,6 +415,7 @@ config DDB5476 select HAVE_STD_PC_SERIAL_PORT select HW_HAS_PCI select IRQ_CPU + select I8259 select ISA help This enables support for the R5432-based NEC DDB Vrc-5476 @@ -427,6 +429,7 @@ config DDB5477 bool "Support for NEC DDB Vrc-5477" select DMA_NONCOHERENT select HW_HAS_PCI + select I8259 select IRQ_CPU help This enables support for the R5432-based NEC DDB Vrc-5477, diff -puN include/linux/pci_ids.h~mips-nec-ddb-board-updates include/linux/pci_ids.h --- 25/include/linux/pci_ids.h~mips-nec-ddb-board-updates 2005-01-29 11:26:11.125056656 -0800 +++ 25-akpm/include/linux/pci_ids.h 2005-01-29 11:26:11.226041304 -0800 @@ -1035,6 +1035,7 @@ #define PCI_DEVICE_ID_AL_M1523 0x1523 #define PCI_DEVICE_ID_AL_M1531 0x1531 #define PCI_DEVICE_ID_AL_M1533 0x1533 +#define PCI_DEVICE_ID_AL_M1535 0x1535 #define PCI_DEVICE_ID_AL_M1541 0x1541 #define PCI_DEVICE_ID_AL_M1543 0x1543 #define PCI_DEVICE_ID_AL_M1563 0x1563 diff -puN sound/oss/nec_vrc5477.c~mips-nec-ddb-board-updates sound/oss/nec_vrc5477.c --- 25/sound/oss/nec_vrc5477.c~mips-nec-ddb-board-updates 2005-01-29 11:26:11.127056352 -0800 +++ 25-akpm/sound/oss/nec_vrc5477.c 2005-01-29 11:26:11.134055288 -0800 @@ -78,7 +78,6 @@ #include #include #include -#include #include #include #include @@ -396,10 +395,47 @@ static void set_dac_rate(struct vrc5477_ } } +static int ac97_codec_not_present(struct ac97_codec *codec) +{ + struct vrc5477_ac97_state *s = + (struct vrc5477_ac97_state *)codec->private_data; + unsigned long flags; + unsigned short count = 0xffff; + + spin_lock_irqsave(&s->lock, flags); + + /* wait until we can access codec registers */ + do { + if (!(inl(s->io + VRC5477_CODEC_WR) & 0x80000000)) + break; + } while (--count); + + if (count == 0) { + spin_unlock_irqrestore(&s->lock, flags); + return -1; + } + + /* write 0 to reset */ + outl((AC97_RESET << 16) | 0, s->io + VRC5477_CODEC_WR); + + /* test whether we get a response from ac97 chip */ + count = 0xffff; + do { + if (!(inl(s->io + VRC5477_CODEC_WR) & 0x80000000)) + break; + } while (--count); + + if (count == 0) { + spin_unlock_irqrestore(&s->lock, flags); + return -1; + } + spin_unlock_irqrestore(&s->lock, flags); + return 0; +} /* --------------------------------------------------------------------- */ -static inline void +extern inline void stop_dac(struct vrc5477_ac97_state *s) { struct dmabuf* db = &s->dma_dac; @@ -517,7 +553,7 @@ static void start_dac(struct vrc5477_ac9 spin_unlock_irqrestore(&s->lock, flags); } -static inline void stop_adc(struct vrc5477_ac97_state *s) +extern inline void stop_adc(struct vrc5477_ac97_state *s) { struct dmabuf* db = &s->dma_adc; unsigned long flags; @@ -616,7 +652,7 @@ static void start_adc(struct vrc5477_ac9 #define DMABUF_DEFAULTORDER (16-PAGE_SHIFT) #define DMABUF_MINORDER 1 -static inline void dealloc_dmabuf(struct vrc5477_ac97_state *s, +extern inline void dealloc_dmabuf(struct vrc5477_ac97_state *s, struct dmabuf *db) { if (db->lbuf) { @@ -1858,6 +1894,13 @@ static int __devinit vrc5477_ac97_probe( } + /* test if get response from ac97, if not return */ + if (ac97_codec_not_present(&(s->codec))) { + printk(KERN_ERR PFX "no ac97 codec\n"); + goto err_region; + + } + if (!request_region(s->io, pci_resource_len(pcidev,0), VRC5477_AC97_MODULE_NAME)) { printk(KERN_ERR PFX "io ports %#lx->%#lx in use\n", @@ -1973,7 +2016,7 @@ static void __devexit vrc5477_ac97_remov remove_proc_entry(VRC5477_AC97_MODULE_NAME, NULL); #endif /* VRC5477_AC97_DEBUG */ - synchronize_irq(s->irq); + synchronize_irq(); free_irq(s->irq, s); release_region(s->io, pci_resource_len(dev,0)); unregister_sound_dsp(s->dev_audio); @@ -1996,7 +2039,7 @@ static struct pci_driver vrc5477_ac97_dr .name = VRC5477_AC97_MODULE_NAME, .id_table = id_table, .probe = vrc5477_ac97_probe, - .remove = __devexit_p(vrc5477_ac97_remove), + .remove = __devexit_p(vrc5477_ac97_remove) }; static int __init init_vrc5477_ac97(void) _