You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(165) |
Sep
(240) |
Oct
(424) |
Nov
(526) |
Dec
(293) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(242) |
Feb
(149) |
Mar
(143) |
Apr
(143) |
May
(76) |
Jun
(59) |
Jul
(20) |
Aug
(2) |
Sep
(49) |
Oct
(1) |
Nov
(4) |
Dec
|
2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2004 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(72) |
Jul
(36) |
Aug
(9) |
Sep
(16) |
Oct
(23) |
Nov
(9) |
Dec
(3) |
2010 |
Jan
|
Feb
(1) |
Mar
(35) |
Apr
(44) |
May
(56) |
Jun
(71) |
Jul
(41) |
Aug
(41) |
Sep
(22) |
Oct
(3) |
Nov
(1) |
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(25) |
Oct
(105) |
Nov
(15) |
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Pete P. <pp...@us...> - 2002-05-09 17:22:37
|
Update of /cvsroot/linux-mips/linux/arch/mips/lx In directory usw-pr-cvs1:/tmp/cvs-serv27584/arch/mips/lx Added Files: Makefile dbg_io.c int-handler.S irq.c lx.c lxRi.c lx_io.c lxpci.c lxserial.c puts.c rtc.c startice.cmd Log Message: Added support for the Lexra 4189 CPU and eval board. Initial port completed by Lexra. --- NEW FILE: Makefile --- # # Makefile for the Lexra specific kernel interface routines # under Linux. # # Note! Dependencies are done automagically by 'make dep', which also # removes any old dependencies. DON'T put your own dependencies here # unless it's something special (ie not a .c file). # # Note 2! The CFLAGS definitions are now in the main makefile... # # Note: for indenting files, use # indent -bl -bls -bad -bli0 -di4 -i4 -nlp .S.s: $(CPP) $(CFLAGS) $< -o $*.s .S.o: $(CC) $(CFLAGS) -c $< -o $*.o all: lx4189.o O_TARGET := lx4189.o obj-y := lx.o rtc.o irq.o int-handler.o lxpci.o lx_io.o lxserial.o lxRi.o puts.o obj-$(CONFIG_REMOTE_DEBUG) += dbg_io.o clean: rm -f lx4189.o lx.o include $(TOPDIR)/Rules.make --- NEW FILE: dbg_io.c --- #include <linux/config.h> #include <asm/io.h> #include <asm/lexra/lx_defs.h> #include <asm/lexra/lx_io.h> #ifdef CONFIG_REMOTE_DEBUG /* * FIXME the user should be able to select the * uart to be used for debugging. */ #define DEBUG_BASE LX_UART2_REGS_BASE static u32 base = DEBUG_BASE; static inline unsigned int serial_inl(u32 base, u32 offset) { return lx_inl((unsigned int *)(base + offset)); } static inline void serial_outl(u32 base, u32 offset, u32 value) { lx_outl(value, (unsigned int *)(base+offset)); } static inline unsigned int serial_inb(u32 base, u32 offset) { return lx_inb((unsigned int *)(base + offset)); } static inline void serial_outb(u32 base, u32 offset, char value) { lx_outb(value, (unsigned int *)(base+offset)); } void debugInit() { u32 reg; /* disable interrupts */ reg = (serial_inl(base, LX_UART_CONF) & ~(LX_UART_TIE | LX_UART_RIE)); serial_outl(base, LX_UART_CONF, reg); /* Discard everything in the RX port */ while( (serial_inl(base, LX_UART_CONF) & LX_UART_RX_READY) != 0 ) serial_inb(base, LX_UART_DATA); /* set up baud rate */ reg = (serial_inl(base, LX_UART_CONF) & ~LX_CBAUD); serial_outl(base, LX_UART_CONF, reg); reg = (serial_inl(base, LX_UART_CONF) | LX_QUOT_DEFAULT); serial_outl(base, LX_UART_CONF, reg); } static int remoteDebugInitialized = 0; u8 getDebugChar(void) { if (!remoteDebugInitialized) { remoteDebugInitialized = 1; debugInit(); } while (!((serial_inl(base, LX_UART_CONF)) & LX_UART_RX_READY)) ; return lx_inb(base + LX_UART_DATA); } int putDebugChar(u8 byte) { unsigned int status, tmout = 10000; if (!remoteDebugInitialized) { remoteDebugInitialized = 1; debugInit(); } do { status = serial_inl(base, LX_UART_CONF); if (--tmout == 0) break; } while(!(status & LX_UART_TX_READY)); serial_outb(base, LX_UART_DATA, byte); return 1; } #endif --- NEW FILE: int-handler.S --- /* *arch/mips/lx/int-handler.S */ #include <asm/asm.h> #include <asm/regdef.h> #include <asm/mipsregs.h> #include <asm/stackframe.h> #include <asm/addrspace.h> /** * This functions within are written in assembly. */ #define __ASSEMBLY__ #include <asm/lexra/lxirq.h> #include <asm/lexra/lx_defs.h> .text .set noreorder /** * @file int-handler.S * * This file contains the assembly language interrupt dispatchers for the * Lexra board. There are two routines provided. The first, lx_handle_int, * is registered as the MIPS interrupt exception handler, therefore, handles * the MIPS style interrupts. The second handler lx_vec_handle_int, handles * the Lexra vectored interrupts. Each of the vectored interrupt vectors have * been coded to jump to this routine. This allows the different types of * interrupts to be handled using the same functions in the higher level code. * * We follow the model in the Indy interrupt code by David Miller, where he * says: a lot of complication here is taken away because: * * 1) We handle one interrupt and return, sitting in a loop * and moving across all the pending IRQ bits in the cause * register is _NOT_ the answer, the common case is one * pending IRQ so optimize in that direction. * * 2) We need not check against bits in the status register * IRQ mask, that would make this routine slow as hell. * * 3) Linux only thinks in terms of all IRQs on or all IRQs * off, nothing in between like BSD spl() brain-damage. * * LX4xxx/5xxx interrupt mapping: *@verbatim MIPS IRQ Source _________ ________ 0 Software (ignored) 1 Software (ignored) 2 PCI in A,B,C and D 3 UART 1&2 tx&rx 4 BUSCLK Counter 5 SYSCLK Counter 6 UARTCLK Counter 7 System Timer We handle the IRQ according to _our_ priority. The priority of an interrupt may be changed by changing its location in its mask and irq_nr tables through modification of the initialization function lx_init_PB20K(). The default priority is: Highest ---- System Timer UARTCLK Counter BUSCLK Counter BUSCLK Counter UART 1&2 tx&rx PCI in A,B,C and D SW1 Lowest ---- SW0 @endverbatim * The highest priority pending interrupt is handled first * then we just return, if multiple IRQs are pending then we will just take * another exception, big deal. * */ /** * The interrupt handler for Lexra. * The highest priority pending interrupt is handled first * then we just return, if multiple IRQs are pending then we will just take * another exception. * Spurious interrupts are ignored. */ #ifdef DOC_GENERATE asmlinkage void lx_handle_int(void) {}; #else .align 5 NESTED(lx_handle_int, PT_SIZE, ra) .set noat SAVE_ALL CLI # TEST: interrupts should be off .set at .set noreorder /* * Get pending Interrupts */ mfc0 t0,CP0_CAUSE # get pending interrupts mfc0 t2,CP0_STATUS la t1,cpu_mask_tbl andi t0,0xff00 and t0,t2 # isolate allowed ones /* * detection of spurious interrupts */ beq t0,zero,return_ nop # delay slot /* * Find irq with highest priority */ 1: lw t2,(t1) move t3,t0 and t3,t2 beq t3,zero,1b addu t1,PTRSIZE # delay slot /* * Do the low-level stuff */ lw a0,%lo(cpu_irq_nr-cpu_mask_tbl-PTRSIZE)(t1) nop bgez a0, handle_it # irq_nr >= 0? # irq_nr < 0: just exit nop j return_ nop # delay slot handle_it: jal do_IRQ move a1,sp return_: j ret_from_irq nop END(lx_handle_int) #endif /** * This is the interrupt handler for the Lexra vectored interrupts. Each of * the vectors have been setup to jump to this routine. Similar in operation * to the MIPS interrupt handler lx_handle_int(). */ #ifdef DOC_GENERATE asmlinkage void lx_vec_handle_int(void){}; #else NESTED(lx_vec_handle_int, PT_SIZE, ra) .set noat SAVE_ALL CLI # TEST: interrupts should be off .set at .set noreorder /** * Get pending Interrupts using * hand compiled Lexra specific instructions */ .word (MFLXCO | (8<<16) | (LX_ECAUSE<<11)) nop nop .word (MFLXCO | (10<<16) | (LX_ESTATUS<<11)) nop nop la t1,lx_mask_tbl and t0,t2 # isolate allowed ones /* * detection of spurious interrupts */ beq t0,zero,lx_return_ nop # delay slot /** * Find irq with highest priority, if none found just return. */ 1: lw t2,(t1) move t3,t0 and t3,t2 beq t3,zero,1b addu t1,PTRSIZE # delay slot /* * Do the low-level stuff */ lw a0,%lo(lx_irq_nr-lx_mask_tbl-PTRSIZE)(t1) nop bgez a0, lx_handle_it # irq_nr >= 0? # irq_nr < 0: just exit nop j lx_return_ nop # delay slot lx_handle_it: jal do_IRQ move a1,sp lx_return_: j ret_from_irq nop END(lx_vec_handle_int) #endif /** * The function for masking the Lexra vectored interrupts using Lexra specific * opcodes. * @param mask Compliment of mask passed in through register a0. */ #ifdef DOC_GENERATE inline void mask_lx_interrupt(unsigned int mask){}; #else LEAF(mask_lx_interrupt) #compliment of mask in a0 move t0, a0 .word (MFLXCO | (9<<16) | (LX_ESTATUS<<11)) #get status reg t1 nop nop and t0, t1 # and the register with the mask complement .word (MTLXCO | (8<<16) | (LX_ESTATUS<<11)) # copy back status nop nop j ra nop END(mask_lx_interrupt) #endif /** * The function used for unmasking the Lexra vectored interrupts using Lexra * specific opcodes. * @param mask Mask passed in through register a0. */ #ifdef DOC_GENERATE inline void unmask_lx_interrupt(unsigned int mask){}; #else LEAF(unmask_lx_interrupt) move t0, a0 .word (MFLXCO | (9<<16) | (LX_ESTATUS<<11)) #get status reg t1 nop nop or t0, t1, t0 # and the register with the mask complement .word (MTLXCO | (8<<16) | (LX_ESTATUS<<11)) # copy back status nop nop j ra nop END(unmask_lx_interrupt) #endif /** * The function used for unmasking the Lexra vectored interrupts using Lexra * specific opcodes. * @param reg Pointer to the location to store the value in the cause register. */ #ifdef DOC_GENERATE asmlinkage void read_lx_cause(unsigned int* reg){}; #else LEAF(read_lx_cause) .word (MFLXCO | (8<<16) | (LX_ECAUSE<<11)) nop nop sw t0, 0(a0) nop j ra nop END(read_lx_cause) #endif /** * A function used to read the Lexra processor revision register. * @return The value in the revision register. */ #ifdef DOC_GENERATE asmlinkage unsigned int read_lx_revision(void){}; #else LEAF(read_lx_revision) .word (MFLXCO | (2<<16) | (3<<11)) nop nop j ra nop END(read_lx_revision) #endif /** * The function used for reading the Lexra vectored interrupt status register * using Lexra specific opcodes. * @param reg Pointer to the location to store the value in the status register. */ #ifdef DOC_GENERATE asmlinkage void read_lx_status(unsigned int* reg){}; #else LEAF(read_lx_status) .word (MFLXCO | (8<<16) | (LX_ESTATUS<<11)) nop nop sw t0, 0(a0) nop j ra nop END(read_lx_status) #endif /** * The cpu_mask_tbl contains the interrupt masks for the interrupts in * the corresponding positions of the cpu_irq_nr table. It is initialised * in the funtion lx_init_lxPB20K() found in the file lx.c. */ #ifdef DOC_GENERATE unsigned long cpu_mask_tbl[8]; #else .data EXPORT(cpu_mask_tbl) cpu_mask_tbl: .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 # these two are unlikely .word 0x00000000 # to be used .word 0x0000ff00 # End of list #endif /** * This array maps each of the interrupts to a number enabling configuation * of interrupt priority. */ #ifdef DOC_GENERATE unsigned long cpu_irq_nr[8]; #else EXPORT(cpu_irq_nr) cpu_irq_nr: .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 # these two are unlikely .word 0x00000000 # to be used .word 0x00ffffff # End of list #endif /** * The lx_mask_tbl contains the interrupt masks for the interrupts in the * corresponding positions of the lx_irq_nr table. It is initialised in the * funtion lx_init_lxPB20K() found in the file lx.c. */ #ifdef DOC_GENERATE unsigned long lx_mask_tbl[8]; #else EXPORT(lx_mask_tbl) lx_mask_tbl: .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0xffffffff # EOL #endif /** * This array maps each of the interrupts to a number enabling configuation * of interrupt priority. */ #ifdef DOC_GENERATE unsigned long lx_irq_nr[8]; #else EXPORT(lx_irq_nr) lx_irq_nr: .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0x00000000 .word 0xffffffff # EOL #endif --- NEW FILE: irq.c --- /** * @file irq.c * * This file contains code to interface generic Linux interrupt handling * functions in arch/mips/kernel/irq.c. Additional * code added to implement the Lexra vectored interrupts. */ #include <linux/errno.h> #include <linux/init.h> #include <linux/kernel_stat.h> #include <linux/signal.h> #include <linux/sched.h> #include <linux/types.h> #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/timex.h> #include <linux/malloc.h> #include <linux/random.h> #include <asm/bitops.h> #include <asm/bootinfo.h> #include <asm/io.h> #include <asm/irq.h> #include <asm/mipsregs.h> #include <asm/system.h> #include <asm/lexra/lxirq.h> #include <asm/lexra/lx_defs.h> #ifdef CONFIG_REMOTE_DEBUG extern void breakpoint(void); #endif /** * External function defined in int-handler.S. This is an assembly language * routine used to mask the Lexra vectored interrupts using Lexra specific * instructions. */ extern inline void mask_lx_interrupt(unsigned int mask); /** * External function defined in int-handler.S. This is an assembly language * routine used to unmask the Lexra vectored interrupts using Lexra specific * instructions. */ extern inline void unmask_lx_interrupt(unsigned int mask); extern int pci_devices_count; extern void lx_irq_setup(void); extern void init_generic_irq(void); /** * Internal function to mask an interrupt. Will mask any of the three * types of Lexra interrupts: standard MIPS or Lexra vectored. * @param irq_nr The interrupt number to be masked. */ static inline void mask_irq(unsigned int irq_nr) { /* This is a lexra vectored interrupt */ if (lx_interrupt[irq_nr].LX_mask != 0) { mask_lx_interrupt(~lx_interrupt[irq_nr].LX_mask); } else if(lx_interrupt[irq_nr].cpu_mask != 0) { /* This is a cpu interrupt */ clear_cp0_status(lx_interrupt[irq_nr].cpu_mask); } } /** * Internal function to unmask an interrupt. Will unmask any of the three * types of Lexra interrupts: standard MIPS or Lexra vectored. * @param irq_nr The interrupt number to be unmasked. */ static inline void unmask_irq(unsigned int irq_nr) { /* This is a Lexra vectored interrupt */ if (lx_interrupt[irq_nr].LX_mask != 0) { unmask_lx_interrupt(lx_interrupt[irq_nr].LX_mask); } else if (lx_interrupt[irq_nr].cpu_mask != 0){ /* This is a cpu interrupt */ set_cp0_status(lx_interrupt[irq_nr].cpu_mask); } } /** * Following four functions are needed by arch/mips/kernel/irq.c */ static unsigned int startup_irq(unsigned int irq_nr) { if(irq_nr != PCI_ABCD) unmask_irq(irq_nr); else if(--pci_devices_count <= 0 ) unmask_irq(irq_nr); return 0; } static void shutdown_irq(unsigned int irq_nr) { mask_irq(irq_nr); } static inline void ack_level_irq(unsigned int irq_nr) { mask_irq(irq_nr); } static void end_irq(unsigned int irq_nr) { if (!(irq_desc[irq_nr].status & (IRQ_DISABLED|IRQ_INPROGRESS))) unmask_irq(irq_nr); else printk("warning: end_irq %d did not enable (%x)\n", irq_nr, irq_desc[irq_nr].status); } /** * Currently only level-triggered interrupts are considered */ static struct hw_interrupt_type level_irq_type = { "Lexra Level", startup_irq, shutdown_irq, unmask_irq, mask_irq, ack_level_irq, end_irq, NULL }; /** * Initial setup of interrupts. Called by start_kernel(). Only * function is to call the function irq_setup(). */ void __init init_IRQ(void) { int i; memset(irq_desc, 0, sizeof(irq_desc)); init_generic_irq(); lx_irq_setup(); for(i=0; i < 8; i++) { /* for 8 MIPS interrupts */ irq_desc[cpu_irq_nr[i]].handler = &level_irq_type; /* for 8 Lexra vectored interrupts */ irq_desc[lx_irq_nr[i]].handler = &level_irq_type; } #ifdef CONFIG_REMOTE_DEBUG /* If local serial I/O used for debug port, enter kgdb at once */ puts("Waiting for kgdb to connect..."); set_debug_traps(); breakpoint(); #endif } --- NEW FILE: lx.c --- /* * Copyright (C) 2001 Lexra, Inc */ #include <linux/config.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/types.h> #include <linux/mm.h> #include <linux/swap.h> #include <linux/ioport.h> #include <linux/interrupt.h> #include <linux/timex.h> #include <linux/kernel_stat.h> #include <asm/bootinfo.h> #include <asm/page.h> #include <asm/io.h> #include <asm/irq.h> #include <asm/processor.h> #include <asm/ptrace.h> #include <asm/reboot.h> #include <asm/mc146818rtc.h> #include <linux/version.h> #include <linux/bootmem.h> #include <asm/irq.h> #include <linux/mc146818rtc.h> #include <asm/lexra/lxirq.h> #include <asm/lexra/lx_defs.h> /** * The control register addresses of the Lexra BUSCLK timer. */ #define BUSCLK_CTRL_ADDR 0xbc000010 /** * The control register addresses of the Lexra SYSCLK timer. */ #define SYSCLK_CTRL_ADDR 0xbc000014 /** * The control register addresses of the Lexra UARTCLK timer. */ #define UARTCLK_CTRL_ADDR 0xbc000018 /** * The control register addresses of the Lexra System timer. */ #define SYS_TIMER_ADDR 0xbc000030 /* This is for machines which generate the exact clock. */ #define USECS_PER_JIFFY (1000000/HZ) /* sys_timer_reload equals the number of system timer ticks per 10ms */ static unsigned long sys_timer_reload; /* usecs per counter cycle, shifted to left by 32 bits */ static unsigned int sll32_usecs_per_cycle=0; /* Cycle counter value at the previous timer interrupt.. */ static unsigned int timerlo; /* the function pointer to one of the gettimeoffset funcs*/ extern unsigned long (*do_gettimeoffset)(void); extern unsigned int mips_counter_frequency; /** * Function stub. Function not required for Lexra implementation of Linux. */ void page_is_ram(void) {}; /** * Function stub. Function not required for Lexra implementation of Linux. */ void prom_free_prom_memory(void) {}; /** * A structure to store parameters to be passed from the boot loader * to the kernel. */ struct bootParams lxBootParams; /** * Macro to get address of next page. * @param x Address of current page. */ #define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) /** * Macro to align the supplied address to the next page boundary * @param x Address to align. */ #define PFN_ALIGN(x) (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK) /** * Variable containing the address of the end of the kernel data */ extern int _end; /** * Variable to store the size of the RAM. */ unsigned long mem_size; /** * Boolean variable to indicate if the Lexra processor has DSP features. */ unsigned int dspProduct; /** * The xtime clock lock used to lock the xtime structure while it is being updated. */ extern rwlock_t xtime_lock; /** * Declaration of the MIPS standard interrupt dispatch function. * This function is defined in int-handler.S. */ extern asmlinkage void lx_handle_int(void); /** * Declaration of the Lexra vectored interrupt dispatch function. * This function is defined in int-handler.S. */ extern asmlinkage void lx_vec_handle_int(void); extern asmlinkage void handle_ri(void); extern char except_vec3_generic; /* for reserved instruction exception */ void lx_init_lxPB20K(void); /** * An array of lxint_t structures which store the masking information * for each of the 32 Linux interrupts. This data is used to enable/disable * either a MIPS, Lexra vectored or PCI interrupt. */ lxint_t lx_interrupt[NR_INTS]; /** * Unimplemented power control function. */ extern void lx_machine_restart(char *command); /** * Unimplemented power control function. */ extern void lx_machine_halt(void); /** * Unimplemented power control function. */ extern void lx_machine_power_off(void); extern void wbflush_setup(void); /** * The irqaction structure for the system timer. */ extern void (*board_timer_setup) (struct irqaction * irq); extern struct rtc_ops lx45xxx_rtc_ops; /** * Pointer to the system clock control register. */ volatile unsigned int* Sys_clock_ctrl_reg; /** * The default UART channel, UARTA. */ #define channel 1 /** * External function to send a character to the UART. */ extern void serial_putc(int chan, int c); /** * External function used to set an interger value to the UART as * a hexidecimal string. */ extern void int2hex(int i); /** * Variable to store the limits of the initial ramdisk. */ extern unsigned long initrd_start,initrd_end; extern void * __rd_start, * __rd_end; const char *get_system_type(void) { return "Lexra 4189"; } /** * This funtion initializes kernel variables with data from the boot * loader. */ int prom_init(int argc, char **argv, char **envp, int *prom_vec) { #ifdef CONFIG_BLK_DEV_INITRD ROOT_DEV=MKDEV(RAMDISK_MAJOR, 0); initrd_start = (unsigned long)&__rd_start; initrd_end = (unsigned long)&__rd_end; #endif memcpy(&lxBootParams.cmd_line, ((struct bootParams *)prom_vec)->cmd_line, ((struct bootParams *)prom_vec)->cmd_line_size); lxBootParams.cmd_line_size = ((struct bootParams *)prom_vec)->cmd_line_size; mips_machgroup = MACH_GROUP_LEXRA; mips_machtype = MACH_LXPB20K; mem_size = 64 << 20; printk("%d MB SDRAM.\n", (int)(mem_size >> 20)); add_memory_region(0, mem_size, BOOT_MEM_RAM); /* Redefine the end of ioport resource memory space */ ioport_resource.end = 0xbcffffff; return 0; }; unsigned long lexra_readtimer() { return *((unsigned long *)SYS_TIMER_ADDR); } unsigned long lx_gettimeoffset(void) { u32 count; unsigned long res; count = *((unsigned long *)SYS_TIMER_ADDR); /* .. relative to previous jiffy (32 bits is enough) */ count -= timerlo; __asm__("multu\t%1,%2\n\t" "mfhi\t%0" :"=r" (res) :"r" (count), "r" (sll32_usecs_per_cycle)); /* * Due to possible jiffies inconsistencies, we need to check * the result so that we'll get a timer that is monotonic. */ if (res >= USECS_PER_JIFFY) res = USECS_PER_JIFFY-1; return res; } /** * Variable to store the time of the last clock update. */ static long last_rtc_update; /** * This function stub allows the Lexra board to run Linux without * a real time clock. * @param nowtime Unused. */ static int set_rtc_mmss(unsigned long nowtime) { return 0; } /** * The sytem timer interrupt routine. This is the only time base * for Lexra boards, there is no real time clock. * The handler uses the System Timer to keep track of time and generate * an interrupt every 10ms. * Additional code exists for updating profiling structures and the * system time. * @param irq The timer irq number. * @param dev_id Device id, NULL for timer interrupt. * @param regs Pointer to stack passed through by interrupt handler. * @return void */ static void inline lx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) { unsigned long count, compare, temp; int cpu = smp_processor_id(); irq_enter(cpu, irq); kstat.irqs[cpu][irq]++; /* use the free running counter to calculate our time offsets */ count = Sys_clock_ctrl_reg[0]; compare = Sys_clock_ctrl_reg[2]; Sys_clock_ctrl_reg[2] += sys_timer_reload; if (count > (compare + sys_timer_reload)) { /* if there was a long delay in getting to the timer * interrupt handler, and count is already greater than * compare, we won't get another interrupt for a very long * time if we just increment compare with sys_timer_reload. * Plus, we might have to adjust the jiffies. */ while ((compare + sys_timer_reload) < count) { (*(unsigned long *)&jiffies)++; compare += sys_timer_reload; count = Sys_clock_ctrl_reg[0]; } /* adjust compare */ Sys_clock_ctrl_reg[2] = compare + sys_timer_reload; } Sys_clock_ctrl_reg[1] |= 1; /* ack interrupt */ timerlo = count; if (!user_mode(regs)) { if (prof_buffer && current->pid) { extern int _stext; unsigned long pc = regs->cp0_epc; pc -= (unsigned long) &_stext; pc >>= prof_shift; /* * Dont ignore out-of-bounds pc values silently, * put them into the last histogram slot, so if * present, they will show up as a sharp peak. */ if (pc > prof_len - 1) pc = prof_len - 1; atomic_inc((atomic_t *) & prof_buffer[pc]); } } do_timer(regs); /* * If we have an externally synchronized Linux clock, then update * CMOS clock accordingly every ~11 minutes. Set_rtc_mmss() has to be * called as close as possible to 500 ms before the new second starts. */ read_lock(&xtime_lock); if ((time_status & STA_UNSYNC) == 0 && xtime.tv_sec > last_rtc_update + 660 && xtime.tv_usec >= 500000 - tick / 2 && xtime.tv_usec <= 500000 + tick / 2) { if (set_rtc_mmss(xtime.tv_sec) == 0) last_rtc_update = xtime.tv_sec; else /* do it again in 60 s */ last_rtc_update = xtime.tv_sec - 600; } read_unlock(&xtime_lock); /* * If jiffies has overflowed in this timer_interrupt we must * update the timer[hi]/[lo] to make fast gettimeoffset funcs * quotient calc still valid. -arca */ if (!jiffies) { timerlo = 0; } irq_exit(cpu, irq); } /** * Function to initialize the Lexra timer. This initialization includes * calculating the appropriate decrementer value based on the configured * clock rate, requesting and registering the interrupt and starting the * timer. * @param irq Pointer to the irqaction structure for the timer. This structure * stores information required by the do_IRQ() function which dispatches interrupts. */ static void __init lx_time_init(struct irqaction *irq) { unsigned long start, end; volatile unsigned long *uart_clk = (volatile unsigned long *)UARTCLK_CTRL_ADDR; /* setup ptr to contrl reg */ Sys_clock_ctrl_reg = (unsigned int *)SYS_TIMER_ADDR; irq->handler = lx_timer_interrupt; irq->flags = 0; irq->mask = 0; irq->name = "System Clock"; irq->next = NULL; irq->dev_id = NULL; setup_irq(SYSTIMER, irq); /* Use the UART clock which is at a known, fixed frequency, * to figure out the System Timer clock. */ start = Sys_clock_ctrl_reg[0]; *uart_clk = 0x80000000; /* up counter, reset */ while (*uart_clk < 1843200); /* let it run for 100 ms */ end = Sys_clock_ctrl_reg[0]; mips_counter_frequency = (end - start) * 10; sys_timer_reload = mips_counter_frequency / HZ; Sys_clock_ctrl_reg[2] = Sys_clock_ctrl_reg[0] + sys_timer_reload; Sys_clock_ctrl_reg[1] &= ~(1<<16); /* enable compare 0 int */ Sys_clock_ctrl_reg[1] |= (1<<17); /* disable compare 1 int */ /* sll32_usecs_per_cycle = 10^6 * 2^32 / mips_counter_freq */ /* any better way to do this? */ sll32_usecs_per_cycle = mips_counter_frequency / 100000; sll32_usecs_per_cycle = 0xffffffff / sll32_usecs_per_cycle; sll32_usecs_per_cycle *= 10; /* override the pointer in kernel/time.c */ do_gettimeoffset = lx_gettimeoffset; } /** * Lexra specific interrupt setup function. This function calls the * routine which initializes the Lexra interrupt handling structures. * Following this the MIPS interrupt exception vector is installed. */ void __init lx_irq_setup(void) { int i; switch (mips_machgroup) { case MACH_GROUP_LEXRA: lx_init_lxPB20K(); break; } /* setupt the interrupt exception vector to dispatch * MIPS type interrupts */ set_except_vector(0, lx_handle_int); for (i=0; i<NR_INTS; i++) { disable_irq(i); } } /** * Stores the command line entered at the boot prompt. */ char arcs_cmdline[CL_SIZE] = {0, }; /** * Lexra machine specific setup routine. This routine sets up function * pointers used by the kernel intitialization code to intialize * various hardware specific operations like interrupts, timers and * io space. */ void lexra_setup(void) { /** * LX4xxx/5xxx specific RTC routines * this is a structure containing pointers to RTC functions * we don't have an RTC so stubs must be defined */ rtc_ops = &lx45xxx_rtc_ops; board_timer_setup = lx_time_init; memcpy(&arcs_cmdline, &(lxBootParams.cmd_line), lxBootParams.cmd_line_size); mips_io_port_base = KSEG1; /* trap MAC instructions before trap_init is called in Linux kernel, it will be override later in trap_init */ set_except_vector(10, handle_ri); memcpy((void *)(KSEG0 + 0x80), &except_vec3_generic, 0x80); flush_icache_range(KSEG0+0x80, KSEG0+0x80); }; /** * Lexra specific initialization of interrupts. * Support is provided for the MIPS 6 hardware and 2 software interrups, * the 8 Lexra vectored interrupts and 16 available PCI interrupts. * The interrupts are prioritized through the used of the mask and irq_nr * tables. This allows for simple modification of the interrupt priority * by changing the relative location of the interrupt in these tables. */ void __init lx_init_lxPB20K(void) { /** * Setup interrupt structure */ lx_interrupt[I2S].cpu_mask = 0; lx_interrupt[I2S].LX_mask = LX_IRQ11; lx_mask_tbl[4] = LX_IRQ11; lx_irq_nr[4] = I2S; lx_interrupt[PCI_ABCD].cpu_mask = IE_IRQ0; lx_interrupt[PCI_ABCD].LX_mask = 0; cpu_mask_tbl[2] = IE_IRQ0; cpu_irq_nr[2] = PCI_ABCD; lx_interrupt[UART12TXRX].cpu_mask = IE_IRQ1; lx_interrupt[UART12TXRX].LX_mask = 0; cpu_mask_tbl[3] = IE_IRQ1; cpu_irq_nr[3] = UART12TXRX; lx_interrupt[BUSCLK].cpu_mask = IE_IRQ2; lx_interrupt[BUSCLK].LX_mask = 0; cpu_mask_tbl[4] = IE_IRQ2; cpu_irq_nr[4] = BUSCLK; lx_interrupt[SYSCLK].cpu_mask = IE_IRQ3; lx_interrupt[SYSCLK].LX_mask = 0; cpu_mask_tbl[5] = IE_IRQ3; cpu_irq_nr[5] = SYSCLK; lx_interrupt[UARTCLK].cpu_mask = IE_IRQ4; lx_interrupt[UARTCLK].LX_mask = 0; cpu_mask_tbl[6] = IE_IRQ4; cpu_irq_nr[6] = UARTCLK; lx_interrupt[SYSTIMER].cpu_mask = IE_IRQ5; lx_interrupt[SYSTIMER].LX_mask = 0; cpu_mask_tbl[7] = IE_IRQ5; cpu_irq_nr[7] = SYSTIMER; }/* lx_init_lxBP20K */ --- NEW FILE: lxRi.c --- /* * lxRi.c - Reserved instruction handler specific to Lexra processores. */ /* ** Copyright 2001 Lexra, Inc. */ #include "asm/mipsregs.h" #include "asm/ptrace.h" #include "asm/branch.h" #include "asm/asm.h" #include "asm/uaccess.h" #define OP_MASK 0x3f #define OP_SHIFT 26 #define R_MASK 0x1f #define RS_SHIFT 21 #define RT_SHIFT 16 #define RD_SHIFT 11 #define OFFSET_MASK 0xffff #define _OP_(x) (OP_MASK & ((x) >> OP_SHIFT)) #define _OPS_(x) (OP_MASK & (x)) #define _RS_(x) (R_MASK & ((x) >> RS_SHIFT)) #define _RT_(x) (R_MASK & ((x) >> RT_SHIFT)) #define _RD_(x) (R_MASK & ((x) >> RD_SHIFT)) #define _OFFSET_(x) (OFFSET_MASK & (x)) /* get opcode for reserved instruction without verify_area since Lexra's reserved instructions maybe used in both kernel and user mode */ int get_insn_ri(struct pt_regs *regs, unsigned int *opcode) { unsigned int *epc; epc = (unsigned int *) (unsigned long) regs->cp0_epc; if (regs->cp0_cause & CAUSEF_BD) epc ++; *opcode = *epc; return 0; } /* fixup code when address error occurs in lwl/lwr/swl/swr */ void fixup_lxRi(long epc) { siginfo_t info; info.si_code = SIGABRT; info.si_errno = EFAULT; info.si_addr = (void *) epc; force_sig_info(SIGSEGV, &info, current); } /* Lexra-supplied "reserved instruction exception handler" Returns 1 if handled or 0 if not handled. The instruction will not be handled if it is not a Lexra's reserved instruction */ int simulate_lxRI(struct pt_regs *regp, unsigned int inst) { register unsigned long rs; register unsigned long rt; unsigned long va; unsigned long mem = 0; unsigned int byte; int mad_msub; /* In case the emulated zero register is somehow trashed. */ regp->regs[0] = 0; /* ================================= Isolate the two source registers: ================================= */ rs = regp->regs[_RS_(inst)]; rt = regp->regs[_RT_(inst)]; /* ======================================= Calculate the offset and alignment for lwl, lwr, swl, or swr instructions. For these instructions, 'rs' represents the base to which the offset is added: ======================================= */ va = rs + (unsigned long)((short)_OFFSET_(inst)); byte = va & 3; /* ============================================================= Two types of instructions deserve special consideration: lwl, lwr, swl, and swr are unaligned load and store inst- ructions. These four instructions are _always_ implement- ed in software. mult, multu, div, and divu instructions may be either soft- ware emulated or placed in the optional MAC-DIV module. When these instructions are implemented in the MAC-DIC module they do not generate Reserved Instruction (RI) traps. The 8 instructions described above are decoded by the foll- owing switch statement. They may be uniquely identified by bits 26 through 31 (the primary opcode field) and bits 0 through 5 (the subcode field). ============================================================= */ switch (_OP_(inst)) { /*=================================================================== Load Word Left: lwl rt, offset + rs Add the sign-extended offset to base register 'rs'; this is the source address. Copy the byte at this address to the leftmost unwritten byte in 'rt', proceeding from left to right. When the rightmost byte of the source is copied, the operation is complete. =====================================================================*/ case 0x22: /* lwl */ __asm__( "1:\tsubu\t%0,%1,%2\n" "2:\tlw\t%0,0(%0)\n\t" ".section\t__ex_table,\"a\"\n\t" STR(PTR)"\t1b,%3\n\t" STR(PTR)"\t2b,%3\n\t" ".previous" :"=r" (mem) :"r" (va), "r" (byte), "i" (&fixup_lxRi)); mem = mem << byte*8; rt = (rt & ~(-1UL << byte*8)) | mem; regp->regs[_RT_(inst)] = rt; break; /*==================================================================== Load Word Right: lwr rt, offset + rs Add the sign-extended offset to base register 'rs'; this is the source address. Copy the byte at this address to the rightmost unwritten byte in 'rt', proceeding from right to left. When the leftmost byte of the source is copied, the operation is complete. =====================================================================*/ case 0x26: /* lwr */ __asm__( "1:\tsubu\t%0,%1,%2\n" "2:\tlw\t%0,0(%0)\n\t" ".section\t__ex_table,\"a\"\n\t" STR(PTR)"\t1b,%3\n\t" STR(PTR)"\t2b,%3\n\t" ".previous" :"=r" (mem) :"r" (va), "r" (byte), "i" (&fixup_lxRi)); mem = mem >> (3-byte)*8; rt = (rt & ~(-1UL >> (3-byte)*8)) | mem; regp->regs[_RT_(inst)] = rt; break; /*==================================================================== Store Word Left: swl rt, offset + rs Add the sign-extended offset to base register 'rs'; this is the destination address. Proceeding from left to right, copy bytes from the register specified by 'rt' to bytes starting at the destination address. When the rightmost byte of the destination is written, the operation is complete. =====================================================================*/ case 0x2A: /* swl */ __asm__( "1:\tsubu\t%0,%1,%2\n" "2:\tlw\t%0,0(%0)\n\t" ".section\t__ex_table,\"a\"\n\t" STR(PTR)"\t1b,%3\n\t" STR(PTR)"\t2b,%3\n\t" ".previous" :"=r" (mem) :"r" (va), "r" (byte), "i" (&fixup_lxRi)); mem = mem & ~(-1UL >> byte*8); rt = (rt >> byte*8) | mem; *(unsigned long *)(va - byte) = rt; break; /*==================================================================== Store Word Right: swr rt, offset + rs Add the sign-extended offset to base register 'rs'; this is the destination address. Proceeding from right to left, copy bytes from the register specified by 'rt' to bytes starting at the destination address. When the leftmost byte of the destination is written, the operation is complete. =====================================================================*/ case 0x2E: /* swr */ __asm__( "1:\tsubu\t%0,%1,%2\n" "2:\tlw\t%0,0(%0)\n\t" ".section\t__ex_table,\"a\"\n\t" STR(PTR)"\t1b,%3\n\t" STR(PTR)"\t2b,%3\n\t" ".previous" :"=r" (mem) :"r" (va), "r" (byte), "i" (&fixup_lxRi)); mem = mem & ~(-1UL << (3-byte)*8); rt = (rt << (3-byte)*8) | mem; *(unsigned long *)(va - byte) = rt; break; case 0x1C: /* Special2 */ switch (_OPS_(inst)) { case 0x00: /* mad */ mad_msub = 1; goto ri_mult; case 0x01: /* madu */ mad_msub = 1; goto ri_multu; case 0x04: /* msub */ mad_msub = 2; goto ri_mult; case 0x05: /* msubu */ mad_msub = 2; goto ri_multu; } return 0; /* not a Lexra reserved instruction */ case 0x00: /* Special */ mad_msub = 0; switch (_OPS_(inst)) { /* =================================== The signed multiply instruction may be emulated in software or implemented in the optional MAC-DIV Module. =================================== */ case 0x18: /* mult */ { ri_mult: { register unsigned int X = (unsigned int) rs; register unsigned int Y = (unsigned int) rt; register unsigned int i; register unsigned int Mask = 0x80000000; register unsigned int sign = (Mask & X) ^ (Mask & Y); register unsigned int HI = 0; register unsigned int LO = Mask&Y ? -Y : Y; register unsigned int CARRY; X = Mask&X ? -X : X; for (i=0; i<32; i++) { CARRY = 0; if (LO&1) { CARRY = HI; HI += X; CARRY = (HI < CARRY) | (HI < X); } LO >>= 1; if (HI&1) { LO |= Mask; } HI >>= 1; if (CARRY) { HI |= Mask; } } if (sign) { LO = ~LO; HI = ~HI; CARRY = LO; LO += 1; if (LO < CARRY) { HI += 1; } } if (mad_msub) { unsigned long long HI_LO = ((long long)HI << 32) | LO; unsigned long long hi_lo = ((long long)regp->hi << 32) | regp->lo; if (mad_msub == 2) hi_lo -= HI_LO; else hi_lo += HI_LO; regp->lo = hi_lo & 0xffffffff; regp->hi = hi_lo >> 32; } else { regp->hi = HI; regp->lo = LO; } } } break; /* =================================== The unsigned multiply instruction may be emulated in software or implemented in the optional MAC-DIV Module. =================================== */ case 0x19: /* multu */ { ri_multu: { register unsigned int X = (unsigned int) rs; register unsigned int i; register unsigned int Mask = 0x80000000; register unsigned int HI = 0; register unsigned int LO = (unsigned int) rt; register unsigned int CARRY; for (i=0; i<32; i++) { CARRY = 0; if (LO&1) { CARRY = HI; HI += X; CARRY = (HI < CARRY) | (HI < X); } LO >>= 1; if (HI&1) { LO |= Mask; } HI >>= 1; if (CARRY) { HI |= Mask; } } if (mad_msub) { unsigned long long HI_LO = ((long long)HI << 32) | LO; unsigned long long hi_lo = ((long long)regp->hi << 32) | regp->lo; if (mad_msub == 2) hi_lo -= HI_LO; else hi_lo += HI_LO; regp->lo = hi_lo & 0xffffffff; regp->hi = hi_lo >> 32; } else { regp->hi = HI; regp->lo = LO; } } } break; /* =================================== The signed divide instruction may be emulated in software or implemented in the optional MAC-DIV Module. =================================== */ case 0x1a: /* div */ { register unsigned int X = (unsigned int) rs; register unsigned int Y = (unsigned int) rt; register unsigned int i; register unsigned int Mask = 0x80000000; register unsigned int signHI = (Mask & X); register unsigned int sign = signHI ^ (Mask & Y); register unsigned int HI = 0; register unsigned int LO = Mask&X ? -X : X; Y = Mask&Y ? -Y : Y; for (i=0; i<32; i++) { HI <<= 1; if (LO&Mask) HI |= 1; LO <<= 1; if (Y > HI) { LO &= ~1; } else { HI -= Y; LO |= 1; } } LO = sign ? -LO : LO; HI = signHI ? -HI : HI; regp->hi = HI; regp->lo = LO; } break; /* =================================== The unsigned divide instruction may be emulated in software or implemented in the optional MAC-DIV Module. =================================== */ case 0x1b: /* divu */ { register unsigned int X = (unsigned int) rs; register unsigned int Y = (unsigned int) rt; register unsigned int i; register unsigned int Mask = 0x80000000; register unsigned int HI = 0; register unsigned int LO = X; for (i=0; i<32; i++) { HI <<= 1; if (LO&Mask) HI |= 1; LO <<= 1; if (Y > HI) { LO &= ~1; } else { HI -= Y; LO |= 1; } } regp->hi = HI; regp->lo = LO; } break; default: return 0; /* not a special Lexra reserved instruction */ } /* end of switch(_OPS_(inst)) */ break; /* special instructions */ default: /* for switch(_OP_(inst)) */ do_ri(regp); return 0; /* not a Lexra reserved instruction */ } /* end of switch(_OP_(inst)) */ return 1; /* reserved instruction handled */ } void do_lxRi(struct pt_regs *regs) { unsigned int opcode; get_insn_ri(regs, &opcode); simulate_lxRI(regs, opcode); compute_return_epc(regs); return; } --- NEW FILE: lx_io.c --- /** * @file lx_io.c * Lexra specifice io routines. */ #include <asm/io.h> #include <asm/byteorder.h> #include <asm/addrspace.h> #include <asm/lexra/lx_defs.h> /** * Function for byte Input. * @param addr pointer to the address of the byte * @return the byte requested */ unsigned char lx_inb(const unsigned char *addr) { unsigned int ia = (unsigned int)(addr); return *(volatile unsigned char *)KSEG1ADDR(ia); } /** * Function for byte Output. * @param val the byte of data to be output * @param addr pointer to the destination address of the byte */ void lx_outb( unsigned char val, unsigned char *addr) { unsigned int ia = (unsigned int)(addr); *(volatile unsigned char *)KSEG1ADDR(ia) = val; } /** * Function for word (16 bit) Input. * @param addr pointer to the address of the word * @return the word requested */ unsigned short lx_inw(const unsigned short *addr) { unsigned int ia = (unsigned int)(addr); if(PHYSADDR(ia) > LX_PCI_TOP) return *(volatile unsigned short *)KSEG1ADDR(ia); else return le16_to_cpu(*(volatile unsigned short *)KSEG1ADDR(ia)); } /** * Function for word (16 bit) Output. * @param val the byte of word to be output * @param addr pointer to the destination address of the word */ void lx_outw( unsigned short val, unsigned short *addr) { unsigned int ia = (unsigned int)(addr); if(PHYSADDR(ia) > LX_PCI_TOP) *(volatile unsigned short *)KSEG1ADDR(ia) = val; else *(volatile unsigned short *) (KSEG1ADDR(ia)) = cpu_to_le16(val); } /** * Function for long word (32 bit) Input. * @param addr pointer to the address of the long word * @return the long word requested */ unsigned int lx_inl(const unsigned int *addr) { unsigned int ia = (unsigned int)(addr); if(PHYSADDR(ia) > LX_PCI_TOP) return *(volatile unsigned int *)KSEG1ADDR(ia); else return le32_to_cpu(*(volatile unsigned int *) KSEG1ADDR(ia)); } /** * Function for long word (32 bit) Output. * @param val the long word of data to be output * @param addr pointer to the destination address of the long word */ void lx_outl( unsigned int val, unsigned int *addr) { unsigned int ia = (unsigned int)(addr); if(PHYSADDR(ia) > LX_PCI_TOP) *(volatile unsigned int *)KSEG1ADDR(ia) = val; else *(volatile unsigned int *)KSEG1ADDR(ia) = cpu_to_le32(val); } /** * Function for multiple long word (32 bit) Input. Count long words * are read starting at the address specified by port and placed in * the location specified by buffer. * @param port Pointer to the address of the long words to be input. * @param buffer Pointer to the buffer for the input data. * @param count Number of words to input. */ void lx_insl(unsigned int port, void *buffer, unsigned long count) { unsigned long *buf=buffer; while(count--) *buf++=inl(port); } /** * Function for multiple long word (32 bit) Output. Count long words * are read starting at the address specified by buffer and placed in * the location specified by port. * @param port Pointer to the destination address for the long words. * @param buffer The buffer of long words to be output. * @param count The number of long words to output. */ void lx_outsl(unsigned int port, const void *buffer, unsigned long count) { const unsigned long *buf=buffer; while(count--) outl(*buf++, port); } --- NEW FILE: lxpci.c --- /* * ######################################################################## * * This program is free software; you can distribute it and/or modify it * under the terms of the GNU General Public License (Version 2) as * published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. * * ######################################################################## */ /** @file lxpci.c * Lexra PCI support functions. This file contains functions used to setup, configure * and access PCI devices conected to the Lexra board via PCI. */ #include <linux/config.h> #ifdef CONFIG_PCI #include <linux/types.h> #include <linux/pci.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/delay.h> #include <asm/irq.h> #include <linux/interrupt.h> #include <asm/io.h> #include <asm/lexra/lx_defs.h> #include <asm/lexra/lxirq.h> /** * External function defined in irq.c. */ extern void enable_irq(unsigned int irq_nr); /** * External function defined in irq.c. */ extern int get_irq_list(char * buf); /** * Variable to allow disabling of PCI bus probing. */ static unsigned int pci_probe=1; /** * number of PCI devices found in initialization */ int pci_devices_count = 0; /** * starting address of memory-mapped PCI devices */ static unsigned int nextStartAddr = LX_PCI_BASE_0; /** * The general configuration space access funtion. The function is uses the LX_PCI_WRITE * and LX_PCI_READ functions to perform the PCI config space access. * @param access_type Parameter to specify read or write access. * @param dev Pointer to the pci_dev structure. * @param where Offset of config register to access. * @param data Pointer to the data to write or where to store the read data. */ static int mips_pcibios_config_access(unsigned char access_type, struct pci_dev *dev, unsigned char where, u32 *data) { unsigned char bus = dev->bus->number; unsigned char dev_fn = dev->devfn; /** * Setup address */ LX_PCI_WRITE(LX_PCI0_CFGADDR_OFS, (bus << LX_PCI0_CFGADDR_BUSNUM_SHF) | (dev_fn << LX_PCI0_CFGADDR_FUNCTNUM_SHF) | ((where / 4) << LX_PCI0_CFGADDR_REGNUM_SHF) | LX_PCI0_CFGADDR_CONFIGEN_BIT); if (access_type == PCI_ACCESS_WRITE) { LX_PCI_WRITE(LX_PCI0_CFGDATA_OFS, cpu_to_le32(*data)); } else { LX_PCI_READ(LX_PCI0_CFGDATA_OFS, *data); *data = le32_to_cpu(*data); } return 0; } /** * Function to read a byte value from PCI config space. * We can't address 8 and 16 bit words directly. Instead we have to * read/write a 32bit word and mask/modify the data we actually want. * @param dev Pointer to the pci_dev structure for the device. * @param where Offset of the config register to access. * @param data Pointer to store the read data. * @return Returns -1 if error, PCIBIOS_SUCCESSFUL otherwise. */ static int mips_pcibios_read_config_byte (struct pci_dev *dev, int where, u8 *val) { u32 data = 0; if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data)) return -1; *val = (data >> ((where & 3) << 3)) & 0xff; return PCIBIOS_SUCCESSFUL; } /** * Function to read a word value from PCI config space. * We can't address 8 and 16 bit words directly. Instead we have to * read/write a 32bit word and mask/modify the data we actually want. * @param dev Pointer to the pci_dev structure for the device. * @param where Offset of the config register to access. * @param data Pointer to store the read data. * @return Returns -1 if error, PCIBIOS_SUCCESSFUL otherwise. */ static int mips_pcibios_read_config_word (struct pci_dev *dev, int where, u16 *val) { u32 data = 0; if (where & 1) return PCIBIOS_BAD_REGISTER_NUMBER; if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data)) return -1; *val = (data >> ((where & 3) << 3)) & 0xffff; return PCIBIOS_SUCCESSFUL; } /** * Function to read a dword value from PCI config space. * @param dev Pointer to the pci_dev structure for the device. * @param where Offset of the config register to access. * @param data Pointer to store the read data. * @return Returns -1 if error, PCIBIOS_SUCCESSFUL otherwise. */ static int mips_pcibios_read_config_dword (struct pci_dev *dev, int where, u32 *val) { u32 data = 0; if (where & 3) return PCIBIOS_BAD_REGISTER_NUMBER; if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data)) return -1; *val = data; return PCIBIOS_SUCCESSFUL; } /** * Function to write a byte value to PCI config space. * @param dev Pointer to the pci_dev structure for the device. * @param where Offset of config register to access. * @param val The data to write. * @return Returns -1 if error, PCIBIOS_SUCCESSFUL otherwise */ static int mips_pcibios_write_config_byte (struct pci_dev *dev, int where, u8 val) { u32 data = 0; if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data)) return -1; data = (data & ~(0xff << ((where & 3) << 3))) | (val << ((where & 3) << 3)); if (mips_pcibios_config_access(PCI_ACCESS_WRITE, dev, where, &data)) return -1; return PCIBIOS_SUCCESSFUL; } /** * Function to write a word value to PCI config space. * @param dev Pointer to the pci_dev structure for the device. * @param where Offset of config register to access. * @param val The data to write. * @return Returns -1 if error, PCIBIOS_SUCCESSFUL otherwise */ static int mips_pcibios_write_config_word (struct pci_dev *dev, int where, u16 val) { u32 data = 0; if (where & 1) return PCIBIOS_BAD_REGISTER_NUMBER; if (mips_pcibios_config_access(PCI_ACCESS_READ, dev, where, &data)) return -1; data = (data & ~(0xffff << ((where & 3) << 3))) | (val << ((where & 3) << 3)); if (mips_pcibios_config_access(PCI_ACCESS_WRITE, dev, where, &data)) return -1; return PCIBIOS_SUCCESSFUL; } /** * Function to write a dword value to PCI config space. * @param dev Pointer to the pci_dev structure for the device. * @param where Offset of config register to access. * @param val The data to write. * @return Returns -1 if error, PCIBIOS_SUCCESSFUL otherwise */ static int mips_pcibios_write_config_dword(struct pci_dev *dev, int where, u32 val) { if (where & 3) return PCIBIOS_BAD_REGISTER_NUMBER; if (mips_pcibios_config_access(PCI_ACCESS_WRITE, dev, where, &val)) return -1; return PCIBIOS_SUCCESSFUL; } /** * Stucture to store pointers to Lexra specific PCI functions. */ struct pci_ops mips_pci_ops = { mips_pcibios_read_config_byte, mips_pcibios_read_config_word, mips_pcibios_read_config_dword, mips_pcibios_write_config_byte, mips_pcibios_write_config_word, mips_pcibios_write_config_dword }; /** * Lexra resources structure */ struct { /** * RAM resource tracking structure. */ struct resource ram; /** * PCI memory resource tracking structure. */ struct resource pci_mem; } Lexra_resources = { { "RAM", 0x00000000, 0x03ffffff, IORESOURCE_MEM | PCI_BASE_ADDRESS_MEM_TYPE_32}, { "Lexra PCI mem", LX_PCI_BASE_0, (LX_PCI_BASE_1 + 0xffffff), IORESOURCE_MEM} }; /** * Function to determine the size of PCI memory space required by a PCI device. * @param base The base address read from the devices config space. * @param mask IO or memory space mask used to determine size. * @return Returns the size of the memory space requested by the device. */ static u32 lx_pci_size(u32 base, unsigned long mask) { u32 size = mask & base; /* Find the significant bits */ /* Get the lowest of them to find the decode size */ size = size & ~(size-1); return size-1; /* extent = size - 1 */ } static void __init setup_pci_dev(struct pci_dev *dev) { unsigned int pos, reg, tmp, MEMsize; u32 l, sz; unsigned int nIOBaseAddrs = 0; unsigned int nMemBaseAddrs = 0; /** * We must ofset all devices base address registers * by 0x08000000 and let them know the cache line size. */ nIOBaseAddrs = 0; nMemBaseAddrs = 0; pci_devices_count++; for(pos=0; pos<6; pos++) { if (dev->resource[pos].start != dev->resource[pos].end) { reg = PCI_BASE_ADDRESS_0 + (pos << 2); pci_read_config_dword(dev, reg, &tmp); if ((tmp & 0x1) == 1) { printk("Lexra does not support PCI IO \n"); #if 0 /* * this block of code was put it for an Ethernet * card driver that required IO space to be * allocated for its init code to pass */ dev->resource[pos-nIOBaseAddrs].start = dev->resource[pos].start + nextStartAddr; dev->resource[pos-nIOBaseAddrs].end = dev->resource[pos].end + nextStartAddr; nextStartAddr += (dev->resource[pos-nIOBaseAddrs].end - dev->resource[pos-nIOBaseAddrs].start) +1; reg = PCI_BASE_ADDRESS_0 + (pos << 2); pci_write_config_dword(dev, reg, dev->resource[pos-nIOBaseAddrs].start); #endif nIOBaseAddrs++; } else { MEMsize = dev->resource[pos-nIOBaseAddrs].end - dev->resource[pos-nIOBaseAddrs].start; if(MEMsize > (1<<20)){ printk("Device %d attempted to request \ more that 64 MB of PCI memory\n" "Allocated 64 MB.\n", dev->device); dev->resource[pos-nIOBaseAddrs].end = dev->resource[pos-nIOBaseAddrs].start +(1<<20); } if( !request_resource(&(Lexra_resources.pci_mem), &dev->resource[pos-nIOBaseAddrs]) ) { printk("Resources unavailable for PCI \ device %d\n", dev->device); } else { tmp = nextStartAddr + MEMsize; /* alignment! */ nextStartAddr =( tmp & ~MEMsize ); dev->resource[pos-nIOBaseAddrs].start = dev->resource[pos].start + nextStartAddr; dev->resource[pos-nIOBaseAddrs].end = dev->resource[pos].end + nextStartAddr; nextStartAddr += (dev->resource[pos-nIOBaseAddrs].end - dev->resource[pos-nIOBaseAddrs].start)+1; reg = PCI_BASE_ADDRESS_0 + (pos << 2); pci_write_config_dword(dev, reg, dev->resource[pos-nIOBaseAddrs].start); printk(KERN_DEBUG "PCI mem at 0x%x\n", (unsigned int)dev->resource[pos-nIOBaseAddrs].start); nMemBaseAddrs++; if (nIOBaseAddrs != 0) { dev->resource[pos].start = 0; dev->resource[pos].end = 0; } } /* if !request_resource */ } /* if IO */ } /* if start != end */ } /* for pos = ... */ if (nMemBaseAddrs == 0) { printk("PCI Device %d does not support PCI memory accesses \n" "and is therefore, unsupported.\n", dev->device); return; } /** * Allocate space for expansion rom */ pci_read_config_dword(dev, PCI_ROM_ADDRESS, &l); pci_write_config_dword(dev, PCI_ROM_ADDRESS, ~PCI_ROM_ADDRESS_ENABLE); pci_read_config_dword(dev, PCI_ROM_ADDRESS, &sz); if (l == 0xffffffff) l = 0; if (sz && sz != 0xffffffff) { dev->resource[PCI_ROM_RESOURCE].flags = (l & PCI_ROM_ADDRESS_ENABLE) | IORESOURCE_MEM | IORESOURCE_PREFETCH | IORESOURCE_READONLY | IORESOURCE_CACHEABLE; sz = lx_pci_size(sz, PCI_ROM_ADDRESS_MASK); dev->resource[PCI_ROM_RESOURCE].start = (nextStartAddr + sz) & PCI_ROM_ADDRESS_MASK; dev->resource[PCI_ROM_RESOURCE].end = dev->resource[PCI_ROM_RESOURCE].start + (unsigned long) sz; pci_write_config_dword(dev, PCI_ROM_ADDRESS, dev->resource[PCI_ROM_RESOURCE].start | 0x1); nextStartAddr = dev->resource[PCI_ROM_RESOURCE].end + 1; } /** * Set the cache line size */ pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, L1_CACHE_BYTES/4); /** * Finally we must assign an IRQ to each of the devices */ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, PCI_ABCD); dev->irq = PCI_ABCD; /** * Enable busmastering and memory space accesses */ pci_write_config_byte(dev, PCI_COMMAND, 0x6); /** * If the device has a BIST execute it */ l = 0; pci_read_config_byte(dev, PCI_BIST, (unsigned char *)&l); if ( l && PCI_BIST_CAPABLE > 0) { pci_write_config_byte(dev, PCI_BIST, PCI_BIST_START | PCI_BIST_CAPABLE); mdelay(2000); /* delay 2 sec to allow test to complete */ pci_read_config_byte(dev, PCI_BIST, (unsigned char *)&l); if (l && PCI_BIST_START != 0) printk("BIST timed out\n"); else if (l && PCI_BIST_CODE_MASK != 0) printk("BIST failed with code: 0x%x\n", (l && PCI_BIST_CODE_MASK)); else printk("BIST passed\n"); } } /** * The Lexra bios fixup function. This function acts as a bios by allocating * resources to all of the PCI devices found on the bus. These resources * include PCI memory space and interrupts. It should be noted that the Lexra * PCI implementation cannot perform IO accesses. For this reason PCI devices * that cannot be communicated with through memory access will not operate * with the Lexra board. This function also initiates device Built In Self * Tests (BIST) if available. Finally the four PCI interrupts are initialized * and their handlers are registered. * @param c Pointer to the pci_bus structure filled when the kernal initially * walked the bus */ void __init lx_pcibios_fixup(struct pci_bus *c) { unsigned int tmp; struct pci_dev *dev; #ifdef LX_DEBUG char buff[256]; #endif pci_for_each_dev(dev) { printk(KERN_DEBUG "Vendor: 0x%04x Device: 0x%04x\n", dev->vendor, dev->device); if (dev->vendor == PCI_VENDOR_ID_LEXRA && dev->device == PCI_DEVICE_ID_LXPB20K) { dev->resource[0] = Lexra_resources.pci_mem; pci_write_config_dword(dev, PCI_BASE_ADDRESS_0,0); pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &tmp); #ifdef PCI_DEBUG printk("PCI Base 0: %08x\n",tmp); #endif dev->resource[1] = Lexra_resources.pci_mem; pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, 0x04000000); pci_read_config_dword(dev, PCI_BASE_ADDRESS_1, &tmp); #ifdef PCI_DEBUG printk("PCI Base 1: %08x\n",tmp); #endif } else { setup_pci_dev(dev); } } #ifdef LX_DEBUG get_irq_list(&buff); printk(&buff); printk("End fixup Bus\n"); #endif } /** * Called after each bus is probed, but before its children * are examined. Function simply calls the function lx_pcibios_fixup(). * @param c Pointer to the pci_bus structure */ void __init pcibios_fixup_bus(struct pci_bus *c) { printk(KERN_DEBUG "PCI: pcibios_fixup_bus\n"); lx_pcibios_fixup(c); } /** * Function to initiate the scan of the pci bus unless disabled * with the command line option 'pci=off'. */ void __init pcibios_init(void) { if(pci_probe != 0) { printk("PCI: Probing PCI hardware on host bus 0.\n"); pci_scan_bus(0, &mips_pci_ops, NULL); } else { printk("PCI disabled from command line.\n"); } } /** * Bogus PCI enable function, all devices are enabled at startup. * @param dev Pointer to the devices pci_dev structure */ int __init pcibios_enable_device(struct pci_dev *dev) { /* Not needed, since we enable all devices at startup. */ return 0; } /** * Stubbed pci function, not required in Lexra Linux implementation. */ void __init pcibios_align_resource(void *data, struct resource *res, unsigned long size) { } /** * Function which determines if PCI has been disabled from the kernel * command line with the option 'pci=off'. */ char * __init pcibios_setup(char *str) { /* Nothing to do for now. */ if(strcmp(str, "off")==0) { pci_probe = 0; return NULL; } else pci_probe = 1; return str; } /** * Array to store pci_fixup structures. Currently unused in Lexra Linux implementation. */ struct pci_fixup pcibios_fixups[] = { { 0 } }; /** * Function provided to configure a pci resource during initialization. * @param dev Pointer to the devices pci_dev structure * @param root Pointer to the root resource structure * @param res Pointer to the requested resource structure * @param resource Index of the the resource in the devices PCI configuration * space. */ void __init pcibios_update_resource(struct pci_dev *dev, struct resource *root, struct resource *res, int resource) { unsigned long where, size; u32 reg; where = PCI_BASE_ADDRESS_0 + (resource * 4); size = res->end - res->start; pci_read_config_dword(dev, where, ®); reg ... [truncated message content] |
From: Pete P. <pp...@us...> - 2002-05-09 17:22:37
|
Update of /cvsroot/linux-mips/linux/arch/mips/lib In directory usw-pr-cvs1:/tmp/cvs-serv27584/arch/mips/lib Modified Files: Makefile Log Message: Added support for the Lexra 4189 CPU and eval board. Initial port completed by Lexra. Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/lib/Makefile,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile 14 Nov 2001 16:17:16 -0000 1.3 +++ Makefile 9 May 2002 17:22:34 -0000 1.4 @@ -14,7 +14,7 @@ watch.o strlen_user.o strncpy_user.o \ strnlen_user.o -ifeq ($(CONFIG_CPU_R3000)$(CONFIG_CPU_TX39XX),y) +ifeq ($(CONFIG_CPU_R3000)$(CONFIG_CPU_TX39XX)$(CONFIG_CPU_LX45XXX),y) obj-y += r3k_dump_tlb.o else obj-y += dump_tlb.o |
From: Pete P. <pp...@us...> - 2002-05-09 17:22:37
|
Update of /cvsroot/linux-mips/linux/arch/mips/configs In directory usw-pr-cvs1:/tmp/cvs-serv27584/arch/mips/configs Added Files: defconfig-lexra Log Message: Added support for the Lexra 4189 CPU and eval board. Initial port completed by Lexra. --- NEW FILE: defconfig-lexra --- # # Automatically generated make config: don't edit # CONFIG_MIPS=y CONFIG_MIPS32=y # # Code maturity level options # CONFIG_EXPERIMENTAL=y # # Machine selection # # CONFIG_ACER_PICA_61 is not set # CONFIG_ALGOR_P4032 is not set # CONFIG_BAGET_MIPS is not set # CONFIG_MIPS_COBALT is not set # CONFIG_DECSTATION is not set # CONFIG_DDB5074 is not set # CONFIG_NEC_EAGLE is not set # CONFIG_NEC_KORVA is not set # CONFIG_MIPS_EV96100 is not set # CONFIG_MIPS_EV64120 is not set # CONFIG_MIPS_ATLAS is not set # CONFIG_MIPS_MALTA is not set # CONFIG_NINO is not set # CONFIG_SIBYTE_SB1250 is not set # CONFIG_PS2 is not set # CONFIG_CASIO_BE300 is not set # CONFIG_CASIO_E15 is not set # CONFIG_VADEM_CLIO_1000 is not set # CONFIG_NEC_MOBILEPRO is not set # CONFIG_IDT_79S334 is not set # CONFIG_IDT_79EB355 is not set # CONFIG_IBM_WORKPAD is not set # CONFIG_CASIO_E55 is not set # CONFIG_VICTOR_MPC303 is not set # CONFIG_MIPS_MAGNUM_4000 is not set # CONFIG_MOMENCO_OCELOT is not set # CONFIG_DDB5476 is not set # CONFIG_DDB5477 is not set # CONFIG_NEC_OSPREY is not set # CONFIG_OLIVETTI_M700 is not set # CONFIG_SGI_IP22 is not set # CONFIG_SNI_RM200_PCI is not set # CONFIG_MIPS_ITE8172 is not set # CONFIG_MIPS_IVR is not set # CONFIG_MIPS_PB1000 is not set # CONFIG_MIPS_PB1500 is not set # CONFIG_MIPS_PB1100 is not set # CONFIG_TOSHIBA_JMR3927 is not set # CONFIG_HP_LASERJET is not set CONFIG_MIPS_LXPB20K=y # CONFIG_LX_B9600 is not set # CONFIG_LX_B19200 is not set CONFIG_LX_B38400=y # CONFIG_LX_B57600 is not set # CONFIG_HIGHMEM is not set CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set # CONFIG_MCA is not set # CONFIG_SBUS is not set CONFIG_PCI=y CONFIG_SERIAL=y CONFIG_NEW_IRQ=y CONFIG_NEW_TIME_C=y CONFIG_SWAP_IO_SPACE=y CONFIG_NONCOHERENT_IO=y # CONFIG_ISA is not set # CONFIG_EISA is not set # # Loadable module support # CONFIG_MODULES=y # CONFIG_MODVERSIONS is not set CONFIG_KMOD=y # # CPU selection # # CONFIG_CPU_R3000 is not set CONFIG_CPU_LX45XXX=y # CONFIG_CPU_TX39XX is not set # CONFIG_CPU_R6000 is not set # CONFIG_CPU_VR41XX is not set # CONFIG_CPU_R4300 is not set # CONFIG_CPU_R4X00 is not set # CONFIG_CPU_TX49XX is not set # CONFIG_CPU_R5000 is not set # CONFIG_CPU_R5432 is not set # CONFIG_CPU_R5900 is not set # CONFIG_CPU_RM7000 is not set # CONFIG_CPU_SR7100 is not set # CONFIG_CPU_NEVADA is not set # CONFIG_CPU_R10000 is not set # CONFIG_CPU_SB1 is not set # CONFIG_CPU_MIPS32 is not set # CONFIG_CPU_MIPS64 is not set # CONFIG_CPU_RC32300 is not set # CONFIG_CPU_ADVANCED is not set # CONFIG_CPU_HAS_LLSC is not set # CONFIG_CPU_HAS_LLDSCD is not set # CONFIG_CPU_HAS_WB is not set # # General setup # # CONFIG_CPU_LITTLE_ENDIAN is not set # CONFIG_CPU_R5900_CONTEXT is not set # CONFIG_VR4131_CACHE_FIX is not set # CONFIG_VR4122_CLKSPEEDREG_FIX is not set CONFIG_KCORE_ELF=y CONFIG_ELF_KERNEL=y # CONFIG_BINFMT_IRIX is not set # CONFIG_FORWARD_KEYBOARD is not set # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_MISC is not set # CONFIG_CPU_FREQ is not set CONFIG_NET=y CONFIG_PCI_NAMES=y # CONFIG_HOTPLUG is not set # CONFIG_PCMCIA is not set # CONFIG_HOTPLUG_PCI is not set CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y # # Memory Technology Devices (MTD) # # CONFIG_MTD is not set # # Parallel port support # # CONFIG_PARPORT is not set # # Block devices # # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_BLK_DEV_INITRD is not set # # Multi-device support (RAID and LVM) # # CONFIG_MD is not set # CONFIG_BLK_DEV_MD is not set # CONFIG_MD_LINEAR is not set # CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID1 is not set # CONFIG_MD_RAID5 is not set # CONFIG_MD_MULTIPATH is not set # CONFIG_BLK_DEV_LVM is not set # # Networking options # CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_NETLINK_DEV=y CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_PNP=y # CONFIG_IP_PNP_DHCP is not set CONFIG_IP_PNP_BOOTP=y # CONFIG_IP_PNP_RARP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set # CONFIG_ARPD is not set # CONFIG_INET_ECN is not set # CONFIG_SYN_COOKIES is not set # # IP: Netfilter Configuration # # CONFIG_IP_NF_CONNTRACK is not set # CONFIG_IP_NF_QUEUE is not set # CONFIG_IP_NF_IPTABLES is not set # CONFIG_IP_NF_COMPAT_IPCHAINS is not set # CONFIG_IP_NF_COMPAT_IPFWADM is not set # CONFIG_IPV6 is not set # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set # # # # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set # CONFIG_BRIDGE is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_LLC is not set # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_NET_FASTROUTE is not set # CONFIG_NET_HW_FLOWCONTROL is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # Telephony Support # # CONFIG_PHONE is not set # CONFIG_PHONE_IXJ is not set # CONFIG_PHONE_IXJ_PCMCIA is not set # # ATA/IDE/MFM/RLL support # # CONFIG_IDE is not set # CONFIG_BLK_DEV_IDE_MODES is not set # CONFIG_BLK_DEV_HD is not set # # SCSI support # # CONFIG_SCSI is not set # # I2O device support # # CONFIG_I2O is not set # CONFIG_I2O_PCI is not set # CONFIG_I2O_BLOCK is not set # CONFIG_I2O_LAN is not set # CONFIG_I2O_SCSI is not set # CONFIG_I2O_PROC is not set # # Network device support # CONFIG_NETDEVICES=y # # ARCnet devices # # CONFIG_ARCNET is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_ETHERTAP is not set # # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y # CONFIG_SUNLANCE is not set # CONFIG_HAPPYMEAL is not set # CONFIG_SUNBMAC is not set # CONFIG_SUNQE is not set # CONFIG_SUNGEM is not set CONFIG_NET_VENDOR_3COM=y # CONFIG_EL1 is not set # CONFIG_EL2 is not set # CONFIG_ELPLUS is not set # CONFIG_EL16 is not set # CONFIG_ELMC is not set # CONFIG_ELMC_II is not set CONFIG_VORTEX=y # CONFIG_LANCE is not set # CONFIG_NET_VENDOR_SMC is not set # CONFIG_NET_VENDOR_RACAL is not set # CONFIG_HP100 is not set # CONFIG_NET_ISA is not set # CONFIG_NET_PCI is not set # CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) # # CONFIG_ACENIC is not set # CONFIG_DL2K is not set # CONFIG_MYRI_SBUS is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_SK98LIN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PLIP is not set CONFIG_PPP=m CONFIG_PPP_MULTILINK=y # CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=m # CONFIG_PPP_SYNC_TTY is not set CONFIG_PPP_DEFLATE=m # CONFIG_PPP_BSDCOMP is not set CONFIG_PPPOE=m # CONFIG_SLIP is not set # # Wireless LAN (non-hamradio) # # CONFIG_NET_RADIO is not set # # Token Ring devices # # CONFIG_TR is not set # CONFIG_NET_FC is not set # CONFIG_RCPCI is not set # CONFIG_SHAPER is not set # # Wan interfaces # # CONFIG_WAN is not set # # Amateur Radio support # # CONFIG_HAMRADIO is not set # # IrDA (infrared) support # # CONFIG_IRDA is not set # # ISDN subsystem # # CONFIG_ISDN is not set # # Old CD-ROM drivers (not SCSI, not IDE) # # CONFIG_CD_NO_IDESCSI is not set # # Character devices # # CONFIG_VT is not set CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y # CONFIG_SERIAL_EXTENDED is not set # CONFIG_SERIAL_NONSTANDARD is not set CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 # # I2C support # # CONFIG_I2C is not set # # Mice # # CONFIG_BUSMOUSE is not set # CONFIG_MOUSE is not set # # Joysticks # # CONFIG_INPUT_GAMEPORT is not set # # Input core support is needed for gameports # # # Input core support is needed for joysticks # # CONFIG_QIC02_TAPE is not set # # Watchdog Cards # # CONFIG_WATCHDOG is not set # CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set # CONFIG_MIPS_RTC is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # # Ftape, the floppy tape device driver # # CONFIG_FTAPE is not set # CONFIG_AGP is not set # CONFIG_DRM is not set # # Multimedia devices # # CONFIG_VIDEO_DEV is not set # # File systems # # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set CONFIG_REISERFS_FS=m # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_BFS_FS is not set CONFIG_EXT3_FS=m CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set # CONFIG_FAT_FS is not set # CONFIG_MSDOS_FS is not set # CONFIG_UMSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_EFS_FS is not set # CONFIG_JFFS_FS is not set # CONFIG_JFFS2_FS is not set CONFIG_CRAMFS=m CONFIG_TMPFS=y CONFIG_RAMFS=m # CONFIG_ISO9660_FS is not set # CONFIG_JOLIET is not set # CONFIG_ZISOFS is not set # CONFIG_MINIX_FS is not set # CONFIG_VXFS_FS is not set # CONFIG_NTFS_FS is not set # CONFIG_NTFS_RW is not set # CONFIG_HPFS_FS is not set CONFIG_PROC_FS=y # CONFIG_DEVFS_FS is not set # CONFIG_DEVFS_MOUNT is not set # CONFIG_DEVFS_DEBUG is not set CONFIG_DEVPTS_FS=y # CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_RW is not set # CONFIG_ROMFS_FS is not set CONFIG_EXT2_FS=y # CONFIG_SYSV_FS is not set # CONFIG_UDF_FS is not set # CONFIG_UDF_RW is not set # CONFIG_UFS_FS is not set # CONFIG_UFS_FS_WRITE is not set # # Network File Systems # # CONFIG_CODA_FS is not set # CONFIG_INTERMEZZO_FS is not set CONFIG_NFS_FS=y # CONFIG_NFS_V3 is not set CONFIG_ROOT_NFS=y CONFIG_NFSD=m # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y CONFIG_LOCKD=y CONFIG_SMB_FS=m # CONFIG_SMB_NLS_DEFAULT is not set # CONFIG_NCP_FS is not set # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set # CONFIG_NCPFS_STRONG is not set # CONFIG_NCPFS_NFS_NS is not set # CONFIG_NCPFS_OS2_NS is not set # CONFIG_NCPFS_SMALLDOS is not set # CONFIG_NCPFS_NLS is not set # CONFIG_NCPFS_EXTRAS is not set # CONFIG_ZISOFS_FS is not set CONFIG_ZLIB_FS_INFLATE=m # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y CONFIG_SMB_NLS=y CONFIG_NLS=y # # Native Language Support # CONFIG_NLS_DEFAULT="iso8859-1" # CONFIG_NLS_CODEPAGE_437 is not set # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set # CONFIG_NLS_CODEPAGE_850 is not set # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ISO8859_1 is not set # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_UTF8 is not set # # Sound # # CONFIG_SOUND is not set # # USB support # # CONFIG_USB is not set # # USB Controllers # # CONFIG_USB_UHCI is not set # CONFIG_USB_UHCI_ALT is not set # CONFIG_USB_OHCI is not set # # USB Device Class drivers # # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set # # SCSI support is needed for USB Storage # # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_DPCM is not set # CONFIG_USB_STORAGE_HP8200e is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # # USB Human Interface Devices (HID) # # # Input core support is needed for USB HID # # # USB Imaging devices # # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set # CONFIG_USB_SCANNER is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USB_HPUSBSCSI is not set # # USB Multimedia devices # # # Video4Linux support is needed for USB Multimedia device support # # # USB Network adaptors # # CONFIG_USB_PEGASUS is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_CATC is not set # CONFIG_USB_CDCETHER is not set # CONFIG_USB_USBNET is not set # # USB port drivers # # CONFIG_USB_USS720 is not set # # USB Serial Converter support # # CONFIG_USB_SERIAL is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_BELKIN is not set # CONFIG_USB_SERIAL_WHITEHEAT is not set # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set # CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set # CONFIG_USB_SERIAL_MCT_U232 is not set # CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set # # USB Miscellaneous drivers # # CONFIG_USB_RIO500 is not set # # Input core support # # CONFIG_INPUT is not set # CONFIG_INPUT_KEYBDEV is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_EVDEV is not set # # Kernel hacking # CONFIG_CROSSCOMPILE=y # CONFIG_REMOTE_DEBUG is not set # CONFIG_GDB_CONSOLE is not set # CONFIG_DEBUG is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_MIPS_UNCACHED is not set |
From: Pete P. <pp...@us...> - 2002-05-06 23:05:17
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv1004/drivers/video Modified Files: au1100fb.h Log Message: BE fixes. Index: au1100fb.h =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- au1100fb.h 15 Apr 2002 23:30:13 -0000 1.3 +++ au1100fb.h 6 May 2002 23:05:14 -0000 1.4 @@ -178,6 +178,11 @@ }; +#if defined(__BIG_ENDIAN) +#define LCD_DEFAULT_PIX_FORMAT LCD_CONTROL_PO_11 +#else +#define LCD_DEFAULT_PIX_FORMAT LCD_CONTROL_PO_00 +#endif /* * The fb driver assumes that AUX PLL is at 48MHz. That can @@ -201,7 +206,7 @@ /*LCD_CONTROL_DB*/ /*LCD_CONTROL_CCO*/ /*LCD_CONTROL_DP*/ - | LCD_CONTROL_PO_00 + | LCD_DEFAULT_PIX_FORMAT /*LCD_CONTROL_MPI*/ | LCD_CONTROL_PT | LCD_CONTROL_PC @@ -248,7 +253,7 @@ "Generic_640x480_16", /* mode_control */ - 0x004806a, + 0x004806a | LCD_DEFAULT_PIX_FORMAT, /* mode_horztiming */ 0x3434d67f, @@ -285,7 +290,7 @@ "Casio_640x480_16", /* mode_control */ - 0x0004886a, + 0x0004886a | LCD_DEFAULT_PIX_FORMAT, /* mode_horztiming */ 0x0e4bfe7f, @@ -317,7 +322,7 @@ "NEON_800x600_16", /* mode_control */ - 0x0004886A, + 0x0004886A | LCD_DEFAULT_PIX_FORMAT, /* mode_horztiming */ 0x005AFF1F, @@ -349,7 +354,7 @@ "NEON_640x480_16", /* mode_control */ - 0x0004886A, + 0x0004886A | LCD_DEFAULT_PIX_FORMAT, /* mode_horztiming */ 0x0052E27F, |
From: Steve L. <slo...@us...> - 2002-05-02 18:49:23
|
Update of /cvsroot/linux-mips/linux/drivers/sound In directory usw-pr-cvs1:/tmp/cvs-serv22335 Modified Files: au1000.c Log Message: just some indent fixes. Index: au1000.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/sound/au1000.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- au1000.c 1 May 2002 18:00:30 -0000 1.11 +++ au1000.c 2 May 2002 18:49:19 -0000 1.12 @@ -473,14 +473,14 @@ u32 ac97_config = au_readl(AC97C_CONFIG) & ~AC97C_XMIT_SLOTS_MASK; switch (num_channels) { - case 1: // mono - case 2: // stereo, slots 3,4 + case 1: // mono + case 2: // stereo, slots 3,4 ac97_config |= (0x3 << AC97C_XMIT_SLOTS_BIT); break; - case 4: // stereo with surround, slots 3,4,7,8 + case 4: // stereo with surround, slots 3,4,7,8 ac97_config |= (0x33 << AC97C_XMIT_SLOTS_BIT); break; - case 6: // stereo with surround and center/LFE, slots 3,4,6,7,8,9 + case 6: // stereo with surround and center/LFE, slots 3,4,6,7,8,9 ac97_config |= (0x7b << AC97C_XMIT_SLOTS_BIT); break; } @@ -1965,9 +1965,12 @@ // print out digital controller state len += sprintf(buf + len, "AU1000 Audio Controller registers\n"); len += sprintf(buf + len, "---------------------------------\n"); - len += sprintf (buf + len, "AC97C_CONFIG = %08x\n", au_readl(AC97C_CONFIG)); - len += sprintf (buf + len, "AC97C_STATUS = %08x\n", au_readl(AC97C_STATUS)); - len += sprintf (buf + len, "AC97C_CNTRL = %08x\n", au_readl(AC97C_CNTRL)); + len += sprintf (buf + len, "AC97C_CONFIG = %08x\n", + au_readl(AC97C_CONFIG)); + len += sprintf (buf + len, "AC97C_STATUS = %08x\n", + au_readl(AC97C_STATUS)); + len += sprintf (buf + len, "AC97C_CNTRL = %08x\n", + au_readl(AC97C_CNTRL)); /* print out CODEC state */ len += sprintf(buf + len, "\nAC97 CODEC registers\n"); |
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/common In directory usw-pr-cvs1:/tmp/cvs-serv32242/arch/mips/au1000/common Modified Files: clocks.c dbg_io.c dma.c irq.c power.c reset.c rtc.c serial.c time.c usbdev.c Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: clocks.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/clocks.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- clocks.c 23 Mar 2002 02:13:01 -0000 1.4 +++ clocks.c 1 May 2002 18:00:28 -0000 1.5 @@ -75,9 +75,9 @@ unsigned int static_cfg0; unsigned int sys_busclk = (get_au1000_speed()/1000) / - ((int)(readl(SYS_POWERCTRL)&0x03) + 2); + ((int)(au_readl(SYS_POWERCTRL)&0x03) + 2); - static_cfg0 = readl(MEM_STCFG0); + static_cfg0 = au_readl(MEM_STCFG0); if (static_cfg0 & (1<<11)) lcd_clock = sys_busclk / 5; /* note: BCLK switching fails with D5 */ Index: dbg_io.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/dbg_io.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- dbg_io.c 15 Feb 2002 19:47:24 -0000 1.5 +++ dbg_io.c 1 May 2002 18:00:28 -0000 1.6 @@ -53,8 +53,8 @@ #define UART_MOD_CNTRL 0x100 /* Module Control */ /* memory-mapped read/write of the port */ -#define UART16550_READ(y) (readl(DEBUG_BASE + y) & 0xff) -#define UART16550_WRITE(y,z) (writel(z&0xff, DEBUG_BASE + y)) +#define UART16550_READ(y) (au_readl(DEBUG_BASE + y) & 0xff) +#define UART16550_WRITE(y,z) (au_writel(z&0xff, DEBUG_BASE + y)) extern unsigned long get_au1000_uart_baud_base(void); extern unsigned long cal_r4koff(void); Index: dma.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/dma.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- dma.c 25 Mar 2002 22:58:15 -0000 1.8 +++ dma.c 1 May 2002 18:00:29 -0000 1.9 @@ -133,17 +133,17 @@ printk(KERN_INFO "Au1000 DMA%d Register Dump:\n", dmanr); printk(KERN_INFO " mode = 0x%08x\n", - readl(chan->io + DMA_MODE_SET)); + au_readl(chan->io + DMA_MODE_SET)); printk(KERN_INFO " addr = 0x%08x\n", - readl(chan->io + DMA_PERIPHERAL_ADDR)); + au_readl(chan->io + DMA_PERIPHERAL_ADDR)); printk(KERN_INFO " start0 = 0x%08x\n", - readl(chan->io + DMA_BUFFER0_START)); + au_readl(chan->io + DMA_BUFFER0_START)); printk(KERN_INFO " start1 = 0x%08x\n", - readl(chan->io + DMA_BUFFER1_START)); + au_readl(chan->io + DMA_BUFFER1_START)); printk(KERN_INFO " count0 = 0x%08x\n", - readl(chan->io + DMA_BUFFER0_COUNT)); + au_readl(chan->io + DMA_BUFFER0_COUNT)); printk(KERN_INFO " count1 = 0x%08x\n", - readl(chan->io + DMA_BUFFER1_COUNT)); + au_readl(chan->io + DMA_BUFFER1_COUNT)); } Index: irq.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/irq.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- irq.c 2 Apr 2002 22:59:39 -0000 1.17 +++ irq.c 1 May 2002 18:00:29 -0000 1.18 @@ -105,86 +105,86 @@ if (irq_nr > AU1000_LAST_INTC0_INT) { switch (type) { case INTC_INT_RISE_EDGE: /* 0:0:1 */ - writel(1<<(irq_nr-32), IC1_CFG2CLR); - writel(1<<(irq_nr-32), IC1_CFG1CLR); - writel(1<<(irq_nr-32), IC1_CFG0SET); + au_writel(1<<(irq_nr-32), IC1_CFG2CLR); + au_writel(1<<(irq_nr-32), IC1_CFG1CLR); + au_writel(1<<(irq_nr-32), IC1_CFG0SET); break; case INTC_INT_FALL_EDGE: /* 0:1:0 */ - writel(1<<(irq_nr-32), IC1_CFG2CLR); - writel(1<<(irq_nr-32), IC1_CFG1SET); - writel(1<<(irq_nr-32), IC1_CFG0CLR); + au_writel(1<<(irq_nr-32), IC1_CFG2CLR); + au_writel(1<<(irq_nr-32), IC1_CFG1SET); + au_writel(1<<(irq_nr-32), IC1_CFG0CLR); break; case INTC_INT_HIGH_LEVEL: /* 1:0:1 */ - writel(1<<(irq_nr-32), IC1_CFG2SET); - writel(1<<(irq_nr-32), IC1_CFG1CLR); - writel(1<<(irq_nr-32), IC1_CFG0SET); + au_writel(1<<(irq_nr-32), IC1_CFG2SET); + au_writel(1<<(irq_nr-32), IC1_CFG1CLR); + au_writel(1<<(irq_nr-32), IC1_CFG0SET); break; case INTC_INT_LOW_LEVEL: /* 1:1:0 */ - writel(1<<(irq_nr-32), IC1_CFG2SET); - writel(1<<(irq_nr-32), IC1_CFG1SET); - writel(1<<(irq_nr-32), IC1_CFG0CLR); + au_writel(1<<(irq_nr-32), IC1_CFG2SET); + au_writel(1<<(irq_nr-32), IC1_CFG1SET); + au_writel(1<<(irq_nr-32), IC1_CFG0CLR); break; case INTC_INT_DISABLED: /* 0:0:0 */ - writel(1<<(irq_nr-32), IC1_CFG0CLR); - writel(1<<(irq_nr-32), IC1_CFG1CLR); - writel(1<<(irq_nr-32), IC1_CFG2CLR); + au_writel(1<<(irq_nr-32), IC1_CFG0CLR); + au_writel(1<<(irq_nr-32), IC1_CFG1CLR); + au_writel(1<<(irq_nr-32), IC1_CFG2CLR); break; default: /* disable the interrupt */ printk("unexpected int type %d (irq %d)\n", type, irq_nr); - writel(1<<(irq_nr-32), IC1_CFG0CLR); - writel(1<<(irq_nr-32), IC1_CFG1CLR); - writel(1<<(irq_nr-32), IC1_CFG2CLR); + au_writel(1<<(irq_nr-32), IC1_CFG0CLR); + au_writel(1<<(irq_nr-32), IC1_CFG1CLR); + au_writel(1<<(irq_nr-32), IC1_CFG2CLR); return; } if (int_req) /* assign to interrupt request 1 */ - writel(1<<(irq_nr-32), IC1_ASSIGNCLR); + au_writel(1<<(irq_nr-32), IC1_ASSIGNCLR); else /* assign to interrupt request 0 */ - writel(1<<(irq_nr-32), IC1_ASSIGNSET); - writel(1<<(irq_nr-32), IC1_SRCSET); - writel(1<<(irq_nr-32), IC1_MASKCLR); - writel(1<<(irq_nr-32), IC1_WAKECLR); + au_writel(1<<(irq_nr-32), IC1_ASSIGNSET); + au_writel(1<<(irq_nr-32), IC1_SRCSET); + au_writel(1<<(irq_nr-32), IC1_MASKCLR); + au_writel(1<<(irq_nr-32), IC1_WAKECLR); } else { switch (type) { case INTC_INT_RISE_EDGE: /* 0:0:1 */ - writel(1<<irq_nr, IC0_CFG2CLR); - writel(1<<irq_nr, IC0_CFG1CLR); - writel(1<<irq_nr, IC0_CFG0SET); + au_writel(1<<irq_nr, IC0_CFG2CLR); + au_writel(1<<irq_nr, IC0_CFG1CLR); + au_writel(1<<irq_nr, IC0_CFG0SET); break; case INTC_INT_FALL_EDGE: /* 0:1:0 */ - writel(1<<irq_nr, IC0_CFG2CLR); - writel(1<<irq_nr, IC0_CFG1SET); - writel(1<<irq_nr, IC0_CFG0CLR); + au_writel(1<<irq_nr, IC0_CFG2CLR); + au_writel(1<<irq_nr, IC0_CFG1SET); + au_writel(1<<irq_nr, IC0_CFG0CLR); break; case INTC_INT_HIGH_LEVEL: /* 1:0:1 */ - writel(1<<irq_nr, IC0_CFG2SET); - writel(1<<irq_nr, IC0_CFG1CLR); - writel(1<<irq_nr, IC0_CFG0SET); + au_writel(1<<irq_nr, IC0_CFG2SET); + au_writel(1<<irq_nr, IC0_CFG1CLR); + au_writel(1<<irq_nr, IC0_CFG0SET); break; case INTC_INT_LOW_LEVEL: /* 1:1:0 */ - writel(1<<irq_nr, IC0_CFG2SET); - writel(1<<irq_nr, IC0_CFG1SET); - writel(1<<irq_nr, IC0_CFG0CLR); + au_writel(1<<irq_nr, IC0_CFG2SET); + au_writel(1<<irq_nr, IC0_CFG1SET); + au_writel(1<<irq_nr, IC0_CFG0CLR); break; case INTC_INT_DISABLED: /* 0:0:0 */ - writel(1<<irq_nr, IC0_CFG0CLR); - writel(1<<irq_nr, IC0_CFG1CLR); - writel(1<<irq_nr, IC0_CFG2CLR); + au_writel(1<<irq_nr, IC0_CFG0CLR); + au_writel(1<<irq_nr, IC0_CFG1CLR); + au_writel(1<<irq_nr, IC0_CFG2CLR); break; default: /* disable the interrupt */ printk("unexpected int type %d (irq %d)\n", type, irq_nr); - writel(1<<irq_nr, IC0_CFG0CLR); - writel(1<<irq_nr, IC0_CFG1CLR); - writel(1<<irq_nr, IC0_CFG2CLR); + au_writel(1<<irq_nr, IC0_CFG0CLR); + au_writel(1<<irq_nr, IC0_CFG1CLR); + au_writel(1<<irq_nr, IC0_CFG2CLR); return; } if (int_req) /* assign to interrupt request 1 */ - writel(1<<irq_nr, IC0_ASSIGNCLR); + au_writel(1<<irq_nr, IC0_ASSIGNCLR); else /* assign to interrupt request 0 */ - writel(1<<irq_nr, IC0_ASSIGNSET); - writel(1<<irq_nr, IC0_SRCSET); - writel(1<<irq_nr, IC0_MASKCLR); - writel(1<<irq_nr, IC0_WAKECLR); + au_writel(1<<irq_nr, IC0_ASSIGNSET); + au_writel(1<<irq_nr, IC0_SRCSET); + au_writel(1<<irq_nr, IC0_MASKCLR); + au_writel(1<<irq_nr, IC0_WAKECLR); } au_sync(); } @@ -207,12 +207,12 @@ inline void local_enable_irq(unsigned int irq_nr) { if (irq_nr > AU1000_LAST_INTC0_INT) { - writel(1<<(irq_nr-32), IC1_MASKSET); - writel(1<<(irq_nr-32), IC1_WAKESET); + au_writel(1<<(irq_nr-32), IC1_MASKSET); + au_writel(1<<(irq_nr-32), IC1_WAKESET); } else { - writel(1<<irq_nr, IC0_MASKSET); - writel(1<<irq_nr, IC0_WAKESET); + au_writel(1<<irq_nr, IC0_MASKSET); + au_writel(1<<irq_nr, IC0_WAKESET); } au_sync(); } @@ -221,12 +221,12 @@ inline void local_disable_irq(unsigned int irq_nr) { if (irq_nr > AU1000_LAST_INTC0_INT) { - writel(1<<(irq_nr-32), IC1_MASKCLR); - writel(1<<(irq_nr-32), IC1_WAKECLR); + au_writel(1<<(irq_nr-32), IC1_MASKCLR); + au_writel(1<<(irq_nr-32), IC1_WAKECLR); } else { - writel(1<<irq_nr, IC0_MASKCLR); - writel(1<<irq_nr, IC0_WAKECLR); + au_writel(1<<irq_nr, IC0_MASKCLR); + au_writel(1<<irq_nr, IC0_WAKECLR); } au_sync(); } @@ -235,12 +235,12 @@ static inline void mask_and_ack_rise_edge_irq(unsigned int irq_nr) { if (irq_nr > AU1000_LAST_INTC0_INT) { - writel(1<<(irq_nr-32), IC1_RISINGCLR); - writel(1<<(irq_nr-32), IC1_MASKCLR); + au_writel(1<<(irq_nr-32), IC1_RISINGCLR); + au_writel(1<<(irq_nr-32), IC1_MASKCLR); } else { - writel(1<<irq_nr, IC0_RISINGCLR); - writel(1<<irq_nr, IC0_MASKCLR); + au_writel(1<<irq_nr, IC0_RISINGCLR); + au_writel(1<<irq_nr, IC0_MASKCLR); } au_sync(); } @@ -249,12 +249,12 @@ static inline void mask_and_ack_fall_edge_irq(unsigned int irq_nr) { if (irq_nr > AU1000_LAST_INTC0_INT) { - writel(1<<(irq_nr-32), IC1_FALLINGCLR); - writel(1<<(irq_nr-32), IC1_MASKCLR); + au_writel(1<<(irq_nr-32), IC1_FALLINGCLR); + au_writel(1<<(irq_nr-32), IC1_MASKCLR); } else { - writel(1<<irq_nr, IC0_FALLINGCLR); - writel(1<<irq_nr, IC0_MASKCLR); + au_writel(1<<irq_nr, IC0_FALLINGCLR); + au_writel(1<<irq_nr, IC0_MASKCLR); } au_sync(); } @@ -267,7 +267,7 @@ au_sync(); #if defined(CONFIG_MIPS_PB1000) if (irq_nr == AU1000_GPIO_15) { - writew(0x8000, PB1000_MDR); /* ack int */ + au_writel(0x8000, PB1000_MDR); /* ack int */ au_sync(); } #endif @@ -286,7 +286,7 @@ } #if defined(CONFIG_MIPS_PB1000) if (irq_nr == AU1000_GPIO_15) { - writew(0x4000, PB1000_MDR); /* enable int */ + au_writel(0x4000, PB1000_MDR); /* enable int */ au_sync(); } #endif @@ -299,13 +299,13 @@ save_and_cli(flags); if (controller) { - mask = readl(IC1_MASKSET); + mask = au_readl(IC1_MASKSET); for (i=32; i<64; i++) { local_disable_irq(i); } } else { - mask = readl(IC0_MASKSET); + mask = au_readl(IC0_MASKSET); for (i=0; i<32; i++) { local_disable_irq(i); } @@ -329,9 +329,9 @@ } } if (controller) - new_mask = readl(IC1_MASKSET); + new_mask = au_readl(IC1_MASKSET); else - new_mask = readl(IC0_MASKSET); + new_mask = au_readl(IC0_MASKSET); restore_flags(flags); } @@ -511,7 +511,7 @@ int irq = 0, i; static unsigned long intc0_req0 = 0; - intc0_req0 |= readl(IC0_REQ0INT); + intc0_req0 |= au_readl(IC0_REQ0INT); if (!intc0_req0) return; @@ -531,7 +531,7 @@ int irq = 0, i; static unsigned long intc0_req1 = 0; - intc0_req1 = readl(IC0_REQ1INT); + intc0_req1 = au_readl(IC0_REQ1INT); if (!intc0_req1) return; @@ -567,20 +567,20 @@ volatile unsigned short levels, mdr; unsigned char ide_status; - intc1_req0 |= readl(IC1_REQ0INT); + intc1_req0 |= au_readl(IC1_REQ0INT); if (!intc1_req0) return; -#ifdef CONFIG_MIPS_PB1000 - writew(1, CPLD_AUX0); /* debug led 0 */ +#if defined(CONFIG_MIPS_PB1000) && defined(DEBUG_IRQ) + au_writel(1, CPLD_AUX0); /* debug led 0 */ #endif for (i=0; i<32; i++) { if ((intc1_req0 & (1<<i))) { intc1_req0 &= ~(1<<i); -#ifdef CONFIG_MIPS_PB1000 - writew(2, CPLD_AUX0); /* turn on debug led 1 */ +#if defined(CONFIG_MIPS_PB1000) && defined(DEBUG_IRQ) + au_writel(2, CPLD_AUX0); /* turn on debug led 1 */ do_IRQ(irq+32, regs); - writew(0, CPLD_AUX0); /* turn off debug led 1 */ + au_writel(0, CPLD_AUX0); /* turn off debug led 1 */ #else do_IRQ(irq+32, regs); #endif @@ -588,8 +588,8 @@ } irq++; } -#ifdef CONFIG_MIPS_PB1000 - writew(0, CPLD_AUX0); +#if defined(CONFIG_MIPS_PB1000) && defined(DEBUG_IRQ) + au_writel(0, CPLD_AUX0); #endif } @@ -599,7 +599,7 @@ int irq = 0, i; static unsigned long intc1_req1 = 0; - intc1_req1 |= readl(IC1_REQ1INT); + intc1_req1 |= au_readl(IC1_REQ1INT); if (!intc1_req1) return; Index: power.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/power.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- power.c 23 Apr 2002 16:43:47 -0000 1.7 +++ power.c 1 May 2002 18:00:29 -0000 1.8 @@ -81,16 +81,16 @@ flush_cache_all(); /* pin 6 is gpio */ - writel(readl(SYS_PINSTATERD) & ~(1 << 11), SYS_PINSTATERD); + au_writel(au_readl(SYS_PINSTATERD) & ~(1 << 11), SYS_PINSTATERD); /* gpio 6 can cause a wake up event */ - wakeup = readl(SYS_WAKEMSK); + wakeup = au_readl(SYS_WAKEMSK); wakeup &= ~(1 << 8); /* turn off match20 wakeup */ wakeup |= 1 << 6; /* turn on gpio 6 wakeup */ - writel(wakeup, SYS_WAKEMSK); + au_writel(wakeup, SYS_WAKEMSK); - writel(1, SYS_WAKESRC); /* clear cause */ - writel(1, SYS_SLPPWR); /* prepare to sleep */ + au_writel(1, SYS_WAKESRC); /* clear cause */ + au_writel(1, SYS_SLPPWR); /* prepare to sleep */ __asm__("la $4, 1f\n\t" "lui $5, 0xb190\n\t" @@ -194,22 +194,22 @@ set_au1000_speed(new_cpu_freq); set_au1000_uart_baud_base(new_baud_base); - old_refresh = readl(MEM_SDREFCFG) & 0x1ffffff; + old_refresh = au_readl(MEM_SDREFCFG) & 0x1ffffff; new_refresh = ((old_refresh * new_cpu_freq) / - old_cpu_freq) | (readl(MEM_SDREFCFG) & ~0x1ffffff); + old_cpu_freq) | (au_readl(MEM_SDREFCFG) & ~0x1ffffff); - writel(pll, SYS_CPUPLL); + au_writel(pll, SYS_CPUPLL); au_sync_delay(1); - writel(new_refresh, MEM_SDREFCFG); + au_writel(new_refresh, MEM_SDREFCFG); au_sync_delay(1); for (i = 0; i < 4; i++) { - if (readl + if (au_readl (UART_BASE + UART_MOD_CNTRL + i * 0x00100000) == 3) { old_clk = - readl(UART_BASE + UART_CLK + + au_readl(UART_BASE + UART_CLK + i * 0x00100000); // baud_rate = baud_base/clk baud_rate = old_baud_base / old_clk; @@ -231,7 +231,7 @@ (baud_rate = 9600); // new_clk = new_baud_base/baud_rate new_clk = new_baud_base / baud_rate; - writel(new_clk, + au_writel(new_clk, UART_BASE + UART_CLK + i * 0x00100000); au_sync_delay(10); Index: reset.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/reset.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- reset.c 2 Apr 2002 22:59:39 -0000 1.5 +++ reset.c 1 May 2002 18:00:29 -0000 1.6 @@ -35,6 +35,7 @@ #include <asm/processor.h> #include <asm/reboot.h> #include <asm/system.h> +#include <asm/au1000.h> extern int au_sleep(void); @@ -47,59 +48,59 @@ switch (prid & 0xFF000000) { case 0x00000000: /* Au1000 */ - writel(0x02, 0xb0000010); /* ac97_enable */ - writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ + au_writel(0x02, 0xb0000010); /* ac97_enable */ + au_writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ asm("sync"); - writel(0x00, 0xb017fffc); /* usbh_enable */ - writel(0x00, 0xb0200058); /* usbd_enable */ - writel(0x00, 0xb0300040); /* ir_enable */ - writel(0x00, 0xb0520000); /* macen0 */ - writel(0x00, 0xb0520004); /* macen1 */ - writel(0x00, 0xb1000008); /* i2s_enable */ - writel(0x00, 0xb1100100); /* uart0_enable */ - writel(0x00, 0xb1200100); /* uart1_enable */ - writel(0x00, 0xb1300100); /* uart2_enable */ - writel(0x00, 0xb1400100); /* uart3_enable */ - writel(0x02, 0xb1600100); /* ssi0_enable */ - writel(0x02, 0xb1680100); /* ssi1_enable */ - writel(0x00, 0xb1900020); /* sys_freqctrl0 */ - writel(0x00, 0xb1900024); /* sys_freqctrl1 */ - writel(0x00, 0xb1900028); /* sys_clksrc */ - writel(0x00, 0xb1900100); /* sys_pininputen */ + au_writel(0x00, 0xb017fffc); /* usbh_enable */ + au_writel(0x00, 0xb0200058); /* usbd_enable */ + au_writel(0x00, 0xb0300040); /* ir_enable */ + au_writel(0x00, 0xb0520000); /* macen0 */ + au_writel(0x00, 0xb0520004); /* macen1 */ + au_writel(0x00, 0xb1000008); /* i2s_enable */ + au_writel(0x00, 0xb1100100); /* uart0_enable */ + au_writel(0x00, 0xb1200100); /* uart1_enable */ + au_writel(0x00, 0xb1300100); /* uart2_enable */ + au_writel(0x00, 0xb1400100); /* uart3_enable */ + au_writel(0x02, 0xb1600100); /* ssi0_enable */ + au_writel(0x02, 0xb1680100); /* ssi1_enable */ + au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */ + au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */ + au_writel(0x00, 0xb1900028); /* sys_clksrc */ + au_writel(0x00, 0xb1900100); /* sys_pininputen */ break; case 0x01000000: /* Au1500 */ - writel(0x02, 0xb0000010); /* ac97_enable */ - writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ + au_writel(0x02, 0xb0000010); /* ac97_enable */ + au_writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ asm("sync"); - writel(0x00, 0xb017fffc); /* usbh_enable */ - writel(0x00, 0xb0200058); /* usbd_enable */ - writel(0x00, 0xb1520000); /* macen0 */ - writel(0x00, 0xb1520004); /* macen1 */ - writel(0x00, 0xb1100100); /* uart0_enable */ - writel(0x00, 0xb1400100); /* uart3_enable */ - writel(0x00, 0xb1900020); /* sys_freqctrl0 */ - writel(0x00, 0xb1900024); /* sys_freqctrl1 */ - writel(0x00, 0xb1900028); /* sys_clksrc */ - writel(0x00, 0xb1900100); /* sys_pininputen */ + au_writel(0x00, 0xb017fffc); /* usbh_enable */ + au_writel(0x00, 0xb0200058); /* usbd_enable */ + au_writel(0x00, 0xb1520000); /* macen0 */ + au_writel(0x00, 0xb1520004); /* macen1 */ + au_writel(0x00, 0xb1100100); /* uart0_enable */ + au_writel(0x00, 0xb1400100); /* uart3_enable */ + au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */ + au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */ + au_writel(0x00, 0xb1900028); /* sys_clksrc */ + au_writel(0x00, 0xb1900100); /* sys_pininputen */ break; case 0x02000000: /* Au1100 */ - writel(0x02, 0xb0000010); /* ac97_enable */ - writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ + au_writel(0x02, 0xb0000010); /* ac97_enable */ + au_writel(0x08, 0xb017fffc); /* usbh_enable - early errata */ asm("sync"); - writel(0x00, 0xb017fffc); /* usbh_enable */ - writel(0x00, 0xb0200058); /* usbd_enable */ - writel(0x00, 0xb0300040); /* ir_enable */ - writel(0x00, 0xb0520000); /* macen0 */ - writel(0x00, 0xb1000008); /* i2s_enable */ - writel(0x00, 0xb1100100); /* uart0_enable */ - writel(0x00, 0xb1200100); /* uart1_enable */ - writel(0x00, 0xb1400100); /* uart3_enable */ - writel(0x02, 0xb1600100); /* ssi0_enable */ - writel(0x02, 0xb1680100); /* ssi1_enable */ - writel(0x00, 0xb1900020); /* sys_freqctrl0 */ - writel(0x00, 0xb1900024); /* sys_freqctrl1 */ - writel(0x00, 0xb1900028); /* sys_clksrc */ - writel(0x00, 0xb1900100); /* sys_pininputen */ + au_writel(0x00, 0xb017fffc); /* usbh_enable */ + au_writel(0x00, 0xb0200058); /* usbd_enable */ + au_writel(0x00, 0xb0300040); /* ir_enable */ + au_writel(0x00, 0xb0520000); /* macen0 */ + au_writel(0x00, 0xb1000008); /* i2s_enable */ + au_writel(0x00, 0xb1100100); /* uart0_enable */ + au_writel(0x00, 0xb1200100); /* uart1_enable */ + au_writel(0x00, 0xb1400100); /* uart3_enable */ + au_writel(0x02, 0xb1600100); /* ssi0_enable */ + au_writel(0x02, 0xb1680100); /* ssi1_enable */ + au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */ + au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */ + au_writel(0x00, 0xb1900028); /* sys_clksrc */ + au_writel(0x00, 0xb1900100); /* sys_pininputen */ break; default: Index: rtc.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/rtc.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- rtc.c 30 Apr 2002 23:08:58 -0000 1.2 +++ rtc.c 1 May 2002 18:00:29 -0000 1.3 @@ -9,19 +9,20 @@ */ #include <linux/mc146818rtc.h> #include <asm/io.h> +#include <asm/au1000.h> #define PB1500_RTC_ADDR 0xAC000000 unsigned char std_rtc_read_data(unsigned long offset) { offset <<= 2; - return (u8)(readl(offset + PB1500_RTC_ADDR) & 0xff); + return (u8)(au_readl(offset + PB1500_RTC_ADDR) & 0xff); } static void std_rtc_write_data(unsigned char data, unsigned long offset) { offset <<= 2; - writel(data, offset + PB1500_RTC_ADDR); + au_writel(data, offset + PB1500_RTC_ADDR); } static int std_rtc_bcd_mode(void) Index: serial.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/serial.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- serial.c 23 Mar 2002 02:13:01 -0000 1.8 +++ serial.c 1 May 2002 18:00:29 -0000 1.9 @@ -241,12 +241,12 @@ static _INLINE_ unsigned int serial_in(struct async_struct *info, int offset) { - return (readl(info->port+offset) & 0xffff); + return (au_readl(info->port+offset) & 0xffff); } static _INLINE_ void serial_out(struct async_struct *info, int offset, int value) { - writel(value & 0xffff, info->port+offset); + au_writel(value & 0xffff, info->port+offset); } @@ -750,8 +750,8 @@ info->xmit.buf = (unsigned char *) page; - if (readl(UART_MOD_CNTRL + state->port) != 0x3) { - writel(3, UART_MOD_CNTRL + state->port); + if (au_readl(UART_MOD_CNTRL + state->port) != 0x3) { + au_writel(3, UART_MOD_CNTRL + state->port); au_sync_delay(10); } #ifdef SERIAL_DEBUG_OPEN @@ -988,7 +988,7 @@ info->flags &= ~ASYNC_INITIALIZED; #ifndef CONFIG_REMOTE_DEBUG - writel(0, UART_MOD_CNTRL + state->port); + au_writel(0, UART_MOD_CNTRL + state->port); au_sync_delay(10); #endif restore_flags(flags); @@ -2515,8 +2515,8 @@ if (!CONFIGURED_SERIAL_PORT(state)) return; - if (readl(UART_MOD_CNTRL + state->port) != 0x3) { - writel(3, UART_MOD_CNTRL + state->port); + if (au_readl(UART_MOD_CNTRL + state->port) != 0x3) { + au_writel(3, UART_MOD_CNTRL + state->port); au_sync_delay(10); } @@ -2550,7 +2550,7 @@ serial_outp(info, UART_IER, 0); #ifndef CONFIG_REMOTE_DEBUG - writel(0, UART_MOD_CNTRL + state->port); + au_writel(0, UART_MOD_CNTRL + state->port); au_sync_delay(10); #endif restore_flags(flags); Index: time.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/time.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- time.c 23 Mar 2002 02:13:01 -0000 1.11 +++ time.c 1 May 2002 18:00:29 -0000 1.12 @@ -123,13 +123,13 @@ static int jiffie_drift = 0; kstat.irqs[0][irq]++; - if (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20) { + if (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20) { /* should never happen! */ printk(KERN_WARNING "counter 0 w status eror\n"); return; } - pc0 = readl(SYS_TOYREAD); + pc0 = au_readl(SYS_TOYREAD); if (pc0 < last_match20) { /* counter overflowed */ time_elapsed = (0xffffffff - last_match20) + pc0; @@ -146,7 +146,7 @@ } last_pc0 = pc0; - writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2); + au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2); au_sync(); /* our counter ticks at 10.009765625 ms/tick, we we're running @@ -176,27 +176,27 @@ save_and_cli(flags); - counter = readl(SYS_COUNTER_CNTRL); - writel(counter | SYS_CNTRL_EN1, SYS_COUNTER_CNTRL); + counter = au_readl(SYS_COUNTER_CNTRL); + au_writel(counter | SYS_CNTRL_EN1, SYS_COUNTER_CNTRL); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T1S); - writel(trim_divide-1, SYS_RTCTRIM); /* RTC now ticks at 32.768/16 kHz */ - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T1S); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T1S); + au_writel(trim_divide-1, SYS_RTCTRIM); /* RTC now ticks at 32.768/16 kHz */ + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T1S); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); - writel (0, SYS_TOYWRITE); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); + au_writel (0, SYS_TOYWRITE); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); - start = readl(SYS_RTCREAD); + start = au_readl(SYS_RTCREAD); start += 2; /* wait for the beginning of a new tick */ - while (readl(SYS_RTCREAD) < start); + while (au_readl(SYS_RTCREAD) < start); /* Start r4k counter. */ write_32bit_cp0_register(CP0_COUNT, 0); end = start + (32768 / trim_divide)/2; /* wait 0.5 seconds */ - while (end > readl(SYS_RTCREAD)); + while (end > au_readl(SYS_RTCREAD)); count = read_32bit_cp0_register(CP0_COUNT); cpu_speed = count * 2; @@ -241,20 +241,20 @@ * counter 0 interrupt as a special irq and it doesn't show * up under /proc/interrupts. */ - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S); - writel(0, SYS_TOYWRITE); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S); + au_writel(0, SYS_TOYWRITE); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S); - writel(readl(SYS_WAKEMSK) | (1<<8), SYS_WAKEMSK); - writel(~0, SYS_WAKESRC); + au_writel(au_readl(SYS_WAKEMSK) | (1<<8), SYS_WAKEMSK); + au_writel(~0, SYS_WAKESRC); au_sync(); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20); /* setup match20 to interrupt once every 10ms */ - last_pc0 = last_match20 = readl(SYS_TOYREAD); - writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2); + last_pc0 = last_match20 = au_readl(SYS_TOYREAD); + au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2); au_sync(); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20); startup_match20_interrupt(); #endif @@ -282,7 +282,7 @@ unsigned long pc0; unsigned long offset; - pc0 = readl(SYS_TOYREAD); + pc0 = au_readl(SYS_TOYREAD); if (pc0 < last_pc0) { offset = 0xffffffff - last_pc0 + pc0; printk("offset over: %x\n", (unsigned)offset); Index: usbdev.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/usbdev.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- usbdev.c 23 Mar 2002 02:13:01 -0000 1.9 +++ usbdev.c 1 May 2002 18:00:29 -0000 1.10 @@ -591,7 +591,7 @@ spin_lock_irqsave(&ep->lock, flags); - cs = readl(ep->reg->ctrl_stat) | USBDEV_CS_STALL; + cs = au_readl(ep->reg->ctrl_stat) | USBDEV_CS_STALL; outl_sync(cs, ep->reg->ctrl_stat); spin_unlock_irqrestore(&ep->lock, flags); @@ -607,7 +607,7 @@ spin_lock_irqsave(&ep->lock, flags); - cs = readl(ep->reg->ctrl_stat) & ~USBDEV_CS_STALL; + cs = au_readl(ep->reg->ctrl_stat) & ~USBDEV_CS_STALL; outl_sync(cs, ep->reg->ctrl_stat); spin_unlock_irqrestore(&ep->lock, flags); @@ -635,8 +635,8 @@ spin_lock_irqsave(&ep->lock, flags); bufptr = pkt->bufptr; - while (readl(ep->reg->read_fifo_status) & USBDEV_FSTAT_FCNT_MASK) { - *bufptr++ = readl(ep->reg->read_fifo) & 0xff; + while (au_readl(ep->reg->read_fifo_status) & USBDEV_FSTAT_FCNT_MASK) { + *bufptr++ = au_readl(ep->reg->read_fifo) & 0xff; read_count++; pkt->size++; } @@ -661,7 +661,7 @@ spin_lock_irqsave(&ep->lock, flags); bufptr = pkt->bufptr; - while ((readl(ep->reg->write_fifo_status) & USBDEV_FSTAT_FCNT_MASK) < + while ((au_readl(ep->reg->write_fifo_status) & USBDEV_FSTAT_FCNT_MASK) < EP_FIFO_DEPTH) { if (bufptr < pkt->buf + pkt->size) { outl_sync(*bufptr++, ep->reg->write_fifo); @@ -698,7 +698,7 @@ * working right, but flush it anyway just in case. */ flush_write_fifo(ep); - cs = readl(ep->reg->ctrl_stat) & USBDEV_CS_STALL; + cs = au_readl(ep->reg->ctrl_stat) & USBDEV_CS_STALL; cs |= (pkt->size << USBDEV_CS_TSIZE_BIT); outl_sync(cs, ep->reg->ctrl_stat); #ifdef USBDEV_PIO @@ -731,7 +731,7 @@ dbg(__FUNCTION__ ": pkt=%p, ab=%d", ep->inlist.head, get_dma_active_buffer(ep->indma)); - outl_sync(readl(ep->reg->ctrl_stat) & USBDEV_CS_STALL, + outl_sync(au_readl(ep->reg->ctrl_stat) & USBDEV_CS_STALL, ep->reg->ctrl_stat); //disable_dma(ep->indma); free_packet(ep, &ep->inlist); @@ -1084,7 +1084,7 @@ pkt_t *pkt = 0; u32 cs; - cs = readl(ep->reg->ctrl_stat); + cs = au_readl(ep->reg->ctrl_stat); switch (fifo_num) { case 0: @@ -1151,7 +1151,7 @@ int i; u32 status; - status = readl(USB_DEV_INT_STATUS); + status = au_readl(USB_DEV_INT_STATUS); outl_sync(status, USB_DEV_INT_STATUS); // ack'em #ifdef USBDEV_PIO @@ -1181,7 +1181,7 @@ u32 cs0, buff_done; spin_lock(&ep->lock); - cs0 = readl(ep->reg->ctrl_stat); + cs0 = au_readl(ep->reg->ctrl_stat); // first check packet transmit done if ((buff_done = get_dma_buffer_done(ep->indma)) != 0) { |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:21
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/pb1000 In directory usw-pr-cvs1:/tmp/cvs-serv32242/arch/mips/au1000/pb1000 Modified Files: pci_fixup.c pci_ops.c setup.c Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: pci_fixup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1000/pci_fixup.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- pci_fixup.c 25 Sep 2001 03:36:35 -0000 1.4 +++ pci_fixup.c 1 May 2002 18:00:29 -0000 1.5 @@ -54,13 +54,13 @@ { unsigned long pci_mem_start = (unsigned long) PCI_MEM_START; - writel(0, PCI_BRIDGE_CONFIG); // set extend byte to 0 - writel(0, SDRAM_MBAR); // set mbar to 0 - writel(0x2, SDRAM_CMD); // enable memory accesses + au_writel(0, PCI_BRIDGE_CONFIG); // set extend byte to 0 + au_writel(0, SDRAM_MBAR); // set mbar to 0 + au_writel(0x2, SDRAM_CMD); // enable memory accesses au_sync_delay(1); // set extend byte to mbar of ext slot - writel(((pci_mem_start >> 24) & 0xff) | + au_writel(((pci_mem_start >> 24) & 0xff) | (1 << 8 | 1 << 9 | 1 << 10 | 1 << 27), PCI_BRIDGE_CONFIG); DBG("Set bridge config to %x\n", readl(PCI_BRIDGE_CONFIG)); } Index: pci_ops.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1000/pci_ops.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- pci_ops.c 25 Sep 2001 03:36:35 -0000 1.2 +++ pci_ops.c 1 May 2002 18:00:29 -0000 1.3 @@ -92,9 +92,9 @@ config = PCI_CONFIG_BASE | (where & ~0x3); if (access_type == PCI_ACCESS_WRITE) { - outl(*data, config); + au_writel(*data, config); } else { - *data = inl(config); + *data = au_readl(config); } au_sync_udelay(1); Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1000/setup.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- setup.c 17 Apr 2002 23:56:39 -0000 1.19 +++ setup.c 1 May 2002 18:00:29 -0000 1.20 @@ -121,8 +121,8 @@ #endif // set AUX clock to 12MHz * 8 = 96 MHz - writel(8, SYS_AUXPLL); - writel(0, SYS_PINSTATERD); + au_writel(8, SYS_AUXPLL); + au_writel(0, SYS_PINSTATERD); udelay(100); #if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) @@ -138,19 +138,19 @@ #endif /* zero and disable FREQ2 */ - sys_freqctrl = readl(SYS_FREQCTRL0); + sys_freqctrl = au_readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - writel(sys_freqctrl, SYS_FREQCTRL0); + au_writel(sys_freqctrl, SYS_FREQCTRL0); /* zero and disable USBH/USBD clocks */ - sys_clksrc = readl(SYS_CLKSRC); + sys_clksrc = au_readl(SYS_CLKSRC); sys_clksrc &= ~0x00007FE0; - writel(sys_clksrc, SYS_CLKSRC); + au_writel(sys_clksrc, SYS_CLKSRC); - sys_freqctrl = readl(SYS_FREQCTRL0); + sys_freqctrl = au_readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - sys_clksrc = readl(SYS_CLKSRC); + sys_clksrc = au_readl(SYS_CLKSRC); sys_clksrc &= ~0x00007FE0; switch (prid & 0x000000FF) @@ -159,17 +159,17 @@ case 0x01: /* HA */ case 0x02: /* HB */ /* CPU core freq to 48MHz to slow it way down... */ - writel(4, SYS_CPUPLL); + au_writel(4, SYS_CPUPLL); /* * Setup 48MHz FREQ2 from CPUPLL for USB Host */ /* FRDIV2=3 -> div by 8 of 384MHz -> 48MHz */ sys_freqctrl |= ((3<<22) | (1<<21) | (0<<20)); - writel(sys_freqctrl, SYS_FREQCTRL0); + au_writel(sys_freqctrl, SYS_FREQCTRL0); /* CPU core freq to 384MHz */ - writel(0x20, SYS_CPUPLL); + au_writel(0x20, SYS_CPUPLL); printk("Au1000: 48MHz OHCI workaround enabled\n"); break; @@ -177,7 +177,7 @@ default: /* HC and newer */ // FREQ2 = aux/2 = 48 MHz sys_freqctrl |= ((0<<22) | (1<<21) | (1<<20)); - writel(sys_freqctrl, SYS_FREQCTRL0); + au_writel(sys_freqctrl, SYS_FREQCTRL0); break; } @@ -190,64 +190,64 @@ #ifdef CONFIG_AU1000_USB_DEVICE sys_clksrc |= ((4<<7) | (0<<6) | (0<<5)); #endif - writel(sys_clksrc, SYS_CLKSRC); + au_writel(sys_clksrc, SYS_CLKSRC); #ifdef CONFIG_USB_OHCI // enable host controller and wait for reset done - writel(0x08, USB_HOST_CONFIG); + au_writel(0x08, USB_HOST_CONFIG); udelay(1000); - writel(0x0E, USB_HOST_CONFIG); + au_writel(0x0E, USB_HOST_CONFIG); udelay(1000); - readl(USB_HOST_CONFIG); // throw away first read - while (!(readl(USB_HOST_CONFIG) & 0x10)) - readl(USB_HOST_CONFIG); + au_readl(USB_HOST_CONFIG); // throw away first read + while (!(au_readl(USB_HOST_CONFIG) & 0x10)) + au_readl(USB_HOST_CONFIG); #endif // configure pins GPIO[14:9] as GPIO - pin_func = readl(SYS_PINFUNC) & (u32)(~0x8080); + pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8080); #ifndef CONFIG_AU1000_USB_DEVICE // 2nd USB port is USB host pin_func |= 0x8000; #endif - writel(pin_func, SYS_PINFUNC); - writel(0x2800, SYS_TRIOUTCLR); - writel(0x0030, SYS_OUTPUTCLR); + au_writel(pin_func, SYS_PINFUNC); + au_writel(0x2800, SYS_TRIOUTCLR); + au_writel(0x0030, SYS_OUTPUTCLR); #endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) // make gpio 15 an input (for interrupt line) - pin_func = readl(SYS_PINFUNC) & (u32)(~0x100); + pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x100); // we don't need I2S, so make it available for GPIO[31:29] pin_func |= (1<<5); - writel(pin_func, SYS_PINFUNC); + au_writel(pin_func, SYS_PINFUNC); - writel(0x8000, SYS_TRIOUTCLR); + au_writel(0x8000, SYS_TRIOUTCLR); #ifdef CONFIG_FB conswitchp = &dummy_con; #endif - static_cfg0 = readl(MEM_STCFG0) & (u32)(~0xc00); - writel(static_cfg0, MEM_STCFG0); + static_cfg0 = au_readl(MEM_STCFG0) & (u32)(~0xc00); + au_writel(static_cfg0, MEM_STCFG0); // configure RCE2* for LCD - writel(0x00000004, MEM_STCFG2); + au_writel(0x00000004, MEM_STCFG2); // MEM_STTIME2 - writel(0x09000000, MEM_STTIME2); + au_writel(0x09000000, MEM_STTIME2); // Set 32-bit base address decoding for RCE2* - writel(0x10003ff0, MEM_STADDR2); + au_writel(0x10003ff0, MEM_STADDR2); // PCI CPLD setup // expand CE0 to cover PCI - writel(0x11803e40, MEM_STADDR1); + au_writel(0x11803e40, MEM_STADDR1); // burst visibility on - writel(readl(MEM_STCFG0) | 0x1000, MEM_STCFG0); + au_writel(au_readl(MEM_STCFG0) | 0x1000, MEM_STCFG0); - writel(0x83, MEM_STCFG1); // ewait enabled, flash timing - writel(0x33030a10, MEM_STTIME1); // slower timing for FPGA + au_writel(0x83, MEM_STCFG1); // ewait enabled, flash timing + au_writel(0x33030a10, MEM_STTIME1); // slower timing for FPGA #ifdef CONFIG_FB_E1356 if ((argptr = strstr(argptr, "video=")) == NULL) { @@ -258,21 +258,22 @@ #ifdef CONFIG_PCI - writel(0, PCI_BRIDGE_CONFIG); // set extend byte to 0 - writel(0, SDRAM_MBAR); // set mbar to 0 - writel(0x2, SDRAM_CMD); // enable memory accesses + au_writel(0, PCI_BRIDGE_CONFIG); // set extend byte to 0 + au_writel(0, SDRAM_MBAR); // set mbar to 0 + au_writel(0x2, SDRAM_CMD); // enable memory accesses au_sync_delay(1); #endif #ifndef CONFIG_SERIAL_NONSTANDARD /* don't touch the default serial console */ - writel(0, UART0_ADDR + UART_CLK); + au_writel(0, UART0_ADDR + UART_CLK); #endif - writel(0, UART1_ADDR + UART_CLK); - writel(0, UART2_ADDR + UART_CLK); - writel(0, UART3_ADDR + UART_CLK); + au_writel(0, UART1_ADDR + UART_CLK); + au_writel(0, UART2_ADDR + UART_CLK); + au_writel(0, UART3_ADDR + UART_CLK); #ifdef CONFIG_BLK_DEV_IDE + if (0) { argptr = prom_getcmdline(); strcat(argptr, " ide0=noprobe"); @@ -282,15 +283,15 @@ // setup irda clocks // aux clock, divide by 2, clock from 2/4 divider - writel(readl(SYS_CLKSRC) | 0x7, SYS_CLKSRC); - pin_func = readl(SYS_PINFUNC) & (u32)(~(1<<2)); // clear IRTXD - writel(pin_func, SYS_PINFUNC); + au_writel(au_readl(SYS_CLKSRC) | 0x7, SYS_CLKSRC); + pin_func = au_readl(SYS_PINFUNC) & (u32)(~(1<<2)); // clear IRTXD + au_writel(pin_func, SYS_PINFUNC); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); - writel(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); + au_writel(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); au_sync(); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); - writel(0, SYS_TOYTRIM); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); + au_writel(0, SYS_TOYTRIM); /* Enable Au1000 BCLK switching - note: sed1356 must not use * its BCLK (Au1000 LCLK) for any timings */ @@ -301,7 +302,7 @@ case 0x02: /* HB */ break; default: /* HC and newer */ - writel(0x00000060, 0xb190003c); + au_writel(0x00000060, 0xb190003c); break; } } |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:19
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv32242/drivers/video Modified Files: au1100fb.c Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: au1100fb.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- au1100fb.c 19 Apr 2002 19:11:07 -0000 1.6 +++ au1100fb.c 1 May 2002 18:00:31 -0000 1.7 @@ -316,7 +316,7 @@ //printk("turn on panel\n"); #ifdef CONFIG_MIPS_PB1100 p_lcd_reg->lcd_control |= LCD_CONTROL_GO; - writew(readw(PB1100_G_CONTROL) | p_lcd->mode_backlight, + au_writew(au_readw(PB1100_G_CONTROL) | p_lcd->mode_backlight, PB1100_G_CONTROL); au_sync(); #endif @@ -329,7 +329,7 @@ //printk("turn off panel\n"); #ifdef CONFIG_MIPS_PB1100 p_lcd_reg->lcd_control &= ~LCD_CONTROL_GO; - writew(readw(PB1100_G_CONTROL) & ~p_lcd->mode_backlight, + au_writew(au_readw(PB1100_G_CONTROL) & ~p_lcd->mode_backlight, PB1100_G_CONTROL); au_sync(); #endif @@ -474,7 +474,7 @@ #ifdef CONFIG_MIPS_PB1100 /* turn on panel */ - writew(readw(PB1100_G_CONTROL) | p_lcd->mode_backlight, + au_writew(au_readw(PB1100_G_CONTROL) | p_lcd->mode_backlight, PB1100_G_CONTROL); p_lcd_reg->lcd_control |= LCD_CONTROL_GO; #endif @@ -555,9 +555,9 @@ /* set freqctrl now to allow more time to stabilize */ /* zero-out out LCD bits */ - sys_clksrc = readl(SYS_CLKSRC) & ~0x000003e0; + sys_clksrc = au_readl(SYS_CLKSRC) & ~0x000003e0; sys_clksrc |= p_lcd->mode_toyclksrc; - writel(sys_clksrc, SYS_CLKSRC); + au_writel(sys_clksrc, SYS_CLKSRC); /* FIXME add check to make sure auxpll is what is expected! */ au1100_setmode(); |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:19
|
Update of /cvsroot/linux-mips/linux/drivers/sound In directory usw-pr-cvs1:/tmp/cvs-serv32242/drivers/sound Modified Files: au1000.c Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: au1000.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/sound/au1000.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- au1000.c 25 Mar 2002 22:58:15 -0000 1.10 +++ au1000.c 1 May 2002 18:00:30 -0000 1.11 @@ -255,25 +255,25 @@ spin_lock_irqsave(&s->lock, flags); for (i = 0; i < POLL_COUNT; i++) - if (!(inl(AC97C_STATUS) & AC97C_CP)) + if (!(au_readl(AC97C_STATUS) & AC97C_CP)) break; if (i == POLL_COUNT) err("rdcodec: codec cmd pending expired!"); cmd = (u32) addr & AC97C_INDEX_MASK; cmd |= AC97C_READ; // read command - outl(cmd, AC97C_CMD); + au_writel(cmd, AC97C_CMD); /* now wait for the data */ for (i = 0; i < POLL_COUNT; i++) - if (!(inl(AC97C_STATUS) & AC97C_CP)) + if (!(au_readl(AC97C_STATUS) & AC97C_CP)) break; if (i == POLL_COUNT) { err("rdcodec: read poll expired!"); return 0; } - data = inl(AC97C_CMD) & 0xffff; + data = au_readl(AC97C_CMD) & 0xffff; spin_unlock_irqrestore(&s->lock, flags); @@ -291,7 +291,7 @@ spin_lock_irqsave(&s->lock, flags); for (i = 0; i < POLL_COUNT; i++) - if (!(inl(AC97C_STATUS) & AC97C_CP)) + if (!(au_readl(AC97C_STATUS) & AC97C_CP)) break; if (i == POLL_COUNT) err("wrcodec: codec cmd pending expired!"); @@ -299,7 +299,7 @@ cmd = (u32) addr & AC97C_INDEX_MASK; cmd &= ~AC97C_READ; // write command cmd |= ((u32) data << AC97C_WD_BIT); // OR in the data word - outl(cmd, AC97C_CMD); + au_writel(cmd, AC97C_CMD); spin_unlock_irqrestore(&s->lock, flags); } @@ -315,7 +315,7 @@ // first poll the CODEC_READY tag bit for (i = 0; i < POLL_COUNT; i++) - if (inl(AC97C_STATUS) & AC97C_READY) + if (au_readl(AC97C_STATUS) & AC97C_READY) break; if (i == POLL_COUNT) { err("waitcodec: CODEC_READY poll expired!"); @@ -470,7 +470,7 @@ static void set_xmit_slots(int num_channels) { - u32 ac97_config = inl(AC97C_CONFIG) & ~AC97C_XMIT_SLOTS_MASK; + u32 ac97_config = au_readl(AC97C_CONFIG) & ~AC97C_XMIT_SLOTS_MASK; switch (num_channels) { case 1: // mono @@ -485,12 +485,12 @@ break; } - outl(ac97_config, AC97C_CONFIG); + au_writel(ac97_config, AC97C_CONFIG); } static void set_recv_slots(int num_channels) { - u32 ac97_config = inl(AC97C_CONFIG) & ~AC97C_RECV_SLOTS_MASK; + u32 ac97_config = au_readl(AC97C_CONFIG) & ~AC97C_RECV_SLOTS_MASK; /* * Always enable slots 3 and 4 (stereo). Slot 6 is @@ -498,7 +498,7 @@ */ ac97_config |= (0x3 << AC97C_RECV_SLOTS_BIT); - outl(ac97_config, AC97C_CONFIG); + au_writel(ac97_config, AC97C_CONFIG); } static void start_dac(struct au1000_state *s) @@ -512,7 +512,7 @@ spin_lock_irqsave(&s->lock, flags); - inl(AC97C_STATUS); // read status to clear sticky bits + au_readl(AC97C_STATUS); // read status to clear sticky bits // reset Buffer 1 and 2 pointers to nextOut and nextOut+dma_fragsize buf1 = virt_to_phys(db->nextOut); @@ -554,7 +554,7 @@ spin_lock_irqsave(&s->lock, flags); - inl(AC97C_STATUS); // read status to clear sticky bits + au_readl(AC97C_STATUS); // read status to clear sticky bits // reset Buffer 1 and 2 pointers to nextIn and nextIn+dma_fragsize buf1 = virt_to_phys(db->nextIn); @@ -711,7 +711,7 @@ unsigned long newptr; u32 ac97c_stat, buff_done; - ac97c_stat = inl(AC97C_STATUS); + ac97c_stat = au_readl(AC97C_STATUS); #ifdef AU1000_VERBOSE_DEBUG if (ac97c_stat & (AC97C_XU | AC97C_XO | AC97C_TE)) dbg("AC97C status = 0x%08x", ac97c_stat); @@ -792,7 +792,7 @@ unsigned long newptr; u32 ac97c_stat, buff_done; - ac97c_stat = inl(AC97C_STATUS); + ac97c_stat = au_readl(AC97C_STATUS); #ifdef AU1000_VERBOSE_DEBUG if (ac97c_stat & (AC97C_RU | AC97C_RO)) dbg("AC97C status = 0x%08x", ac97c_stat); @@ -1965,9 +1965,9 @@ // print out digital controller state len += sprintf(buf + len, "AU1000 Audio Controller registers\n"); len += sprintf(buf + len, "---------------------------------\n"); - len += sprintf (buf + len, "AC97C_CONFIG = %08x\n", inl(AC97C_CONFIG)); - len += sprintf (buf + len, "AC97C_STATUS = %08x\n", inl(AC97C_STATUS)); - len += sprintf (buf + len, "AC97C_CNTRL = %08x\n", inl(AC97C_CNTRL)); + len += sprintf (buf + len, "AC97C_CONFIG = %08x\n", au_readl(AC97C_CONFIG)); + len += sprintf (buf + len, "AC97C_STATUS = %08x\n", au_readl(AC97C_STATUS)); + len += sprintf (buf + len, "AC97C_CNTRL = %08x\n", au_readl(AC97C_CNTRL)); /* print out CODEC state */ len += sprintf(buf + len, "\nAC97 CODEC registers\n"); @@ -2079,26 +2079,26 @@ #endif /* AU1000_DEBUG */ // configure pins for AC'97 - outl(inl(SYS_PINFUNC) & ~0x02, SYS_PINFUNC); + au_writel(au_readl(SYS_PINFUNC) & ~0x02, SYS_PINFUNC); // Assert reset for 10msec to the AC'97 controller, and enable clock - outl(AC97C_RS | AC97C_CE, AC97C_CNTRL); + au_writel(AC97C_RS | AC97C_CE, AC97C_CNTRL); au1000_delay(10); - outl(AC97C_CE, AC97C_CNTRL); + au_writel(AC97C_CE, AC97C_CNTRL); au1000_delay(10); // wait for clock to stabilize /* cold reset the AC'97 */ - outl(AC97C_RESET, AC97C_CONFIG); + au_writel(AC97C_RESET, AC97C_CONFIG); au1000_delay(10); - outl(0, AC97C_CONFIG); + au_writel(0, AC97C_CONFIG); /* need to delay around 500msec(bleech) to give some CODECs enough time to wakeup */ au1000_delay(500); /* warm reset the AC'97 to start the bitclk */ - outl(AC97C_SG | AC97C_SYNC, AC97C_CONFIG); + au_writel(AC97C_SG | AC97C_SYNC, AC97C_CONFIG); udelay(100); - outl(0, AC97C_CONFIG); + au_writel(0, AC97C_CONFIG); /* codec init */ if (!ac97_probe_codec(&s->codec)) |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:16
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/pb1100 In directory usw-pr-cvs1:/tmp/cvs-serv32242/arch/mips/au1000/pb1100 Modified Files: setup.c Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1100/setup.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- setup.c 18 Apr 2002 20:28:43 -0000 1.3 +++ setup.c 1 May 2002 18:00:30 -0000 1.4 @@ -129,8 +129,8 @@ #endif // set AUX clock to 12MHz * 8 = 96 MHz - writel(8, SYS_AUXPLL); - writel(0, SYS_PININPUTEN); + au_writel(8, SYS_AUXPLL); + au_writel(0, SYS_PININPUTEN); udelay(100); #if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) @@ -145,53 +145,53 @@ } #endif // configure pins GPIO[14:9] as GPIO - pin_func = readl(SYS_PINFUNC) & (u32)(~0x80); + pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x80); /* zero and disable FREQ2 */ - sys_freqctrl = readl(SYS_FREQCTRL0); + sys_freqctrl = au_readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - writel(sys_freqctrl, SYS_FREQCTRL0); + au_writel(sys_freqctrl, SYS_FREQCTRL0); /* zero and disable USBH/USBD/IrDA clock */ - sys_clksrc = readl(SYS_CLKSRC); + sys_clksrc = au_readl(SYS_CLKSRC); sys_clksrc &= ~0x0000001F; - writel(sys_clksrc, SYS_CLKSRC); + au_writel(sys_clksrc, SYS_CLKSRC); - sys_freqctrl = readl(SYS_FREQCTRL0); + sys_freqctrl = au_readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - sys_clksrc = readl(SYS_CLKSRC); + sys_clksrc = au_readl(SYS_CLKSRC); sys_clksrc &= ~0x0000001F; // FREQ2 = aux/2 = 48 MHz sys_freqctrl |= ((0<<22) | (1<<21) | (1<<20)); - writel(sys_freqctrl, SYS_FREQCTRL0); + au_writel(sys_freqctrl, SYS_FREQCTRL0); /* * Route 48MHz FREQ2 into USBH/USBD/IrDA */ sys_clksrc |= ((4<<2) | (0<<1) | 0 ); - writel(sys_clksrc, SYS_CLKSRC); + au_writel(sys_clksrc, SYS_CLKSRC); // get USB Functionality pin state (device vs host drive pins) - pin_func = readl(SYS_PINFUNC) & (u32)(~0x8000); + pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000); #ifndef CONFIG_AU1000_USB_DEVICE // 2nd USB port is USB host pin_func |= 0x8000; #endif - writel(pin_func, SYS_PINFUNC); + au_writel(pin_func, SYS_PINFUNC); #endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) #ifdef CONFIG_USB_OHCI // enable host controller and wait for reset done - writel(0x08, USB_HOST_CONFIG); + au_writel(0x08, USB_HOST_CONFIG); udelay(1000); - writel(0x0c, USB_HOST_CONFIG); + au_writel(0x0c, USB_HOST_CONFIG); udelay(1000); - readl(USB_HOST_CONFIG); - while (!(readl(USB_HOST_CONFIG) & 0x10)) + au_readl(USB_HOST_CONFIG); + while (!(au_readl(USB_HOST_CONFIG) & 0x10)) ; - readl(USB_HOST_CONFIG); + au_readl(USB_HOST_CONFIG); #endif #ifdef CONFIG_FB @@ -215,22 +215,22 @@ #ifndef CONFIG_SERIAL_NONSTANDARD /* don't touch the default serial console */ - writel(0, UART0_ADDR + UART_CLK); + au_writel(0, UART0_ADDR + UART_CLK); #endif - outl(0, UART1_ADDR + UART_CLK); - outl(0, UART3_ADDR + UART_CLK); + au_writel(0, UART1_ADDR + UART_CLK); + au_writel(0, UART3_ADDR + UART_CLK); #ifdef CONFIG_BLK_DEV_IDE ide_ops = &std_ide_ops; #endif - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); - writel(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); + au_writel(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); au_sync(); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); - writel(0, SYS_TOYTRIM); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); + au_writel(0, SYS_TOYTRIM); - writel(0x00000060, 0xb190003c); + au_writel(0x00000060, 0xb190003c); #ifdef CONFIG_RTC rtc_ops = &pb1500_rtc_ops; |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:14
|
Update of /cvsroot/linux-mips/linux/arch/mips/configs In directory usw-pr-cvs1:/tmp/cvs-serv32242/arch/mips/configs Modified Files: defconfig-pb1000 defconfig-pb1500 Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: defconfig-pb1000 =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-pb1000,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- defconfig-pb1000 22 Apr 2002 23:28:50 -0000 1.22 +++ defconfig-pb1000 1 May 2002 18:00:30 -0000 1.23 @@ -63,7 +63,6 @@ CONFIG_NEW_PCI=y CONFIG_NONCOHERENT_IO=y CONFIG_PC_KEYB=y -MAX_HWIFS=1 # CONFIG_ISA is not set # CONFIG_EISA is not set Index: defconfig-pb1500 =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-pb1500,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- defconfig-pb1500 2 Apr 2002 22:59:39 -0000 1.5 +++ defconfig-pb1500 1 May 2002 18:00:30 -0000 1.6 @@ -1,7 +1,8 @@ # -# Automatically generated by make menuconfig: don't edit +# Automatically generated make config: don't edit # CONFIG_MIPS=y +CONFIG_MIPS32=y # # Code maturity level options @@ -47,6 +48,7 @@ # CONFIG_MIPS_IVR is not set # CONFIG_MIPS_PB1000 is not set CONFIG_MIPS_PB1500=y +# CONFIG_MIPS_PB1100 is not set # CONFIG_TOSHIBA_JMR3927 is not set # CONFIG_HP_LASERJET is not set # CONFIG_HIGHMEM is not set @@ -61,7 +63,6 @@ CONFIG_PCI_AUTO=y CONFIG_NONCOHERENT_IO=y CONFIG_PC_KEYB=y -MAX_HWIFS=1 # CONFIG_ISA is not set # CONFIG_EISA is not set @@ -146,6 +147,10 @@ # CONFIG_MTD_DEBUG is not set CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_REDBOOT_PARTS is not set + +# +# User Modules And Translation Layers +# CONFIG_MTD_CHAR=y CONFIG_MTD_BLOCK=y # CONFIG_FTL is not set @@ -174,6 +179,7 @@ # CONFIG_MTD_PHYSMAP is not set # CONFIG_MTD_PB1000 is not set CONFIG_MTD_PB1500=y +# CONFIG_MTD_PB1100 is not set CONFIG_MTD_PB1500_BOOT=y # CONFIG_MTD_PB1500_USER is not set # CONFIG_MTD_CSTM_MIPS_IXX is not set @@ -186,6 +192,10 @@ # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_MTDRAM is not set # CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# # CONFIG_MTD_DOC1000 is not set # CONFIG_MTD_DOC2000 is not set # CONFIG_MTD_DOC2001 is not set @@ -263,6 +273,10 @@ # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set + +# +# +# # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set @@ -297,6 +311,10 @@ # IDE, ATA and ATAPI Block devices # CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# # CONFIG_BLK_DEV_HD_IDE is not set # CONFIG_BLK_DEV_HD is not set CONFIG_BLK_DEV_IDEDISK=y @@ -315,6 +333,10 @@ # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set # CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# # CONFIG_BLK_DEV_CMD640 is not set # CONFIG_BLK_DEV_CMD640_ENHANCED is not set # CONFIG_BLK_DEV_ISAPNP is not set @@ -474,6 +496,10 @@ # CONFIG_AIRO is not set CONFIG_HERMES=m # CONFIG_PLX_HERMES is not set + +# +# Wireless Pcmcia cards support +# CONFIG_PCMCIA_HERMES=m # CONFIG_AIRO_CS is not set CONFIG_NET_WIRELESS=y @@ -576,6 +602,14 @@ # Joysticks # # CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# # CONFIG_QIC02_TAPE is not set # @@ -612,12 +646,11 @@ # File systems # # CONFIG_QUOTA is not set -# CONFIG_FS_POSIX_ACL is not set CONFIG_AUTOFS_FS=m CONFIG_AUTOFS4_FS=m -CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS=y # CONFIG_REISERFS_CHECK is not set -# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_PROC_INFO=y # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set @@ -661,10 +694,6 @@ # CONFIG_UDF_RW is not set # CONFIG_UFS_FS is not set # CONFIG_UFS_FS_WRITE is not set -CONFIG_XFS_FS=y -# CONFIG_XFS_RT is not set -# CONFIG_XFS_QUOTA is not set -# CONFIG_XFS_DMAPI is not set # # Network File Systems @@ -826,11 +855,23 @@ # USB support # # CONFIG_USB is not set + +# +# USB Controllers +# # CONFIG_USB_UHCI is not set # CONFIG_USB_UHCI_ALT is not set # CONFIG_USB_OHCI is not set + +# +# USB Device Class drivers +# # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set + +# +# SCSI support is needed for USB Storage +# # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set @@ -842,16 +883,44 @@ # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set # CONFIG_USB_SCANNER is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# # CONFIG_USB_PEGASUS is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_CATC is not set # CONFIG_USB_CDCETHER is not set # CONFIG_USB_USBNET is not set + +# +# USB port drivers +# # CONFIG_USB_USS720 is not set # @@ -884,6 +953,10 @@ # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# # CONFIG_USB_RIO500 is not set # |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:12
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/pb1500 In directory usw-pr-cvs1:/tmp/cvs-serv32242/arch/mips/au1000/pb1500 Modified Files: pci_ops.c setup.c Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: pci_ops.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1500/pci_ops.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- pci_ops.c 23 Mar 2002 02:13:01 -0000 1.3 +++ pci_ops.c 1 May 2002 18:00:30 -0000 1.4 @@ -107,9 +107,9 @@ return -1; } - writel(((0x2000 << 16) | (readl(Au1500_PCI_STATCMD) & 0xffff)), + au_writel(((0x2000 << 16) | (au_readl(Au1500_PCI_STATCMD) & 0xffff)), Au1500_PCI_STATCMD); - //writel(readl(Au1500_PCI_CFG) & ~PCI_ERROR, Au1500_PCI_CFG); + //au_writel(au_readl(Au1500_PCI_CFG) & ~PCI_ERROR, Au1500_PCI_CFG); au_sync_udelay(1); /* setup the lower 31 bits of the 36 bit address */ @@ -127,9 +127,9 @@ #endif if (access_type == PCI_ACCESS_WRITE) { - writel(*data, config); + au_writel(*data, config); } else { - *data = readl(config); + *data = au_readl(config); } au_sync_udelay(2); @@ -137,7 +137,7 @@ access_type, bus, device, where, *data, config); /* check master abort */ - status = readl(Au1500_PCI_STATCMD); + status = au_readl(Au1500_PCI_STATCMD); if (status & (1<<29)) { *data = 0xffffffff; return -1; Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1500/setup.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- setup.c 30 Apr 2002 23:08:19 -0000 1.7 +++ setup.c 1 May 2002 18:00:30 -0000 1.8 @@ -131,8 +131,8 @@ #endif // set AUX clock to 12MHz * 8 = 96 MHz - writel(8, SYS_AUXPLL); - writel(0, SYS_PINSTATERD); + au_writel(8, SYS_AUXPLL); + au_writel(0, SYS_PINSTATERD); udelay(100); #if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) @@ -148,24 +148,24 @@ #endif /* zero and disable FREQ2 */ - sys_freqctrl = readl(SYS_FREQCTRL0); + sys_freqctrl = au_readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - writel(sys_freqctrl, SYS_FREQCTRL0); + au_writel(sys_freqctrl, SYS_FREQCTRL0); /* zero and disable USBH/USBD clocks */ - sys_clksrc = readl(SYS_CLKSRC); + sys_clksrc = au_readl(SYS_CLKSRC); sys_clksrc &= ~0x00007FE0; - writel(sys_clksrc, SYS_CLKSRC); + au_writel(sys_clksrc, SYS_CLKSRC); - sys_freqctrl = readl(SYS_FREQCTRL0); + sys_freqctrl = au_readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - sys_clksrc = readl(SYS_CLKSRC); + sys_clksrc = au_readl(SYS_CLKSRC); sys_clksrc &= ~0x00007FE0; // FREQ2 = aux/2 = 48 MHz sys_freqctrl |= ((0<<22) | (1<<21) | (1<<20)); - writel(sys_freqctrl, SYS_FREQCTRL0); + au_writel(sys_freqctrl, SYS_FREQCTRL0); /* * Route 48MHz FREQ2 into USB Host and/or Device @@ -176,28 +176,28 @@ #ifdef CONFIG_AU1000_USB_DEVICE sys_clksrc |= ((4<<7) | (0<<6) | (0<<5)); #endif - writel(sys_clksrc, SYS_CLKSRC); + au_writel(sys_clksrc, SYS_CLKSRC); - pin_func = readl(SYS_PINFUNC) & (u32)(~0x8000); + pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000); #ifndef CONFIG_AU1000_USB_DEVICE // 2nd USB port is USB host pin_func |= 0x8000; #endif - writel(pin_func, SYS_PINFUNC); + au_writel(pin_func, SYS_PINFUNC); #endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) #ifdef CONFIG_USB_OHCI // enable host controller and wait for reset done - writel(0x08, USB_HOST_CONFIG); + au_writel(0x08, USB_HOST_CONFIG); udelay(1000); - writel(0x0c, USB_HOST_CONFIG); + au_writel(0x0c, USB_HOST_CONFIG); udelay(1000); - readl(USB_HOST_CONFIG); - while (!(readl(USB_HOST_CONFIG) & 0x10)) + au_readl(USB_HOST_CONFIG); + while (!(au_readl(USB_HOST_CONFIG) & 0x10)) ; - readl(USB_HOST_CONFIG); + au_readl(USB_HOST_CONFIG); #endif #ifdef CONFIG_FB @@ -218,9 +218,9 @@ #ifndef CONFIG_SERIAL_NONSTANDARD /* don't touch the default serial console */ - writel(0, UART0_ADDR + UART_CLK); + au_writel(0, UART0_ADDR + UART_CLK); #endif - writel(0, UART3_ADDR + UART_CLK); + au_writel(0, UART3_ADDR + UART_CLK); #ifdef CONFIG_BLK_DEV_IDE ide_ops = &std_ide_ops; @@ -228,40 +228,40 @@ #ifdef CONFIG_PCI // Setup PCI bus controller - writel(0, Au1500_PCI_CMEM); - writel(0x00003fff, Au1500_CFG_BASE); + au_writel(0, Au1500_PCI_CMEM); + au_writel(0x00003fff, Au1500_CFG_BASE); #if defined(__MIPSEB__) - writel(0xf | (2<<6) | (1<<4), Au1500_PCI_CFG); + au_writel(0xf | (2<<6) | (1<<4), Au1500_PCI_CFG); #else - writel(0xf, Au1500_PCI_CFG); + au_writel(0xf, Au1500_PCI_CFG); #endif - writel(0xf0000000, Au1500_PCI_MWMASK_DEV); - writel(0, Au1500_PCI_MWBASE_REV_CCL); - writel(0x02a00356, Au1500_PCI_STATCMD); - writel(0x00003c04, Au1500_PCI_HDRTYPE); - writel(0x00000008, Au1500_PCI_MBAR); + au_writel(0xf0000000, Au1500_PCI_MWMASK_DEV); + au_writel(0, Au1500_PCI_MWBASE_REV_CCL); + au_writel(0x02a00356, Au1500_PCI_STATCMD); + au_writel(0x00003c04, Au1500_PCI_HDRTYPE); + au_writel(0x00000008, Au1500_PCI_MBAR); au_sync(); #endif - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); - writel(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); + au_writel(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); au_sync(); - while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); - writel(0, SYS_TOYTRIM); + while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); + au_writel(0, SYS_TOYTRIM); /* Enable BCLK switching */ - writel(0x00000060, 0xb190003c); + au_writel(0x00000060, 0xb190003c); #ifdef CONFIG_RTC rtc_ops = &pb1500_rtc_ops; // Enable the RTC if not already enabled - if (!(readl(0xac000028) & 0x20)) { + if (!(au_readl(0xac000028) & 0x20)) { printk("enabling clock ...\n"); - writel((readl(0xac000028) | 0x20), 0xac000028); + au_writel((au_readl(0xac000028) | 0x20), 0xac000028); } // Put the clock in BCD mode if (readl(0xac00002C) & 0x4) { /* reg B */ - writel((readl(0xac00002c) & ~0x4), 0xac00002c); + au_writel(au_readl(0xac00002c) & ~0x4, 0xac00002c); au_sync(); } #endif |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:12
|
Update of /cvsroot/linux-mips/linux/drivers/pcmcia In directory usw-pr-cvs1:/tmp/cvs-serv32242/drivers/pcmcia Modified Files: au1000_generic.c au1000_pb1x00.c Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: au1000_generic.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/pcmcia/au1000_generic.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- au1000_generic.c 22 Apr 2002 23:28:50 -0000 1.11 +++ au1000_generic.c 1 May 2002 18:00:30 -0000 1.12 @@ -168,9 +168,9 @@ /* setup the static bus controller */ timing3 = 0x100e3a07; - writel(0x00000002, MEM_STCFG3); /* type = PCMCIA */ - writel(timing3, MEM_STTIME3); - writel(0x10000000, MEM_STADDR3); /* any PCMCIA select */ + au_writel(0x00000002, MEM_STCFG3); /* type = PCMCIA */ + au_writel(timing3, MEM_STTIME3); + au_writel(0x10000000, MEM_STADDR3); /* any PCMCIA select */ au_sync_delay(1); pcmcia_socket = Index: au1000_pb1x00.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/pcmcia/au1000_pb1x00.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- au1000_pb1x00.c 22 Apr 2002 23:28:50 -0000 1.3 +++ au1000_pb1x00.c 1 May 2002 18:00:30 -0000 1.4 @@ -71,14 +71,14 @@ u16 pcr; pcr = PCR_SLOT_0_RST | PCR_SLOT_1_RST; - writew(0x8000, PB1000_MDR); /* clear pcmcia interrupt */ + au_writel(0x8000, PB1000_MDR); /* clear pcmcia interrupt */ au_sync_delay(100); - writew(0x4000, PB1000_MDR); /* enable pcmcia interrupt */ + au_writel(0x4000, PB1000_MDR); /* enable pcmcia interrupt */ au_sync(); pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ,0); pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ,1); - writew(pcr, PB1000_PCR); + au_writel(pcr, PB1000_PCR); au_sync_delay(20); return PCMCIA_NUM_SOCKS; @@ -86,9 +86,9 @@ #else /* fixme -- take care of the Pb1500 at some point */ u16 pcr; - pcr = readw(PB1100_MEM_PCMCIA) & ~0xf; /* turn off power */ + pcr = au_readw(PB1100_MEM_PCMCIA) & ~0xf; /* turn off power */ pcr &= ~(PB1100_PC_DEASSERT_RST | PB1100_PC_DRV_EN); - writew(pcr, PB1100_MEM_PCMCIA); + au_writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(500); return PCMCIA_NUM_SOCKS; #endif @@ -101,14 +101,14 @@ pcr = PCR_SLOT_0_RST | PCR_SLOT_1_RST; pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ,0); pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ,1); - writew(pcr, PB1000_PCR); + au_writel(pcr, PB1000_PCR); au_sync_delay(20); return 0; #else u16 pcr; - pcr = readw(PB1100_MEM_PCMCIA) & ~0xf; /* turn off power */ + pcr = au_readw(PB1100_MEM_PCMCIA) & ~0xf; /* turn off power */ pcr &= ~(PB1100_PC_DEASSERT_RST | PB1100_PC_DRV_EN); - writew(pcr, PB1100_MEM_PCMCIA); + au_writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(2); return 0; #endif @@ -118,17 +118,17 @@ pb1x00_pcmcia_socket_state(unsigned sock, struct pcmcia_state *state) { u32 inserted0, inserted1; - unsigned short vs0, vs1; + u16 vs0, vs1; #ifdef CONFIG_MIPS_PB1000 - vs0 = vs1 = readw(PB1000_ACR1); + vs0 = vs1 = (u16)au_readl(PB1000_ACR1); inserted0 = !(vs0 & (ACR1_SLOT_0_CD1 | ACR1_SLOT_0_CD2)); inserted1 = !(vs1 & (ACR1_SLOT_1_CD1 | ACR1_SLOT_1_CD2)); vs0 = (vs0 >> 4) & 0x3; vs1 = (vs1 >> 12) & 0x3; #else - vs0 = (readw(PB1100_BOARD_STATUS) >> 4) & 0x3; - inserted0 = !((readl(SYS_PINSTATERD) >> 9) & 0x1); /* gpio 9 */ + vs0 = (au_readw(PB1100_BOARD_STATUS) >> 4) & 0x3; + inserted0 = !((au_readl(SYS_PINSTATERD) >> 9) & 0x1); /* gpio 9 */ #endif state->ready = 0; @@ -207,7 +207,7 @@ if(configure->sock > PCMCIA_MAX_SOCK) return -1; #ifdef CONFIG_MIPS_PB1000 - pcr = readw(PB1000_PCR); + pcr = au_readl(PB1000_PCR); if (configure->sock == 0) { pcr &= ~(PCR_SLOT_0_VCC0 | PCR_SLOT_0_VCC1 | @@ -317,12 +317,12 @@ if (configure->reset) { pcr |= PCR_SLOT_0_RST; } - writew(pcr, PB1000_PCR); + au_writel(pcr, PB1000_PCR); au_sync_delay(300); #else - pcr = readw(PB1100_MEM_PCMCIA) & ~0xf; + pcr = au_readw(PB1100_MEM_PCMCIA) & ~0xf; DEBUG(KERN_INFO "Vcc %dV Vpp %dV, pcr %x, reset %d\n", configure->vcc, configure->vpp, pcr, configure->reset); @@ -381,20 +381,20 @@ break; } - writew(pcr, PB1100_MEM_PCMCIA); + au_writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(300); if (!configure->reset) { pcr |= PB1100_PC_DRV_EN; - writew(pcr, PB1100_MEM_PCMCIA); + au_writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(100); pcr |= PB1100_PC_DEASSERT_RST; - writew(pcr, PB1100_MEM_PCMCIA); + au_writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(100); } else { pcr &= ~(PB1100_PC_DEASSERT_RST | PB1100_PC_DRV_EN); - writew(pcr, PB1100_MEM_PCMCIA); + au_writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(100); } #endif |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:06
|
Update of /cvsroot/linux-mips/linux/arch/mips In directory usw-pr-cvs1:/tmp/cvs-serv32242/arch/mips Modified Files: config.in Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: config.in =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/config.in,v retrieving revision 1.96 retrieving revision 1.97 diff -u -d -r1.96 -r1.97 --- config.in 29 Apr 2002 23:05:11 -0000 1.96 +++ config.in 1 May 2002 18:00:27 -0000 1.97 @@ -379,7 +379,7 @@ define_bool CONFIG_NEW_PCI y define_bool CONFIG_NONCOHERENT_IO y define_bool CONFIG_PC_KEYB y - define_int MAX_HWIFS 1 + define_bool CONFIG_SWAP_IO_SPACE y fi if [ "$CONFIG_MIPS_PB1500" = "y" ]; then define_bool CONFIG_MIPS_AU1000 y @@ -389,7 +389,6 @@ define_bool CONFIG_PCI_AUTO y define_bool CONFIG_NONCOHERENT_IO y define_bool CONFIG_PC_KEYB y - define_int MAX_HWIFS 1 fi if [ "$CONFIG_MIPS_PB1100" = "y" ]; then define_bool CONFIG_MIPS_AU1000 y @@ -399,6 +398,7 @@ define_bool CONFIG_NEW_PCI y define_bool CONFIG_NONCOHERENT_IO y define_bool CONFIG_PC_KEYB y + define_bool CONFIG_SWAP_IO_SPACE y fi if [ "$CONFIG_IDT_79S334" = "y" ]; then define_bool CONFIG_MIPS_RC32334 y |
From: Pete P. <pp...@us...> - 2002-05-01 18:08:05
|
Update of /cvsroot/linux-mips/linux/include/asm-mips In directory usw-pr-cvs1:/tmp/cvs-serv32242/include/asm-mips Modified Files: au1000.h au1000_dma.h Log Message: Replaced readl/writel type of macros with au_readl/au_writel since we need to enable software byte swapping in BE mode, but register accesses should not be swapped. The Pb1x00 boards are now mostly BE safe, but some external peripherals (external to the SOC) are not yet usable in BE mode. USB has not been tested in BE mode either. Index: au1000.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/au1000.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- au1000.h 18 Apr 2002 00:03:28 -0000 1.18 +++ au1000.h 1 May 2002 18:00:31 -0000 1.19 @@ -58,20 +58,50 @@ void static inline outb_sync(u8 val, int reg) { - writeb(val, reg); + *(volatile u8 *)(reg) = val; au_sync(); } void static inline outw_sync(u16 val, int reg) { - writew(val, reg); + *(volatile u16 *)(reg) = val; au_sync(); } void static inline outl_sync(u32 val, int reg) { - writel(val, reg); + *(volatile u32 *)(reg) = val; au_sync(); +} + +void static inline au_writeb(u8 val, int reg) +{ + *(volatile u8 *)(reg) = val; +} + +void static inline au_writew(u16 val, int reg) +{ + *(volatile u16 *)(reg) = val; +} + +void static inline au_writel(u32 val, int reg) +{ + *(volatile u32 *)(reg) = val; +} + +static inline u8 au_readb(unsigned long port) +{ + return (*(volatile u8 *)port); +} + +static inline u16 au_readw(unsigned long port) +{ + return (*(volatile u16 *)port); +} + +static inline u32 au_readl(unsigned long port) +{ + return (*(volatile u32 *)port); } /* arch/mips/au1000/common/clocks.c */ Index: au1000_dma.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/au1000_dma.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- au1000_dma.h 25 Mar 2002 22:58:15 -0000 1.8 +++ au1000_dma.h 1 May 2002 18:00:31 -0000 1.9 @@ -191,7 +191,7 @@ // poll the halt bit for (i = 0; i < DMA_HALT_POLL; i++) - if (inl(chan->io + DMA_MODE_SET) & DMA_HALT) + if (au_readl(chan->io + DMA_MODE_SET) & DMA_HALT) break; if (i == DMA_HALT_POLL) { printk(KERN_INFO "disable_dma: HALT poll expired!\n"); @@ -233,7 +233,7 @@ struct dma_chan *chan = get_dma_chan(dmanr); if (!chan) return -1; - return (inl(chan->io + DMA_MODE_SET) & DMA_AB) ? 1 : 0; + return (au_readl(chan->io + DMA_MODE_SET) & DMA_AB) ? 1 : 0; } @@ -354,7 +354,7 @@ if (!chan) return 0; - return inl(chan->io + DMA_MODE_SET) & (DMA_D0 | DMA_D1); + return au_readl(chan->io + DMA_MODE_SET) & (DMA_D0 | DMA_D1); } @@ -380,10 +380,10 @@ if (!chan) return 0; - curBufCntReg = (inl(chan->io + DMA_MODE_SET) & DMA_AB) ? + curBufCntReg = (au_readl(chan->io + DMA_MODE_SET) & DMA_AB) ? DMA_BUFFER1_COUNT : DMA_BUFFER0_COUNT; - count = inl(chan->io + curBufCntReg) & DMA_COUNT_MASK; + count = au_readl(chan->io + curBufCntReg) & DMA_COUNT_MASK; if ((chan->mode & DMA_DW_MASK) == DMA_DW16) count <<= 1; |
From: Pete P. <pp...@us...> - 2002-04-30 23:09:02
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/common In directory usw-pr-cvs1:/tmp/cvs-serv14153/arch/mips/au1000/common Modified Files: rtc.c Log Message: BE mods. Index: rtc.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/rtc.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- rtc.c 15 Feb 2002 19:47:24 -0000 1.1 +++ rtc.c 30 Apr 2002 23:08:58 -0000 1.2 @@ -12,16 +12,16 @@ #define PB1500_RTC_ADDR 0xAC000000 -static unsigned char std_rtc_read_data(unsigned long addr) +unsigned char std_rtc_read_data(unsigned long offset) { - addr <<= 2; - return readb(addr + PB1500_RTC_ADDR); + offset <<= 2; + return (u8)(readl(offset + PB1500_RTC_ADDR) & 0xff); } -static void std_rtc_write_data(unsigned char data, unsigned long addr) +static void std_rtc_write_data(unsigned char data, unsigned long offset) { - addr <<= 2; - writeb(data, addr + PB1500_RTC_ADDR); + offset <<= 2; + writel(data, offset + PB1500_RTC_ADDR); } static int std_rtc_bcd_mode(void) |
From: Pete P. <pp...@us...> - 2002-04-30 23:08:24
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/pb1500 In directory usw-pr-cvs1:/tmp/cvs-serv13929/arch/mips/au1000/pb1500 Modified Files: setup.c Log Message: BE mods. Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1500/setup.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- setup.c 26 Apr 2002 18:51:39 -0000 1.6 +++ setup.c 30 Apr 2002 23:08:19 -0000 1.7 @@ -255,12 +255,13 @@ #ifdef CONFIG_RTC rtc_ops = &pb1500_rtc_ops; // Enable the RTC if not already enabled - if (!(readb(0xac000028) & 0x20)) { - writeb(readb(0xac000028) | 0x20, 0xac000028); + if (!(readl(0xac000028) & 0x20)) { + printk("enabling clock ...\n"); + writel((readl(0xac000028) | 0x20), 0xac000028); } // Put the clock in BCD mode - if (readb(0xac00002C) & 0x4) { /* reg B */ - writeb(readb(0xac00002c) & ~0x4, 0xac00002c); + if (readl(0xac00002C) & 0x4) { /* reg B */ + writel((readl(0xac00002c) & ~0x4), 0xac00002c); au_sync(); } #endif |
From: Steve L. <slo...@us...> - 2002-04-29 23:07:58
|
Update of /cvsroot/linux-mips/linux/arch/mips In directory usw-pr-cvs1:/tmp/cvs-serv17804 Modified Files: Makefile Log Message: backed out a temp change. Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/Makefile,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- Makefile 29 Apr 2002 23:05:11 -0000 1.46 +++ Makefile 29 Apr 2002 23:07:55 -0000 1.47 @@ -16,11 +16,9 @@ # Select the object file format to substitute into the linker script. # ifdef CONFIG_CPU_LITTLE_ENDIAN -#tool-prefix = mipsel-linux- -tool-prefix = mips_fp_le- +tool-prefix = mipsel-linux- else -#tool-prefix = mips-linux- -tool-prefix = mips_fp_be- +tool-prefix = mips-linux- endif ifdef CONFIG_CROSSCOMPILE |
Update of /cvsroot/linux-mips/linux/include/asm-mips/rc32300 In directory usw-pr-cvs1:/tmp/cvs-serv16874/include/asm-mips/rc32300 Modified Files: 79s334.h rc32300.h rc32334.h Added Files: 79eb355.h ds1501rtc.h rc32355.h rc32355_dma.h rc32355_eth.h Log Message: Initial IDT 79EB355 support. --- NEW FILE: 79eb355.h --- /* * * BRIEF MODULE DESCRIPTION * Definitions for IDT 79EB355 evaluation board. * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _79EB355_H_ #define _79EB355_H_ #define IDT_BUS_FREQ 75 // MHz #define IDT_CLOCK_MULT 2 /* Memory map of 79EB355 board */ /* DRAM */ #define RAM_BASE 0x00000000 #define RAM_SIZE (32*1024*1024) /* SRAM (device 1) */ #define SRAM_BASE 0x02000000 #define SRAM_SIZE 0x00100000 /* FLASH (device 2) */ #define FLASH_BASE 0x0C000000 #define FLASH_SIZE 0x00C00000 /* ATM PHY (device 4) */ #define ATM_PHY_BASE 0x14000000 /* TDM switch (device 3) */ #define TDM_BASE 0x1A000000 /* LCD panel (device 3) */ #define LCD_BASE 0x1A002000 /* RTC (DS1511W) (device 3) */ #define RTC_BASE 0x1A004000 /* NVRAM (256 bytes internal to the DS1511 RTC) */ #define NVRAM_ADDR RTC_BASE + 0x10 #define NVRAM_DATA RTC_BASE + 0x13 #define NVRAM_ENVSIZE_OFF 4 #define NVRAM_ENVSTART_OFF 32 #include <asm/rc32300/rc32355.h> #include <asm/rc32300/ds1501rtc.h> #endif /* _79EB355_H_ */ --- NEW FILE: ds1501rtc.h --- /* * * BRIEF MODULE DESCRIPTION * Definitions for Dallas DS1501 RTC present on IDT 79EB355 board. * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _DS1501RTC_H_ #define _DS1501RTC_H_ /* Image of DS1501 registers */ typedef struct { u8 secs; u8 mins; u8 hours; u8 weekday; u8 date; u8 month; u8 year; u8 century; u8 alarm_secs; u8 alarm_mins; u8 alarm_hours; u8 alarm_day_date; u8 watchdog_a; u8 watchdog_secs; u8 control_a; u8 control_b; u8 nvram_addr; u8 dummy[2]; u8 nvram_data; } ds1501_regs_t; #define rtc ((ds1501_regs_t*)KSEG1ADDR(RTC_BASE)) /* * Control register bit definitions */ #define TDC_ENA_BUFF 0x80 #define TDC_DIS_BUFF 0x7f #define TDS_STOP 0x80 #endif /* _DS1501RTC_H */ --- NEW FILE: rc32355.h --- /* * * BRIEF MODULE DESCRIPTION * Definitions for IDT RC32355 CPU. * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _RC32355_H_ #define _RC32355_H_ #include <linux/delay.h> #include <asm/io.h> /* Base address of internal registers */ #define RC32355_REG_BASE 0x18000000 /* System ID Registers */ #define CPU_SYSID (RC32355_REG_BASE + 0x00018) #define CPU_BTADDR (RC32355_REG_BASE + 0x0001c) #define CPU_REV (RC32355_REG_BASE + 0x0002c) /* Reset Controller */ #define RESET_CNTL (RC32355_REG_BASE + 0x08000) /* Device Controller */ #define DEV0_BASE (RC32355_REG_BASE + 0x10000) #define DEV0_MASK (RC32355_REG_BASE + 0x10004) #define DEV0_CNTL (RC32355_REG_BASE + 0x10008) #define DEV0_TIMING (RC32355_REG_BASE + 0x1000c) #define DEV_REG_OFFSET 0x10 /* SDRAM Controller */ #define SDRAM0_BASE (RC32355_REG_BASE + 0x18000) #define SDRAM0_MASK (RC32355_REG_BASE + 0x18004) #define SDRAM1_BASE (RC32355_REG_BASE + 0x18008) #define SDRAM1_MASK (RC32355_REG_BASE + 0x1800c) #define SDRAM_CNTL (RC32355_REG_BASE + 0x18010) /* Bus Arbiter */ #define BUS_ARB_CNTL0 (RC32355_REG_BASE + 0x20000) #define BUS_ARB_CNTL1 (RC32355_REG_BASE + 0x20004) /* Counters/Timers */ #define TIMER0_COUNT (RC32355_REG_BASE + 0x28000) #define TIMER0_COMPARE (RC32355_REG_BASE + 0x28004) #define TIMER0_CNTL (RC32355_REG_BASE + 0x28008) #define TIMER_REG_OFFSET 0x0C /* System Integrity */ /* Interrupt Controller */ #define IC_GROUP0_PEND (RC32355_REG_BASE + 0x30000) #define IC_GROUP0_MASK (RC32355_REG_BASE + 0x30004) #define IC_GROUP_OFFSET 0x08 #define NUM_INTR_GROUPS 5 /* * The IRQ mapping is as follows: * * IRQ Mapped To * --- ------------------- * 0 SW0 (IP0) SW0 intr * 1 SW1 (IP1) SW1 intr * - Int0 (IP2) mapped to GROUP0_IRQ_BASE * - Int1 (IP3) mapped to GROUP1_IRQ_BASE * - Int2 (IP4) mapped to GROUP2_IRQ_BASE * - Int3 (IP5) mapped to GROUP3_IRQ_BASE * - Int4 (IP6) mapped to GROUP4_IRQ_BASE * 7 Int5 (IP7) CP0 Timer * * IRQ's 8 and up are all mapped to Int0-4 (IP2-IP6), which * internally on the RC32355 is routed to the Expansion * Interrupt Controller. */ #define MIPS_CPU_TIMER_IRQ 7 #define GROUP0_IRQ_BASE 8 // Counter/Timers, UCW #define GROUP1_IRQ_BASE (GROUP0_IRQ_BASE + 6) // DMA #define GROUP2_IRQ_BASE (GROUP1_IRQ_BASE + 16) // ATM #define GROUP3_IRQ_BASE (GROUP2_IRQ_BASE + 10) // TDM, Eth, USB, UARTs, I2C #define GROUP4_IRQ_BASE (GROUP3_IRQ_BASE + 24) // GPIO #define RC32355_NR_IRQS (GROUP4_IRQ_BASE + 32) /* DMA - see rc32355_dma.h for full list of registers */ #define RC32355_DMA_BASE (RC32355_REG_BASE + 0x38000) #define DMA_CHAN_OFFSET 0x14 /* GPIO Controller */ /* TDM Bus */ /* 16550 UARTs */ #ifdef __MIPSEB__ #define RC32300_UART0_BASE (RC32355_REG_BASE + 0x50003) #define RC32300_UART1_BASE (RC32355_REG_BASE + 0x50023) #else #define RC32300_UART0_BASE (RC32355_REG_BASE + 0x50000) #define RC32300_UART1_BASE (RC32355_REG_BASE + 0x50020) #endif #define RC32300_BASE_BAUD (IDT_BUS_FREQ * 1000 * 1000 / 16) #define RC32300_UART0_IRQ GROUP3_IRQ_BASE + 14 #define RC32300_UART1_IRQ GROUP3_IRQ_BASE + 17 /* ATM */ /* Ethernet - see rc32355_eth.h for full list of registers */ #define RC32355_ETH_BASE (RC32355_REG_BASE + 0x60000) #endif /* _RC32355_H_ */ --- NEW FILE: rc32355_dma.h --- /* * * BRIEF MODULE DESCRIPTION * DMA controller defines on IDT RC32355 (Banyan) * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef BANYAN_DMA_H #define BANYAN_DMA_H /* * An image of one RC32355 dma channel registers */ typedef struct { u32 dmac; u32 dmas; u32 dmasm; u32 dmadptr; u32 dmandptr; } rc32355_dma_ch_t; /* * An image of all RC32355 dma channel registers */ typedef struct { rc32355_dma_ch_t ch[16]; } rc32355_dma_regs_t; #define rc32355_dma_regs ((rc32355_dma_regs_t*)KSEG1ADDR(RC32355_DMA_BASE)) /* DMAC register layout */ #define DMAC_RUN 0x1 /* Halts processing when cleared */ #define DMAC_DM 0x2 /* Done Mask, ignore DMA events */ #define DMAC_MODE_MASK 0xC /* DMA operating mode */ #define DMAC_MODE_AUTO 0x0 /* DMA Auto Request Mode */ #define DMAC_MODE_BURST 0x4 /* DMA Burst Request Mode */ #define DMAC_MODE_TFER 0x8 /* DMA Transfer Request Mode */ /* DMAS and DMASM register layout */ #define DMAS_F 0x01 /* Finished */ #define DMAS_D 0x02 /* Done */ #define DMAS_C 0x04 /* Chain */ #define DMAS_E 0x08 /* Error */ #define DMAS_H 0x10 /* Halt */ /* Polling count for DMAS_H bit in DMAS register after halting DMA */ #define DMA_HALT_TIMEOUT 500 static inline int rc32355_halt_dma(rc32355_dma_ch_t* ch) { int timeout=1; if (readl(&ch->dmac) & DMAC_RUN) { writel(0, &ch->dmac); for (timeout = DMA_HALT_TIMEOUT; timeout > 0; timeout--) { if (readl(&ch->dmas) & DMAS_H) { writel(0, &ch->dmas); break; } } } return timeout ? 0 : 1; } static inline void rc32355_start_dma(rc32355_dma_ch_t* ch, u32 dma_addr) { writel(0, &ch->dmandptr); writel(dma_addr, &ch->dmadptr); } static inline void rc32355_chain_dma(rc32355_dma_ch_t* ch, u32 dma_addr) { writel(dma_addr, &ch->dmandptr); } /* The following can be used to describe DMA channels 0 to 15, and the */ /* sub device's needed to select them in the DMADESC_DS_MASK field */ #define DMA_CHAN_ATM01 0 /* ATM interface 0,1 chan */ #define DMA_CHAN_ATM0IN 0 /* ATM interface 0 input */ #define DMA_DEV_ATM0IN 0 /* ATM interface 0 input */ #define DMA_CHAN_ATM1IN 0 /* ATM interface 1 input */ #define DMA_DEV_ATM1IN 1 /* ATM interface 1 input */ #define DMA_CHAN_ATM0OUT 0 /* ATM interface 0 output */ #define DMA_DEV_ATM0OUT 2 /* ATM interface 0 output */ #define DMA_CHAN_ATM1OUT 0 /* ATM interface 1 output */ #define DMA_DEV_ATM1OUT 3 /* ATM interface 1 output */ /* for entry in {0,1,2,3,4,5,6,7} - note 5,6,7 share with those below */ #define DMA_CHAN_ATMVCC(entry) ((entry)+1) /* ATM VC cache entry */ #define DMA_DEV_ATMVCC(entry) 0 #define DMA_CHAN_MEMTOMEM 6 /* Memory to memory DMA */ #define DMA_DEV_MEMTOMEM 1 /* Memory to memory DMA */ #define DMA_CHAN_ATMFMB0 7 /* ATM Frame Mode Buffer 0 */ #define DMA_DEV_ATMFMB0 1 /* ATM Frame Mode Buffer 0 */ #define DMA_CHAN_ATMFMB1 8 /* ATM Frame Mode Buffer 1 */ #define DMA_DEV_ATMFMB1 1 /* ATM Frame Mode Buffer 1 */ #define DMA_CHAN_ETHERIN 9 /* Ethernet input */ #define DMA_DEV_ETHERIN 0 /* Ethernet input */ #define DMA_CHAN_ETHEROUT 10 /* Ethernet output */ #define DMA_DEV_ETHEROUT 0 /* Ethernet output */ #define DMA_CHAN_TDMIN 11 /* TDM Bus input */ #define DMA_DEV_TDMIN 0 /* TDM Bus input */ #define DMA_CHAN_TDMOUT 12 /* TDM Bus output */ #define DMA_DEV_TDMOUT 0 /* TDM Bus output */ #define DMA_CHAN_USBIN 13 /* USB input */ #define DMA_DEV_USBIN 0 /* USB input */ #define DMA_CHAN_USBOUT 14 /* USB output */ #define DMA_DEV_USBOUT 0 /* USB output */ #define DMA_CHAN_EXTERN 15 /* External DMA */ #define DMA_DEV_EXTERN 0 /* External DMA */ /* * An RC32355 dma descriptor in system memory */ typedef struct { u32 cmdstat; /* control and status */ u32 curr_addr; /* current address of data */ u32 devcs; /* peripheral-specific control and status */ u32 link; /* link to next descriptor */ } rc32355_dma_desc_t; /* Values for the descriptor cmdstat word */ #define DMADESC_F 0x80000000u /* Finished bit */ #define DMADESC_D 0x40000000u /* Done bit */ #define DMADESC_T 0x20000000u /* Terminated bit */ #define DMADESC_IOD 0x10000000u /* Interrupt On Done */ #define DMADESC_IOF 0x08000000u /* Interrupt On Finished */ #define DMADESC_COD 0x04000000u /* Chain On Done */ #define DMADESC_COF 0x02000000u /* Chain On Finished */ #define DMADESC_DEVCMD_MASK 0x01C00000u /* Device Command mask */ #define DMADESC_DEVCMD_SHIFT 22 /* Device Command shift */ #define DMADESC_DS_MASK 0x00300000u /* Device Select mask */ #define DMADESC_DS_SHIFT 20 /* Device Select shift */ #define DMADESC_COUNT_MASK 0x0003FFFFu /* Byte Count mask */ #define DMADESC_COUNT_SHIFT 0 /* Byte Count shift */ #define IS_DMA_FINISHED(X) ( ( (X) & DMADESC_F ) >> 31) /* F Bit */ #define IS_DMA_DONE(X) ( ( (X) & DMADESC_D ) >> 30) /* D Bit */ #define IS_DMA_TERMINATED(X) ( ( (X) & DMADESC_T ) >> 29) /* T Bit */ #define IS_DMA_USED(X) (((X) & (DMADESC_F | DMADESC_D | DMADESC_T)) != 0) #define DMA_DEVCMD(devcmd) \ (((devcmd) << DMADESC_DEVCMD_SHIFT) & DMADESC_DS_MASK) #define DMA_DS(ds) \ (((ds) << DMADESC_DS_SHIFT) & DMADESC_DS_MASK) #define DMA_COUNT(count) \ ((count) & DMADESC_COUNT_MASK) #endif /* BANYAN_DMA_H */ --- NEW FILE: rc32355_eth.h --- /* * * BRIEF MODULE DESCRIPTION * Ethernet registers on IDT RC32355 (Banyan) * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef BANYAN_ETHER_H #define BANYAN_ETHER_H #include <asm/rc32300/rc32355_dma.h> /* * A partial image of the RC32355 ethernet registers */ typedef struct { u32 ethintfc; u32 ethfifott; u32 etharc; u32 ethhash0; u32 ethhash1; u32 ethfifost; u32 ethfifos; u32 ethodeops; u32 ethis; u32 ethos; u32 ethmcp; u32 _u1; u32 ethid; u32 _u2; u32 _u3; u32 _u4; u32 ethod; u32 _u5; u32 _u6; u32 _u7; u32 ethodeop; u32 _u8[43]; u32 ethsal0; u32 ethsah0; u32 ethsal1; u32 ethsah1; u32 ethsal2; u32 ethsah2; u32 ethsal3; u32 ethsah3; u32 ethrbc; u32 ethrpc; u32 ethrupc; u32 ethrfc; u32 ethtbc; u32 ethgpf; u32 _u9[50]; u32 ethmac1; u32 ethmac2; u32 ethipgt; u32 ethipgr; u32 ethclrt; u32 ethmaxf; u32 _u10; u32 ethmtest; u32 miimcfg; u32 miimcmd; u32 miimaddr; u32 miimwtd; u32 miimrdd; u32 miimind; u32 _u11; u32 _u12; u32 ethcfsa0; u32 ethcfsa1; u32 ethcfsa2; } rc32355_eth_regs_t; #define rc32355_eth_regs ((rc32355_eth_regs_t*)KSEG1ADDR(RC32355_ETH_BASE)) #define ETH_INTFC (RC32355_ETH_BASE + 0x000) /* INTerFace Control */ #define ETH_FIFOTT (RC32355_ETH_BASE + 0x004) /* FIFO Transmit Threshold */ #define ETH_ARC (RC32355_ETH_BASE + 0x008) /* Address Recognition Ctrl */ #define ETH_HASH0 (RC32355_ETH_BASE + 0x00C) /* 32 multicast Hash bits */ #define ETH_HASH1 (RC32355_ETH_BASE + 0x010) /* another 32 Hash bits */ #define ETH_FIFOST (RC32355_ETH_BASE + 0x014) /* FIFO Status Threshold */ #define ETH_FIFOS (RC32355_ETH_BASE + 0x018) /* FIFO Status Register */ #define ETH_ODEOPS (RC32355_ETH_BASE + 0x01C) /* Out Data End-Of-Pkt Size */ #define ETH_IS (RC32355_ETH_BASE + 0x020) /* Input Status */ #define ETH_OS (RC32355_ETH_BASE + 0x024) /* Output Status */ #define ETH_MCP (RC32355_ETH_BASE + 0x028) /* Managemt Clock Prescaler */ #define ETH_ID (RC32355_ETH_BASE + 0x030) /* Input Data register */ #define ETH_OD (RC32355_ETH_BASE + 0x040) /* Output Data register */ #define ETH_ODEOP (RC32355_ETH_BASE + 0x050) /* OD End-Of-Packet Size */ /* for n in { 0, 1, 2, 3 } */ #define ETH_SAL(n) (RC32355_ETH_BASE + 0x100 + (n * 8)) /* Stn Address 2-5 */ #define ETH_SAH(n) (RC32355_ETH_BASE + 0x104 + (n * 8)) /* Stn Address 0-1 */ #define ETH_RBC (RC32355_ETH_BASE + 0x120) /* Receive Byte Count */ #define ETH_RPC (RC32355_ETH_BASE + 0x124) /* Receive Packet Count */ #define ETH_RUPC (RC32355_ETH_BASE + 0x128) /* Rx Undersized Pkt count */ #define ETH_RFC (RC32355_ETH_BASE + 0x12C) /* Receive Fragment Count */ #define ETH_TBC (RC32355_ETH_BASE + 0x130) /* Transmit Byte Count */ #define ETH_GPF (RC32355_ETH_BASE + 0x134) /* Generate Pause Frame */ #define ETH_MAC1 (RC32355_ETH_BASE + 0x200) /* Medium Access Control 1 */ #define ETH_MAC2 (RC32355_ETH_BASE + 0x204) /* Medium Access Control 2 */ #define ETH_IPGT (RC32355_ETH_BASE + 0x208) /* Back-to-back InterPkt Gap */ #define ETH_IPGR (RC32355_ETH_BASE + 0x20C) /* Non " InterPkt Gap */ #define ETH_CLRT (RC32355_ETH_BASE + 0x210) /* Collis'n Window and Retry */ #define ETH_MAXF (RC32355_ETH_BASE + 0x214) /* Maximum Frame Length */ #define ETH_MTEST (RC32355_ETH_BASE + 0x21C) /* MAC Test */ #define ETHMIIM_CFG (RC32355_ETH_BASE + 0x220) /* MII Mgmt Configuration */ #define ETHMIIM_CMD (RC32355_ETH_BASE + 0x224) /* MII Mgmt Command */ #define ETHMIIM_ADDR (RC32355_ETH_BASE + 0x228) /* MII Mgmt Address */ #define ETHMIIM_WTD (RC32355_ETH_BASE + 0x22C) /* MII Mgmt Write Data */ #define ETHMIIM_RDD (RC32355_ETH_BASE + 0x230) /* MII Mgmt Read Data */ #define ETHMIIM_IND (RC32355_ETH_BASE + 0x234) /* MII Mgmt Indicators */ /* for n in { 0, 1, 2 } */ #define ETH_CFSA(n) (RC32355_ETH_BASE + 0x240 + ((n) * 4)) /* Station Addr */ /* * Register Interpretations follow */ /****************************************************************************** * ETHINTFC register *****************************************************************************/ #define ETHERINTFC_EN (1<<0) #define ETHERINTFC_ITS (1<<1) #define ETHERINTFC_RES (1<<2) #define ETHERINTFC_RIP (1<<2) #define ETHERINTFC_JAM (1<<3) /****************************************************************************** * ETHFIFOTT register *****************************************************************************/ #define ETHERFIFOTT_TTH(v) (((v)&0x3f)<<0) /****************************************************************************** * ETHARC register *****************************************************************************/ #define ETHERARC_PRO (1<<0) #define ETHERARC_AM (1<<1) #define ETHERARC_AFM (1<<2) #define ETHERARC_AB (1<<3) /****************************************************************************** * ETHHASH registers *****************************************************************************/ #define ETHERHASH0(v) (((v)&0xffff)<<0) #define ETHERHASH1(v) (((v)&0xffff)<<0) /****************************************************************************** * ETHSA registers *****************************************************************************/ #define ETHERSAL0(v) (((v)&0xffff)<<0) #define ETHERSAL1(v) (((v)&0xffff)<<0) #define ETHERSAL2(v) (((v)&0xffff)<<0) #define ETHERSAL3(v) (((v)&0xffff)<<0) #define ETHERSAH0(v) (((v)&0xff)<<0) #define ETHERSAH1(v) (((v)&0xff)<<0) #define ETHERSAH2(v) (((v)&0xff)<<0) #define ETHERSAH3(v) (((v)&0xff)<<0) /****************************************************************************** * ETHFIFOST register *****************************************************************************/ #define ETHERFIFOST_IRTH(v) (((v)&0x3f)<<0) #define ETHERFIFOST_ORTH(v) (((v)&0x3f)<<16) /****************************************************************************** * ETHFIFOS register *****************************************************************************/ #define ETHERFIFOS_IR (1<<0) #define ETHERFIFOS_OR (1<<1) #define ETHERFIFOS_OVR (1<<2) #define ETHERFIFOS_UND (1<<3) /****************************************************************************** * DATA registers *****************************************************************************/ #define ETHERID(v) (((v)&0xffff)<<0) #define ETHEROD(v) (((v)&0xffff)<<0) /****************************************************************************** * ETHODEOPS register *****************************************************************************/ #define ETHERODEOPS_SIZE(v) (((v)&0x3)<<0) /****************************************************************************** * ETHODEOP register *****************************************************************************/ #define ETHERODEOP(v) (((v)&0xffff)<<0) /****************************************************************************** * ETHIS register *****************************************************************************/ #define ETHERIS_EOP (1<<0) #define ETHERIS_ROK (1<<2) #define ETHERIS_FM (1<<3) #define ETHERIS_MP (1<<4) #define ETHERIS_BP (1<<5) #define ETHERIS_VLT (1<<6) #define ETHERIS_CF (1<<7) #define ETHERIS_OVR (1<<8) #define ETHERIS_CRC (1<<9) #define ETHERIS_CV (1<<10) #define ETHERIS_DB (1<<11) #define ETHERIS_LE (1<<12) #define ETHERIS_LOR (1<<13) #define ETHERIS_SIZE(v) (((v)&0x3)<<14) #define ETHERIS_LENGTH(v) (((v)&0xff)<<16) /****************************************************************************** * ETHOS register *****************************************************************************/ #define ETHEROS_T (1<<0) #define ETHEROS_TOK (1<<6) #define ETHEROS_MP (1<<7) #define ETHEROS_BP (1<<8) #define ETHEROS_UND (1<<9) #define ETHEROS_OF (1<<10) #define ETHEROS_ED (1<<11) #define ETHEROS_EC (1<<12) #define ETHEROS_LC (1<<13) #define ETHEROS_TD (1<<14) #define ETHEROS_CRC (1<<15) #define ETHEROS_LE (1<<16) #define ETHEROS_CC(v) (((v)&0xf)<<17) #define ETHEROS_PFD (1<<21) /****************************************************************************** * Statistics registers *****************************************************************************/ #define ETHERRBC(v) (((v)&0xffff)<<0) #define ETHERRPC(v) (((v)&0xffff)<<0) #define ETHERRUPC(v) (((v)&0xffff)<<0) #define ETHERRFC(v) (((v)&0xffff)<<0) #define ETHERTBC(v) (((v)&0xffff)<<0) /****************************************************************************** * ETHGPF register *****************************************************************************/ #define ETHERGPF_PTV(v) (((v)&0xff)<<0) /****************************************************************************** * MAC registers *****************************************************************************/ //ETHMAC1 #define ETHERMAC1_RE (1<<0) #define ETHERMAC1_PAF (1<<1) #define ETHERMAC1_RFC (1<<2) #define ETHERMAC1_TFC (1<<3) #define ETHERMAC1_LB (1<<4) #define ETHERMAC1_MR (1<<15) //ETHMAC2 #define ETHERMAC2_FD (1<<0) #define ETHERMAC2_FLC (1<<1) #define ETHERMAC2_HFE (1<<2) #define ETHERMAC2_DC (1<<3) #define ETHERMAC2_CEN (1<<4) #define ETHERMAC2_PE (1<<5) #define ETHERMAC2_VPE (1<<6) #define ETHERMAC2_APE (1<<7) #define ETHERMAC2_PPE (1<<8) #define ETHERMAC2_LPE (1<<9) #define ETHERMAC2_NB (1<<12) #define ETHERMAC2_BP (1<<13) #define ETHERMAC2_ED (1<<14) //ETHIPGT #define ETHERIPGT(v) (((v)&0x3f)<<0) //ETHIPGR #define ETHERIPGR_IPGR1(v) (((v)&0x3f)<<0) #define ETHERIPGR_IPGR2(v) (((v)&0x3f)<<8) //ETHCLRT #define ETHERCLRT_MAXRET(v) (((v)&0x3f)<<0) #define ETHERCLRT_COLWIN(v) (((v)&0x3f)<<8) //ETHMAXF #define ETHERMAXF(v) (((v)&0x3f)<<0) //ETHMTEST #define ETHERMTEST_TB (1<<2) //ETHMCP #define ETHERMCP_DIV(v) (((v)&0xff)<<0) //MIIMCFG #define ETHERMIIMCFG_CS(v) (((v)&0x3)<<2) #define ETHERMIIMCFG_R (1<<15) //MIIMCMD #define ETHERMIIMCMD_RD (1<<0) #define ETHERMIIMCMD_SCN (1<<1) //MIIMADDR #define ETHERMIIMADDR_REGADDR(v) (((v)&0x1f)<<0) #define ETHERMIIMADDR_PHYADDR(v) (((v)&0x1f)<<8) //MIIMWTD #define ETHERMIIMWTD(v) (((v)&0xff)<<0) //MIIMRDD #define ETHERMIIMRDD(v) (((v)&0xff)<<0) //MIIMIND #define ETHERMIIMIND_BSY (1<<0) #define ETHERMIIMIND_SCN (1<<1) #define ETHERMIIMIND_NV (1<<2) //DMA DEVCS IN #define ETHERDMA_IN_LENGTH(v) (((v)&0xffff)<<16) #define ETHERDMA_IN_CES (1<<14) #define ETHERDMA_IN_LOR (1<<13) #define ETHERDMA_IN_LE (1<<12) #define ETHERDMA_IN_DB (1<<11) #define ETHERDMA_IN_CV (1<<10) #define ETHERDMA_IN_CRC (1<<9) #define ETHERDMA_IN_OVR (1<<8) #define ETHERDMA_IN_CF (1<<7) #define ETHERDMA_IN_VLT (1<<6) #define ETHERDMA_IN_BP (1<<5) #define ETHERDMA_IN_MP (1<<4) #define ETHERDMA_IN_FM (1<<3) #define ETHERDMA_IN_ROK (1<<2) #define ETHERDMA_IN_LD (1<<1) #define ETHERDMA_IN_FD (1<<0) //DMA DEVCS OUT #define ETHERDMA_OUT_CC(v) (((v)&0xf)<<17) #define ETHERDMA_OUT_CNT 0x001e0000 #define ETHERDMA_OUT_SHFT 17 #define ETHERDMA_OUT_LE (1<<16) #define ETHERDMA_OUT_CRC (1<<15) #define ETHERDMA_OUT_TD (1<<14) #define ETHERDMA_OUT_LC (1<<13) #define ETHERDMA_OUT_EC (1<<12) #define ETHERDMA_OUT_ED (1<<11) #define ETHERDMA_OUT_OF (1<<10) #define ETHERDMA_OUT_UND (1<<9) #define ETHERDMA_OUT_BP (1<<8) #define ETHERDMA_OUT_MP (1<<7) #define ETHERDMA_OUT_TOK (1<<6) #define ETHERDMA_OUT_HEN (1<<5) #define ETHERDMA_OUT_CEN (1<<4) #define ETHERDMA_OUT_PEN (1<<3) #define ETHERDMA_OUT_OEN (1<<2) #define ETHERDMA_OUT_LD (1<<1) #define ETHERDMA_OUT_FD (1<<0) #define RCV_ERRS \ (ETHERDMA_IN_OVR | ETHERDMA_IN_CRC | ETHERDMA_IN_CV | ETHERDMA_IN_LE) #define TX_ERRS \ (ETHERDMA_OUT_LC | ETHERDMA_OUT_EC | ETHERDMA_OUT_ED | \ ETHERDMA_OUT_OF | ETHERDMA_OUT_UND) #define IS_RCV_ROK(X) (((X) & (1<<2)) >> 2) /* Receive Okay */ #define IS_RCV_FM(X) (((X) & (1<<3)) >> 3) /* Is Filter Match */ #define IS_RCV_MP(X) (((X) & (1<<4)) >> 4) /* Is it MP */ #define IS_RCV_BP(X) (((X) & (1<<5)) >> 5) /* Is it BP */ #define IS_RCV_VLT(X) (((X) & (1<<6)) >> 6) /* VLAN Tag Detect */ #define IS_RCV_CF(X) (((X) & (1<<7)) >> 7) /* Control Frame */ #define IS_RCV_OVR_ERR(X) (((X) & (1<<8)) >> 8) /* Receive Overflow */ #define IS_RCV_CRC_ERR(X) (((X) & (1<<9)) >> 9) /* CRC Error */ #define IS_RCV_CV_ERR(X) (((X) & (1<<10))>>10) /* Code Violation */ #define IS_RCV_DB_ERR(X) (((X) & (1<<11))>>11) /* Dribble Bits */ #define IS_RCV_LE_ERR(X) (((X) & (1<<12))>>12) /* Length error */ #define IS_RCV_LOR_ERR(X) (((X) & (1<<13))>>13) /* Length Out of Range */ #define IS_RCV_CES_ERR(X) (((X) & (1<<14))>>14) /* Preamble error */ #define RCVPKT_LENGTH(X) (((X) & 0xFFFF0000)>>16) /* Length of the received packet */ #define IS_TX_TOK(X) (((X) & (1<<6) ) >> 6 ) /* Transmit Okay */ #define IS_TX_MP(X) (((X) & (1<<7) ) >> 7 ) /* Multicast */ #define IS_TX_BP(X) (((X) & (1<<8) ) >> 8 ) /* Broadcast */ #define IS_TX_UND_ERR(X) (((X) & (1<<9) ) >> 9 ) /* Transmit FIFO Underflow */ #define IS_TX_OF_ERR(X) (((X) & (1<<10)) >>10 ) /* Oversized frame */ #define IS_TX_ED_ERR(X) (((X) & (1<<11)) >>11 ) /* Excessive deferral */ #define IS_TX_EC_ERR(X) (((X) & (1<<12)) >>12 ) /* Excessive collisions */ #define IS_TX_LC_ERR(X) (((X) & (1<<13)) >>13 ) /* Late Collision */ #define IS_TX_TD_ERR(X) (((X) & (1<<14)) >>14 ) /* Transmit deferred*/ #define IS_TX_CRC_ERR(X) (((X) & (1<<15)) >>15 ) /* CRC Error */ #define IS_TX_LE_ERR(X) (((X) & (1<<16)) >>16 ) /* Length Error */ #define TX_COLLISION_COUNT(X) (((X) & 0x001E0000u)>>17) /* Collision Count */ #endif /* BANYAN_ETHER_H */ Index: 79s334.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/rc32300/79s334.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- 79s334.h 17 Jan 2002 21:06:46 -0000 1.2 +++ 79s334.h 29 Apr 2002 23:05:12 -0000 1.3 @@ -36,7 +36,8 @@ /* NVRAM */ #define NVRAM_BASE 0x12000000 -#define NVRAM_SIZE 512 +#define NVRAM_ENVSIZE_OFF 4 +#define NVRAM_ENVSTART_OFF 0x40 /* LCD 4-digit display */ #define LCD_CLEAR 0x14000400 @@ -44,8 +45,6 @@ #define LCD_DIGIT1 0x14000008 #define LCD_DIGIT2 0x14000007 #define LCD_DIGIT3 0x14000003 - -extern int idtprintf(const char *fmt, ...); /* Interrupts routed on 79S334A board (see rc32334.h) */ #define RC32334_SCC8530_IRQ 2 Index: rc32300.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/rc32300/rc32300.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- rc32300.h 24 Jan 2002 20:13:54 -0000 1.3 +++ rc32300.h 29 Apr 2002 23:05:12 -0000 1.4 @@ -40,6 +40,8 @@ #include <asm/rc32300/79eb355.h> #endif +extern int idtprintf(const char *fmt, ...); + /* cpu pipeline flush */ static inline void rc32300_sync(void) { @@ -63,37 +65,29 @@ * swapping should be done when accessing the internal * registers. */ -static inline u8 rc32300_inb(unsigned long pa) -{ - return *((volatile u8 *)(mips_io_port_base + pa)); -} -static inline u16 rc32300_inw(unsigned long pa) -{ - return *((volatile u16 *)(mips_io_port_base + pa)); -} -static inline u32 rc32300_inl(unsigned long pa) +static inline u8 rc32300_readb(unsigned long pa) { - return *((volatile u32 *)(mips_io_port_base + pa)); + return *((volatile u8 *)KSEG1ADDR(pa)); } -static inline void rc32300_outb(u8 val, unsigned long pa) +static inline u16 rc32300_readw(unsigned long pa) { - *((volatile u8 *)(mips_io_port_base + pa)) = val; + return *((volatile u16 *)KSEG1ADDR(pa)); } -static inline void rc32300_outw(u16 val, unsigned long pa) +static inline u32 rc32300_readl(unsigned long pa) { - *((volatile u16 *)(mips_io_port_base + pa)) = val; + return *((volatile u32 *)KSEG1ADDR(pa)); } -static inline void rc32300_outl(u32 val, unsigned long pa) +static inline void rc32300_writeb(u8 val, unsigned long pa) { - *((volatile u32 *)(mips_io_port_base + pa)) = val; + *((volatile u8 *)KSEG1ADDR(pa)) = val; } -static inline u32 rc32300_readl(unsigned long va) +static inline void rc32300_writew(u16 val, unsigned long pa) { - return *((volatile u32 *)va); + *((volatile u16 *)KSEG1ADDR(pa)) = val; } -static inline void rc32300_writel(u32 val, unsigned long va) +static inline void rc32300_writel(u32 val, unsigned long pa) { - *((volatile u32 *)va) = val; + *((volatile u32 *)KSEG1ADDR(pa)) = val; } /* Index: rc32334.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/rc32300/rc32334.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- rc32334.h 17 Jan 2002 20:22:51 -0000 1.1 +++ rc32334.h 29 Apr 2002 23:05:12 -0000 1.2 @@ -90,16 +90,6 @@ #define PIO_DATA0 (RC32334_REG_BASE + 0x0600) #define PIO_DATA1 (RC32334_REG_BASE + 0x0610) -/* 16550 UARTs */ -#ifdef __MIPSEB__ -#define RC32300_UART0_BASE (RC32334_REG_BASE + 0x0803) -#define RC32300_UART1_BASE (RC32334_REG_BASE + 0x0823) -#else -#define RC32300_UART0_BASE (RC32334_REG_BASE + 0x0800) -#define RC32300_UART1_BASE (RC32334_REG_BASE + 0x0820) -#endif -#define RC32300_BASE_BAUD (IDT_BUS_FREQ * 1000 * 1000 / 16) - /* * DMA * @@ -169,6 +159,19 @@ #define GROUP14_IRQ_BASE (GROUP13_IRQ_BASE + 4) // SPI #define RC32334_NR_IRQS (GROUP14_IRQ_BASE + 1) + +/* 16550 UARTs */ +#ifdef __MIPSEB__ +#define RC32300_UART0_BASE (RC32334_REG_BASE + 0x0803) +#define RC32300_UART1_BASE (RC32334_REG_BASE + 0x0823) +#else +#define RC32300_UART0_BASE (RC32334_REG_BASE + 0x0800) +#define RC32300_UART1_BASE (RC32334_REG_BASE + 0x0820) +#endif +#define RC32300_BASE_BAUD (IDT_BUS_FREQ * 1000 * 1000 / 16) + +#define RC32300_UART0_IRQ GROUP5_IRQ_BASE +#define RC32300_UART1_IRQ GROUP6_IRQ_BASE #endif /* _RC32334_H_ */ |
From: Steve L. <slo...@us...> - 2002-04-29 23:05:16
|
Update of /cvsroot/linux-mips/linux/drivers/net In directory usw-pr-cvs1:/tmp/cvs-serv16874/drivers/net Modified Files: Config.in Makefile Added Files: banyan.c banyan.h Log Message: Initial IDT 79EB355 support. --- NEW FILE: banyan.c --- /* * banyan.c * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * A driver for the IDT RC32355 on-chip ethernet controller. * * This driver is modified from IDT: * * (C) 2001, IDT Inc. * * B Maruthanayakam : Ported from sonic.c * cgg : Modified code. * P Sadik : Applied filters. * st...@mv... : * - Ported to MVL2.1 79EB355 lsp and brought forward to 2.4.17 * (Space.c obsolete, added module init/cleanup). [...1204 lines suppressed...] { /* no options yet */ return 1; } static int __init banyan_setup_ethaddr(char *options) { memcpy(mac, options, 17); mac[17]= '\0'; return 1; } __setup("rc32355eth=", banyan_setup); __setup("ethaddr=", banyan_setup_ethaddr); #endif /* !MODULE */ module_init(banyan_init_module); module_exit(banyan_cleanup_module); --- NEW FILE: banyan.h --- /* * * BRIEF MODULE DESCRIPTION * Helpfile for banyan.c * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * Heavily modified from original version by: * * (C) 2001, IDT Inc. * * ######################################################################## * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. * * ######################################################################## */ #ifndef BANYAN_H #define BANYAN_H #include <linux/config.h> #ifdef BANYAN_DEBUG #define dbg(lvl, format, arg...) \ if (banyan_debug > lvl) \ printk(KERN_INFO "%s: " format, dev->name , ## arg) #else #define dbg(lvl, format, arg...) do {} while (0) #endif #define err(format, arg...) \ printk(KERN_ERR "%s: " format, dev->name , ## arg) #define info(format, arg...) \ printk(KERN_INFO "%s: " format, dev->name , ## arg) #define warn(format, arg...) \ printk(KERN_WARNING "%s: " format, dev->name , ## arg) #define ETH_DMA_RX_IRQ GROUP1_IRQ_BASE + 9 #define ETH_DMA_TX_IRQ GROUP1_IRQ_BASE + 10 #define ETH_RX_OVR_IRQ GROUP3_IRQ_BASE + 22 /* Index to functions, as function prototypes. */ static int banyan_open(struct net_device *dev); static int banyan_send_packet(struct sk_buff *skb, struct net_device *dev); static void ban_ovr_interrupt(int irq, void *dev_id, struct pt_regs * regs); static void ban_rx_dma_interrupt(int irq, void *dev_id, struct pt_regs * regs); static void ban_tx_dma_interrupt(int irq, void *dev_id, struct pt_regs * regs); static void banyan_rx(struct net_device *dev); static void banyan_tx(struct net_device *dev); static int banyan_close(struct net_device *dev); static struct net_device_stats *banyan_get_stats(struct net_device *dev); static void banyan_multicast_list(struct net_device *dev); static int banyan_init(struct net_device *dev); static void banyan_tx_timeout(struct net_device *dev); /* cgg - the following must be powers of two */ #define BANYAN_NUM_RDS 32 /* number of receive descriptors */ #define BANYAN_NUM_TDS 32 /* number of transmit descriptors */ #define BANYAN_RBSIZE 1536 /* size of one resource buffer = Ether MTU */ #define BANYAN_RDS_MASK (BANYAN_NUM_RDS-1) #define BANYAN_TDS_MASK (BANYAN_NUM_TDS-1) #define RD_RING_SIZE (BANYAN_NUM_RDS * sizeof(rc32355_dma_desc_t)) #define TD_RING_SIZE (BANYAN_NUM_TDS * sizeof(rc32355_dma_desc_t)) #define BANYAN_TX_TIMEOUT HZ/4 /* Information that need to be kept for each board. */ struct banyan_local { rc32355_eth_regs_t* eth_regs; rc32355_dma_ch_t* rx_dma_regs; rc32355_dma_ch_t* tx_dma_regs; volatile rc32355_dma_desc_t * td_ring; /* transmit descriptor ring */ volatile rc32355_dma_desc_t * rd_ring; /* receive descriptor ring */ u8* rba; /* start of rx buffer areas */ struct sk_buff* tx_skb[BANYAN_NUM_TDS]; /* skbuffs for pkt to trans */ int rx_next_out; int tx_next_in; /* next trans packet */ int tx_next_out; /* last packet processed by ISR */ int tx_count; /* current # of pkts waiting to be sent */ int tx_full; int rx_irq; int tx_irq; int ovr_irq; struct net_device_stats stats; spinlock_t lock; /* Serialise access to device */ #ifdef BANYAN_PROC_DEBUG /* debug /proc entry */ struct proc_dir_entry *ps; int dma_halt_cnt; u32 halt_tx_count; int dma_collide_cnt; u32 collide_tx_count; int dma_run_cnt; u32 run_tx_count; int dma_race_cnt; u32 race_tx_count; #endif }; #endif /* BANYAN_H */ Index: Config.in =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/net/Config.in,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- Config.in 26 Feb 2002 19:03:29 -0000 1.20 +++ Config.in 29 Apr 2002 23:05:11 -0000 1.21 @@ -62,6 +62,9 @@ if [ "$CONFIG_MIPS_AU1000" = "y" ]; then bool ' MIPS AU1000 Ethernet support' CONFIG_MIPS_AU1000_ENET fi + if [ "$CONFIG_MIPS_RC32355" = "y" ]; then + bool ' IDT RC32355 Ethernet support' CONFIG_MIPS_RC32355_ETH + fi if [ "$CONFIG_SIBYTE_SB1250" = "y" ]; then tristate ' SB1250 Ethernet support' CONFIG_NET_SB1250_MAC fi Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/net/Makefile,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- Makefile 26 Feb 2002 19:03:29 -0000 1.11 +++ Makefile 29 Apr 2002 23:05:11 -0000 1.12 @@ -199,6 +199,7 @@ obj-$(CONFIG_MIPS_JAZZ_SONIC) += jazzsonic.o obj-$(CONFIG_MIPS_GT96100ETH) += gt96100eth.o obj-$(CONFIG_MIPS_AU1000_ENET) += au1000_eth.o +obj-$(CONFIG_MIPS_RC32355_ETH) += banyan.o obj-$(CONFIG_SGI_IOC3_ETH) += ioc3-eth.o obj-$(CONFIG_BAGETLANCE) += bagetlance.o obj-$(CONFIG_DECLANCE) += declance.o |
From: Steve L. <slo...@us...> - 2002-04-29 23:05:16
|
Update of /cvsroot/linux-mips/linux/arch/mips/rc32300/common In directory usw-pr-cvs1:/tmp/cvs-serv16874/arch/mips/rc32300/common Modified Files: Makefile dbg_io.c puts.c reset.c time.c Added Files: prom.c Removed Files: idtdisplay.c Log Message: Initial IDT 79EB355 support. --- NEW FILE: prom.c --- /* * * BRIEF MODULE DESCRIPTION * PROM library initialization code for the IDT 79S334A and 79EB355 * boards, assumes the boot code is IDT/sim. * * Copyright 2001,2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * st...@mv... or so...@mv... * * This file was derived from Carsten Langgaard's * arch/mips/mips-boards/xx files. * * Carsten Langgaard, car...@mi... * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <linux/kdev_t.h> #include <linux/major.h> #include <linux/console.h> #include <asm/bootinfo.h> #include <asm/page.h> #include <linux/mm.h> #include <linux/sched.h> #include <linux/bootmem.h> #include <linux/ioport.h> #include <asm/rc32300/rc32300.h> char arcs_cmdline[CL_SIZE]; char * __init prom_getcmdline(void) { return &(arcs_cmdline[0]); } #ifdef CONFIG_IDT_79EB355 /* * NVRAM on the 79EB355 is internal to the DS1511 RTC and uses * indexed addressing. */ static inline u8 nvreadb(int offset) { writeb((u8)offset, &rtc->nvram_addr); return readb(&rtc->nvram_data); } #else static inline u8 nvreadb(int offset) { return *((u8*)KSEG1ADDR(NVRAM_BASE + offset)); } #endif static inline u8 env_readb(int env_index) { return nvreadb(NVRAM_ENVSTART_OFF + env_index); } /* * Parses environment variable strings in NVRAM, copying strings * beginning with "bootparm?=" to arcs_cmdline[]. For example, * * netaddr=10.0.1.95 * bootaddr=10.0.0.139 * bootfile=vmlinus * bootparm1=root=/dev/nfs * bootparm2=ip=10.0.1.95 * * is parsed to: * * root=/dev/nfs ip=10.0.1.95 * * in arcs_cmdline[]. */ static void prom_init_cmdline(void) { int env_size, env_index, arcs_index; env_index = arcs_index = 0; /* stored size is 2 bytes, always big endian order */ env_size = (int)((nvreadb(NVRAM_ENVSIZE_OFF) << 8) + nvreadb(NVRAM_ENVSIZE_OFF+1)); if (env_size < 0 || env_size > 512) return; /* invalid total env size */ while (env_index < env_size && arcs_index < sizeof(arcs_cmdline)) { char env_str[100]; int i, arcs_len; /* first byte is length of this env variable string, including the length. */ int env_len = env_readb(env_index); int max_len = min(100, env_size - env_index); if (env_len == 0 || env_len > max_len) break; /* invalid env variable size */ /* copy the env string */ for (i=0; i<env_len; i++) env_str[i] = env_readb(env_index + i); if (strncmp(&env_str[1], "bootparm", 8) == 0) { /* copy to arcs, skipping over length byte and "bootparm?=" string, a total of 11 chars. */ arcs_len = env_len - 11; /* will this string fit in arcs ? */ if (arcs_index + arcs_len + 1 > sizeof(arcs_cmdline)) break; /* nope */ memcpy(&arcs_cmdline[arcs_index], &env_str[11], arcs_len); arcs_index += arcs_len; /* add a blank between env variables */ arcs_cmdline[arcs_index++] = ' '; #ifdef CONFIG_IDT_79EB355 } else if (strncmp(&env_str[1], "ethaddr", 7) == 0) { /* copy to arcs, skipping over length byte */ arcs_len = env_len - 1; /* will this string fit in arcs ? */ if (arcs_index + arcs_len + 1 > sizeof(arcs_cmdline)) break; /* nope */ memcpy(&arcs_cmdline[arcs_index], &env_str[1], arcs_len); arcs_index += arcs_len; /* add a blank between env variables */ arcs_cmdline[arcs_index++] = ' '; #endif } /* increment to next prom env variable */ env_index += env_len; } arcs_cmdline[arcs_index] = '\0'; } extern unsigned long mips_machgroup; extern unsigned long mips_machtype; const char *get_system_type(void) { #ifdef CONFIG_IDT_79EB355 return "IDT 79EB355"; #else return "IDT 79S334A"; #endif } struct resource rc32300_res_ram = { "RAM", 0, RAM_SIZE, IORESOURCE_MEM }; int __init prom_init(int argc, char **argv, char **envp, int *prom_vec) { /* set up command line */ prom_init_cmdline(); /* set our arch type */ mips_machgroup = MACH_GROUP_IDT; #ifdef CONFIG_IDT_79EB355 mips_machtype = MACH_IDT79EB355; #else mips_machtype = MACH_IDT79S334; #endif add_memory_region(0, rc32300_res_ram.end - rc32300_res_ram.start, BOOT_MEM_RAM); return 0; } void prom_free_prom_memory(void) { } Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/common/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile 17 Jan 2002 03:09:08 -0000 1.2 +++ Makefile 29 Apr 2002 23:05:11 -0000 1.3 @@ -19,8 +19,6 @@ O_TARGET := rc32300.o -obj-y := int-handler.o reset.o puts.o time.o idtdisplay.o - -obj-$(CONFIG_REMOTE_DEBUG) += dbg_io.o +obj-y := dbg_io.o int-handler.o reset.o prom.o puts.o time.o include $(TOPDIR)/Rules.make Index: dbg_io.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/common/dbg_io.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- dbg_io.c 24 Jan 2002 20:13:34 -0000 1.5 +++ dbg_io.c 29 Apr 2002 23:05:11 -0000 1.6 @@ -2,8 +2,6 @@ #include <linux/config.h> #include <asm/rc32300/rc32300.h> -#ifdef CONFIG_REMOTE_DEBUG - /* --- CONFIG --- */ /* we need uint32 uint8 */ @@ -58,8 +56,8 @@ /* memory-mapped read/write of the port */ -#define UART16550_READ(y) rc32300_inb(DEBUG_BASE + y) -#define UART16550_WRITE(y,z) rc32300_outb(z, DEBUG_BASE + y) +#define UART16550_READ(y) rc32300_readb(DEBUG_BASE + y) +#define UART16550_WRITE(y,z) rc32300_writeb(z, DEBUG_BASE + y) static void debugInit(uint32 baud, uint8 data, uint8 parity, uint8 stop) { @@ -115,5 +113,3 @@ UART16550_WRITE(OFS_SEND_BUFFER, byte); return 1; } - -#endif Index: puts.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/common/puts.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- puts.c 24 Jan 2002 20:13:34 -0000 1.6 +++ puts.c 29 Apr 2002 23:05:11 -0000 1.7 @@ -58,14 +58,14 @@ int i = 0; do { - ch = rc32300_inb(SER_CMD); + ch = rc32300_readb(SER_CMD); slow_down(); i++; if (i > TIMEOUT) { break; } } while (0 == (ch & TX_BUSY)); - rc32300_outb(c, SER_DATA); + rc32300_writeb(c, SER_DATA); } void puts(unsigned char *cp) @@ -75,14 +75,14 @@ while (*cp) { do { - ch = rc32300_inb(SER_CMD); + ch = rc32300_readb(SER_CMD); slow_down(); i++; if (i > TIMEOUT) { break; } } while (0 == (ch & TX_BUSY)); - rc32300_outb(*cp++, SER_DATA); + rc32300_writeb(*cp++, SER_DATA); } putch('\r'); putch('\n'); @@ -96,14 +96,14 @@ while (*cp) { do { - ch = rc32300_inb(SER_CMD); + ch = rc32300_readb(SER_CMD); slow_down(); i++; if (i > TIMEOUT) { break; } } while (0 == (ch & TX_BUSY)); - rc32300_outb(*cp++, SER_DATA); + rc32300_writeb(*cp++, SER_DATA); } } Index: reset.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/common/reset.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- reset.c 24 Jan 2002 20:13:34 -0000 1.5 +++ reset.c 29 Apr 2002 23:05:11 -0000 1.6 @@ -44,13 +44,15 @@ flush_cache_all(); write_32bit_cp0_register(CP0_WIRED, 0); -#ifdef CONFIG_CPU_RC32334 +#ifdef CONFIG_MIPS_RC32334 // Trigger the WatchDog Timer (Timer 3) to warm reset - rc32300_outl(0, TIMER0_CNTL + 3*TIMER_REG_OFFSET); - rc32300_outl(0xd8, CPU_IP_BUSERR_CNTL); - rc32300_outl(0, TIMER0_COUNT + 3*TIMER_REG_OFFSET); - rc32300_outl(2, TIMER0_COMPARE + 3*TIMER_REG_OFFSET); - rc32300_outl(1, TIMER0_CNTL + 3*TIMER_REG_OFFSET); + rc32300_writel(0, TIMER0_CNTL + 3*TIMER_REG_OFFSET); + rc32300_writel(0xd8, CPU_IP_BUSERR_CNTL); + rc32300_writel(0, TIMER0_COUNT + 3*TIMER_REG_OFFSET); + rc32300_writel(2, TIMER0_COMPARE + 3*TIMER_REG_OFFSET); + rc32300_writel(1, TIMER0_CNTL + 3*TIMER_REG_OFFSET); +#elif defined (CONFIG_MIPS_RC32355) + rc32300_writel(0x80000001, RESET_CNTL); #else __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); #endif Index: time.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/common/time.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- time.c 17 Jan 2002 21:07:24 -0000 1.4 +++ time.c 29 Apr 2002 23:05:11 -0000 1.5 @@ -42,6 +42,10 @@ extern unsigned int mips_counter_frequency; +#if defined(CONFIG_IDT_79EB355) && defined(CONFIG_MIPS_RTC) +extern void rtc_ds1501_init(void); +#endif + /* * Figure out the r4k offset, the amount to increment the compare * register for each time tick. There is no RTC available. @@ -71,6 +75,11 @@ printk("CPU frequency %d.%02d MHz\n", est_freq/1000000, (est_freq%1000000)*100/1000000); __restore_flags(flags); + +#if defined(CONFIG_IDT_79EB355) && defined(CONFIG_MIPS_RTC) + /* The 79EB355 board has the Dallas DS1511 RTC chip */ + rtc_ds1501_init(); +#endif } --- idtdisplay.c DELETED --- |
From: Steve L. <slo...@us...> - 2002-04-29 23:05:15
|
Update of /cvsroot/linux-mips/linux/include/asm-mips In directory usw-pr-cvs1:/tmp/cvs-serv16874/include/asm-mips Modified Files: serial.h Log Message: Initial IDT 79EB355 support. Index: serial.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/serial.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- serial.h 21 Apr 2002 20:06:20 -0000 1.12 +++ serial.h 29 Apr 2002 23:05:11 -0000 1.13 @@ -159,17 +159,17 @@ #define AU1000_SERIAL_PORT_DEFNS #endif -#ifdef CONFIG_IDT_79S334 +#ifdef CONFIG_CPU_RC32300 #include <asm/rc32300/rc32300.h> #define RC32300_SERIAL_PORT_DEFNS \ { baud_base: RC32300_BASE_BAUD, \ iomem_base: KSEG1ADDR(RC32300_UART0_BASE), \ - irq: GROUP5_IRQ_BASE, \ + irq: RC32300_UART0_IRQ, \ iomem_reg_shift: 2, io_type: SERIAL_IO_MEM, \ flags: STD_COM_FLAGS, type: 3 }, \ { baud_base: RC32300_BASE_BAUD, \ iomem_base: KSEG1ADDR(RC32300_UART1_BASE), \ - irq: GROUP6_IRQ_BASE, \ + irq: RC32300_UART1_IRQ, \ iomem_reg_shift: 2, io_type: SERIAL_IO_MEM, \ flags: STD_COM_FLAGS, type: 3 }, #else |
From: Steve L. <slo...@us...> - 2002-04-29 23:05:15
|
Update of /cvsroot/linux-mips/linux/arch/mips/rc32300/79S334 In directory usw-pr-cvs1:/tmp/cvs-serv16874/arch/mips/rc32300/79S334 Modified Files: Makefile irq.c pci_fixup.c pci_ops.c setup.c Added Files: idtdisplay.c Removed Files: prom.c Log Message: Initial IDT 79EB355 support. --- NEW FILE: idtdisplay.c --- /* * * BRIEF MODULE DESCRIPTION * 79S334A 4 digits display. * * Copyright 2002 THOMSON multimedia. * Author: Stephane Fillod & Guillaume Lorand * fi...@th... * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <linux/config.h> #include <linux/version.h> #include <linux/module.h> #include <linux/sched.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/miscdevice.h> #include <linux/init.h> #include <asm/uaccess.h> #include <linux/delay.h> #include <linux/errno.h> #include <asm/io.h> #include <asm/system.h> #include <asm/rc32300/rc32300.h> #include <asm/rc32300/idtdisplay.h> /** * @name module parameters * @param minor minor number of the device (major is gived by misc device) * @param delay delay in milliseconds between scrolling on the display */ //@{ MODULE_PARM(minor, "i") ; MODULE_PARM(delay, "i") ; //@} /** * @name locales variables */ //@{ static unsigned int minor __initdata = IDTDISPLAY_MINOR ; /*< minor number of the device */ static unsigned int delay = IDTDISPLAY_DELAY ; /*< delay between scrolling in ms */ static DECLARE_MUTEX(idtdisp_sem) ; //@} /** * internal function which clean the display */ static inline void idtdisp_clean(void) { readb(KSEG1ADDR(LCD_CLEAR)) ; } /** * internal function which display a char on the display * @param i display number * @param c character to write */ static inline void idtdisp_char(int i, char c) { switch(i) { case 0: writeb(c, KSEG1ADDR(LCD_DIGIT0)) ; break ; case 1: writeb(c, KSEG1ADDR(LCD_DIGIT1)) ; break ; case 2: writeb(c, KSEG1ADDR(LCD_DIGIT2)) ; break ; case 3: writeb(c, KSEG1ADDR(LCD_DIGIT3)) ; break ; default: writeb('?', KSEG1ADDR(LCD_DIGIT0)) ; break ; } } /** * internal function which display a string on the display * @param s string to write */ static inline void idtdisp_str(char *s) { int i; if(s == NULL) { idtdisp_clean(); return; } for(i = 0; i < 4 && s[i]; i++) idtdisp_char(i, s[i]); } /** * open the display device * @return always 0 */ static int idtdisp_open(struct inode *inode, struct file *file) ; /** * close the display device * @return always 0 */ static int idtdisp_release(struct inode *inode, struct file *file) ; /** * write to the display device * @return an errno code if it failed or else the number of writen bytes */ static ssize_t idtdisp_write(struct file *file, const char *buffer, size_t count, loff_t *ppos) ; /** * clean the display device * @return an errno code if it failed or else the number of readen bytes */ static ssize_t idtdisp_read(struct file *file, char *buffer, size_t count, loff_t *ppos) ; /** * perform ioctl request on the display device * @return an errno code if it failed or 0 if it succed. */ static int idtdisp_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg ) ; /** * initialize the display device * @return the result of misc registration */ int __init idtdisp_init(void) ; /** * release previous allocation */ static void __exit idtdisp_exit (void) ; static struct file_operations displaydev_fops = { owner: THIS_MODULE, read : idtdisp_read, write: idtdisp_write, ioctl: idtdisp_ioctl, open: idtdisp_open, release: idtdisp_release, }; static struct miscdevice displaydev = { minor: IDTDISPLAY_MINOR, name : "idtdisplay", fops : &displaydev_fops, }; /* * Now all the various file operations that we export. */ static int idtdisp_open(struct inode *inode, struct file *file) { MOD_INC_USE_COUNT; return 0; } static int idtdisp_release(struct inode *inode, struct file *file) { MOD_DEC_USE_COUNT; return 0; } static ssize_t idtdisp_write(struct file *file, const char *buffer, size_t count, loff_t *ppos) { char contents [IDTDISPLAY_BUF_SIZE] ; int buf_size = (count > IDTDISPLAY_BUF_SIZE) ? IDTDISPLAY_BUF_SIZE : count; int cpt = 0 ; int retval; if (copy_from_user (contents, buffer, buf_size)) return -EFAULT; if (down_interruptible (&idtdisp_sem)) return -EINTR; idtdisp_str(&contents[cpt]); while (cpt++ < buf_size-4) { current->state = TASK_INTERRUPTIBLE; retval = schedule_timeout(MS_TO_HZ(delay)) ; if (retval != 0) break; idtdisp_str(&contents[cpt]); } up(&idtdisp_sem) ; return cpt+4 > buf_size ? buf_size : cpt+4; } static ssize_t idtdisp_read (struct file *file, char *buffer, size_t count, loff_t *ppos) { idtdisp_clean(); return 0; } static int idtdisp_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg ) { switch(cmd) { case IDTDISPLAY_IOCTL_DELAY: if (arg > 5000) return -EINVAL; delay = arg ; break ; case IDTDISPLAY_IOCTL_CLEAN: idtdisp_clean(); break; case IDTDISPLAY_IOCTL_WRITE_CHAR: { struct idtdisp_wc_struct wc; if (copy_from_user(&wc, (struct idtdisp_wc_struct*)arg, sizeof(struct idtdisp_wc_struct))) return -EFAULT ; if (down_interruptible (&idtdisp_sem)) return -EINTR; idtdisp_char(wc.nb, wc.ch); up (&idtdisp_sem) ; break; } case IDTDISPLAY_IOCTL_WRITE_4: { char w4[4] ; if (copy_from_user(w4, (char *)arg, 4) ) return -EFAULT ; if (down_interruptible (&idtdisp_sem)) return -EINTR; idtdisp_str(w4); up (&idtdisp_sem) ; break; } default: return -ENOSYS; break ; } return 0; } int __init idtdisp_init(void) { int ret; displaydev.minor = minor ; ret = misc_register(&displaydev); return ret ; } static void __exit idtdisp_exit (void) { misc_deregister(&displaydev); } /** * @name init/exit functions * fuction use by insmod to run and stop the module */ //@{ module_init(idtdisp_init); module_exit(idtdisp_exit); //@} Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/79S334/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile 15 Jan 2002 00:34:07 -0000 1.1 +++ Makefile 29 Apr 2002 23:05:11 -0000 1.2 @@ -17,7 +17,7 @@ O_TARGET := idt-79S334.o -obj-y := irq.o prom.o setup.o +obj-y := irq.o setup.o idtdisplay.o obj-$(CONFIG_PCI) += pci_fixup.o pci_ops.o include $(TOPDIR)/Rules.make Index: irq.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/79S334/irq.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- irq.c 24 Jan 2002 20:13:34 -0000 1.8 +++ irq.c 29 Apr 2002 23:05:11 -0000 1.9 @@ -106,17 +106,17 @@ }; #define READ_PEND(g) \ - rc32300_inl(IC_GROUP0_PEND + (g)*IC_GROUP_OFFSET) + rc32300_readl(IC_GROUP0_PEND + (g)*IC_GROUP_OFFSET) #define WRITE_PEND(g,val) \ - rc32300_outl((val), IC_GROUP0_PEND + (g)*IC_GROUP_OFFSET) + rc32300_writel((val), IC_GROUP0_PEND + (g)*IC_GROUP_OFFSET) #define READ_MASK(g) \ - rc32300_inl(IC_GROUP0_MASK + (g)*IC_GROUP_OFFSET) + rc32300_readl(IC_GROUP0_MASK + (g)*IC_GROUP_OFFSET) #define WRITE_MASK(g,val) \ - rc32300_outl((val), IC_GROUP0_MASK + (g)*IC_GROUP_OFFSET) + rc32300_writel((val), IC_GROUP0_MASK + (g)*IC_GROUP_OFFSET) #define READ_CLEAR(g) \ - rc32300_inl(IC_GROUP0_CLEAR + (g)*IC_GROUP_OFFSET) + rc32300_readl(IC_GROUP0_CLEAR + (g)*IC_GROUP_OFFSET) #define WRITE_CLEAR(g,val) \ - rc32300_outl((val), IC_GROUP0_CLEAR + (g)*IC_GROUP_OFFSET) + rc32300_writel((val), IC_GROUP0_CLEAR + (g)*IC_GROUP_OFFSET) static inline int irq_to_group(unsigned int irq_nr) { Index: pci_fixup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/79S334/pci_fixup.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- pci_fixup.c 8 Feb 2002 00:33:55 -0000 1.5 +++ pci_fixup.c 29 Apr 2002 23:05:11 -0000 1.6 @@ -94,7 +94,7 @@ /* * Enable CPU and IP Bus Error exceptions, and disable WatchDog. */ - rc32300_outl(0x18, CPU_IP_BUSERR_CNTL); + rc32300_writel(0x18, CPU_IP_BUSERR_CNTL); } void __init pcibios_fixup_irqs(void) Index: pci_ops.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/79S334/pci_ops.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- pci_ops.c 24 Jan 2002 20:13:34 -0000 1.4 +++ pci_ops.c 29 Apr 2002 23:05:11 -0000 1.5 @@ -63,7 +63,7 @@ extern char * __init prom_getcmdline(void); #define PCI_CFG_SET(slot,func,off) \ - rc32300_outl((0x80000000 | ((slot)<<11) | ((func)<<8) | (off)), \ + rc32300_writel((0x80000000 | ((slot)<<11) | ((func)<<8) | (off)), \ PCI_CFG_CNTL) static int @@ -85,9 +85,9 @@ rc32300_sync(); if (type == PCI_ACCESS_WRITE) - rc32300_outl(*data, PCI_CFG_DATA); + rc32300_writel(*data, PCI_CFG_DATA); else - *data = rc32300_inl(PCI_CFG_DATA); + *data = rc32300_readl(PCI_CFG_DATA); rc32300_sync(); /* @@ -239,13 +239,13 @@ u32 val; printk("RC32334 PCI Bridge Config:\n"); - printk("PCI_MEM1_BASE: 0x%08x\n", rc32300_inl(PCI_MEM1_BASE)); - printk("PCI_MEM2_BASE: 0x%08x\n", rc32300_inl(PCI_MEM2_BASE)); - printk("PCI_MEM3_BASE: 0x%08x\n", rc32300_inl(PCI_MEM3_BASE)); - printk("PCI_IO1_BASE: 0x%08x\n", rc32300_inl(PCI_IO1_BASE)); - printk("PCI_ARBITRATION:0x%08x\n", rc32300_inl(PCI_ARBITRATION)); - printk("PCI_CPU_MEM1_BASE:0x%08x\n", rc32300_inl(PCI_CPU_MEM1_BASE)); - printk("PCI_CPU_IO_BASE:0x%08x\n", rc32300_inl(PCI_CPU_IO_BASE)); + printk("PCI_MEM1_BASE: 0x%08x\n", rc32300_readl(PCI_MEM1_BASE)); + printk("PCI_MEM2_BASE: 0x%08x\n", rc32300_readl(PCI_MEM2_BASE)); + printk("PCI_MEM3_BASE: 0x%08x\n", rc32300_readl(PCI_MEM3_BASE)); + printk("PCI_IO1_BASE: 0x%08x\n", rc32300_readl(PCI_IO1_BASE)); + printk("PCI_ARBITRATION:0x%08x\n", rc32300_readl(PCI_ARBITRATION)); + printk("PCI_CPU_MEM1_BASE:0x%08x\n", rc32300_readl(PCI_CPU_MEM1_BASE)); + printk("PCI_CPU_IO_BASE:0x%08x\n", rc32300_readl(PCI_CPU_IO_BASE)); for (i=0; i<17; i++) { config_read(0, 0, i*4, &val); @@ -258,7 +258,7 @@ char *argptr; /* allow writes to bridge config space */ - rc32300_outl(4, PCI_ARBITRATION); + rc32300_writel(4, PCI_ARBITRATION); config_write(0, 0, PCI_VENDOR_ID, PCI_VENDOR_ID_IDT | (PCI_DEVICE_ID_IDT_RC32334 << 16)); @@ -288,7 +288,7 @@ /* retry timeout, trdy timeout */ config_write(0, 0, PCI_INTERRUPT_LINE+4, 0x00008080); - rc32300_outl(0x00000000, PCI_CFG_CNTL); + rc32300_writel(0x00000000, PCI_CFG_CNTL); /* * CPU -> PCI address translation. Make CPU physical and @@ -322,21 +322,21 @@ */ /* mem space 1 */ - rc32300_outl(rc32334_res_pci_mem1.start | SWAP_BIT, PCI_MEM1_BASE); + rc32300_writel(rc32334_res_pci_mem1.start | SWAP_BIT, PCI_MEM1_BASE); /* mem space 2 */ - rc32300_outl(rc32334_res_pci_mem2.start | SWAP_BIT, PCI_MEM2_BASE); + rc32300_writel(rc32334_res_pci_mem2.start | SWAP_BIT, PCI_MEM2_BASE); /* mem space 3 */ - rc32300_outl(rc32334_res_pci_mem3.start | SWAP_BIT, PCI_MEM3_BASE); + rc32300_writel(rc32334_res_pci_mem3.start | SWAP_BIT, PCI_MEM3_BASE); /* i/o space */ - rc32300_outl(rc32334_res_pci_io.start | SWAP_BIT, PCI_IO1_BASE); + rc32300_writel(rc32334_res_pci_io.start | SWAP_BIT, PCI_IO1_BASE); argptr = prom_getcmdline(); if ((argptr = strstr(argptr, "pciextarb")) == NULL) { /* use internal arbiter, 0=round robin, 1=fixed */ - rc32300_outl(0, PCI_ARBITRATION); + rc32300_writel(0, PCI_ARBITRATION); } else { /* use external arbiter */ - rc32300_outl(2, PCI_ARBITRATION); + rc32300_writel(2, PCI_ARBITRATION); } /* @@ -345,8 +345,8 @@ * Let PCI see system memory at 0x00000000 physical */ - rc32300_outl(0x0 | SWAP_BIT, PCI_CPU_MEM1_BASE); /* mem space */ - rc32300_outl(0x0 | SWAP_BIT, PCI_CPU_IO_BASE); /* i/o space */ + rc32300_writel(0x0 | SWAP_BIT, PCI_CPU_MEM1_BASE); /* mem space */ + rc32300_writel(0x0 | SWAP_BIT, PCI_CPU_IO_BASE); /* i/o space */ rc32300_sync(); } Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/rc32300/79S334/setup.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- setup.c 8 Feb 2002 00:33:55 -0000 1.8 +++ setup.c 29 Apr 2002 23:05:11 -0000 1.9 @@ -64,7 +64,10 @@ int i, len; char str[256]; static int lcd_digit_reg[4] = { - LCD_DIGIT0, LCD_DIGIT1, LCD_DIGIT2, LCD_DIGIT3 + KSEG1ADDR(LCD_DIGIT0), + KSEG1ADDR(LCD_DIGIT1), + KSEG1ADDR(LCD_DIGIT2), + KSEG1ADDR(LCD_DIGIT3) }; va_start(args, fmt); @@ -72,22 +75,15 @@ va_end(args); len = len > 4 ? 4 : len; - inb(LCD_CLEAR); // clear the display + readb(KSEG1ADDR(LCD_CLEAR)); // clear the display for (i = 0; i < len; i++) { if (str[i]) - outb(str[i], lcd_digit_reg[i]); + writeb(str[i], lcd_digit_reg[i]); } return len; } -struct resource rc32334_res_ram = { - "RAM", - 0, - RAM_SIZE, - IORESOURCE_MEM -}; - struct resource rc32334_res_pci_mem1; struct resource rc32334_res_pci_mem2; struct resource rc32334_res_pci_mem3; @@ -137,10 +133,13 @@ extern void rc32300_ack_irq(unsigned int irq_nr); printk("RC32334 %s bus error:\n", data ? "Data" : "Instruction"); - printk(" EPC == %08lx, RA == %08lx\n", regs->cp0_epc, regs->regs[31]); - printk(" CPU bus address == %08x\n", rc32300_readl(CPU_BUSERR_ADDR)); - printk(" IP bus address == %08x\n", rc32300_inl(CPU_IP_BUSERR_ADDR)); - cntl = rc32300_inl(CPU_IP_BUSERR_CNTL); + printk(" EPC == %08lx, RA == %08lx\n", + regs->cp0_epc, regs->regs[31]); + printk(" CPU bus address == %08x\n", + rc32300_readl(CPU_BUSERR_ADDR)); + printk(" IP bus address == %08x\n", + rc32300_readl(CPU_IP_BUSERR_ADDR)); + cntl = rc32300_readl(CPU_IP_BUSERR_CNTL); printk(" Bus error occured on a %s on %s bus\n", cntl & 1 ? "read" : "write", cntl & 4 ? "CPU" : "IP"); @@ -149,9 +148,9 @@ rc32300_ack_irq(GROUP4_IRQ_BASE+4); // ack timer 4 rollover intr rc32300_ack_irq(GROUP4_IRQ_BASE+5); // ack timer 5 rollover intr rc32300_ack_irq(GROUP1_IRQ_BASE); // ack bus error intr - rc32300_outl(cntl & ~0x07, CPU_IP_BUSERR_CNTL); + rc32300_writel(cntl & ~0x07, CPU_IP_BUSERR_CNTL); - //die_if_kernel("Oops", regs); + die_if_kernel("Oops", regs); force_sig(SIGBUS, current); } @@ -171,24 +170,24 @@ * Disable CPU and IP Bus Error exceptions (PCI scan will * cause bus timeouts), and disable WatchDog. */ - rc32300_outl(0x98, CPU_IP_BUSERR_CNTL); + rc32300_writel(0x98, CPU_IP_BUSERR_CNTL); - rc32300_outl(0, TIMER0_CNTL + 4*TIMER_REG_OFFSET); - rc32300_outl(0, TIMER0_CNTL + 5*TIMER_REG_OFFSET); - rc32300_outl(0x3fff, TIMER0_COMPARE + 4*TIMER_REG_OFFSET); - rc32300_outl(0x3fff, TIMER0_COMPARE + 5*TIMER_REG_OFFSET); - rc32300_outl(1, TIMER0_CNTL + 4*TIMER_REG_OFFSET); - rc32300_outl(1, TIMER0_CNTL + 5*TIMER_REG_OFFSET); + rc32300_writel(0, TIMER0_CNTL + 4*TIMER_REG_OFFSET); + rc32300_writel(0, TIMER0_CNTL + 5*TIMER_REG_OFFSET); + rc32300_writel(0x3fff, TIMER0_COMPARE + 4*TIMER_REG_OFFSET); + rc32300_writel(0x3fff, TIMER0_COMPARE + 5*TIMER_REG_OFFSET); + rc32300_writel(1, TIMER0_CNTL + 4*TIMER_REG_OFFSET); + rc32300_writel(1, TIMER0_CNTL + 5*TIMER_REG_OFFSET); #if 0 printk(__FUNCTION__ ": Timer4 Cntl = 0x%08x\n", - rc32300_inl(TIMER0_CNTL + 4*TIMER_REG_OFFSET)); + rc32300_readl(TIMER0_CNTL + 4*TIMER_REG_OFFSET)); printk(__FUNCTION__ ": Timer4 Cmp = 0x%08x\n", - rc32300_inl(TIMER0_COMPARE + 4*TIMER_REG_OFFSET)); + rc32300_readl(TIMER0_COMPARE + 4*TIMER_REG_OFFSET)); printk(__FUNCTION__ ": Timer5 Cntl = 0x%08x\n", - rc32300_inl(TIMER0_CNTL + 5*TIMER_REG_OFFSET)); + rc32300_readl(TIMER0_CNTL + 5*TIMER_REG_OFFSET)); printk(__FUNCTION__ ": Timer5 Cmp = 0x%08x\n", - rc32300_inl(TIMER0_COMPARE + 5*TIMER_REG_OFFSET)); + rc32300_readl(TIMER0_COMPARE + 5*TIMER_REG_OFFSET)); request_irq(GROUP4_IRQ_BASE+4, bus_error_interrupt, SA_INTERRUPT, "RC32334 CPU Bus Error", NULL); @@ -228,7 +227,7 @@ bus_error_init(); - inb(LCD_CLEAR); // clear the 4-digit LCD display + readb(KSEG1ADDR(LCD_CLEAR)); // clear the 4-digit LCD display #ifdef CONFIG_BLK_DEV_INITRD ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); @@ -244,37 +243,37 @@ printk(__FUNCTION__ ": CPU_BUSERR_ADDR = 0x%08x\n", rc32300_readl(CPU_BUSERR_ADDR)); printk(__FUNCTION__ ": CPU_IP_BTA = 0x%08x\n", - rc32300_inl(CPU_IP_BTA)); + rc32300_readl(CPU_IP_BTA)); printk(__FUNCTION__ ": CPU_IP_ADDR_LATCH = 0x%08x\n", - rc32300_inl(CPU_IP_ADDR_LATCH)); + rc32300_readl(CPU_IP_ADDR_LATCH)); printk(__FUNCTION__ ": CPU_IP_ARBITRATION = 0x%08x\n", - rc32300_inl(CPU_IP_ARBITRATION)); + rc32300_readl(CPU_IP_ARBITRATION)); printk(__FUNCTION__ ": CPU_IP_BUSERR_CNTL = 0x%08x\n", - rc32300_inl(CPU_IP_BUSERR_CNTL)); + rc32300_readl(CPU_IP_BUSERR_CNTL)); printk(__FUNCTION__ ": CPU_IP_BUSERR_ADDR = 0x%08x\n", - rc32300_inl(CPU_IP_BUSERR_ADDR)); + rc32300_readl(CPU_IP_BUSERR_ADDR)); printk(__FUNCTION__ ": CPU_IP_SYSID = 0x%08x\n", - rc32300_inl(CPU_IP_SYSID)); + rc32300_readl(CPU_IP_SYSID)); printk(__FUNCTION__ ": MEM_BASE_BANK0 = 0x%08x\n", - rc32300_inl(MEM_BASE_BANK0)); + rc32300_readl(MEM_BASE_BANK0)); printk(__FUNCTION__ ": MEM_MASK_BANK0 = 0x%08x\n", - rc32300_inl(MEM_MASK_BANK0)); + rc32300_readl(MEM_MASK_BANK0)); printk(__FUNCTION__ ": MEM_CNTL_BANK0 = 0x%08x\n", - rc32300_inl(MEM_CNTL_BANK0)); + rc32300_readl(MEM_CNTL_BANK0)); printk(__FUNCTION__ ": MEM_BASE_BANK1 = 0x%08x\n", - rc32300_inl(MEM_BASE_BANK1)); + rc32300_readl(MEM_BASE_BANK1)); printk(__FUNCTION__ ": MEM_MASK_BANK1 = 0x%08x\n", - rc32300_inl(MEM_MASK_BANK1)); + rc32300_readl(MEM_MASK_BANK1)); printk(__FUNCTION__ ": MEM_CNTL_BANK1 = 0x%08x\n", - rc32300_inl(MEM_CNTL_BANK1)); + rc32300_readl(MEM_CNTL_BANK1)); printk(__FUNCTION__ ": MEM_CNTL_BANK2 = 0x%08x\n", - rc32300_inl(MEM_CNTL_BANK2)); + rc32300_readl(MEM_CNTL_BANK2)); printk(__FUNCTION__ ": MEM_CNTL_BANK3 = 0x%08x\n", - rc32300_inl(MEM_CNTL_BANK3)); + rc32300_readl(MEM_CNTL_BANK3)); printk(__FUNCTION__ ": MEM_CNTL_BANK4 = 0x%08x\n", - rc32300_inl(MEM_CNTL_BANK4)); + rc32300_readl(MEM_CNTL_BANK4)); printk(__FUNCTION__ ": MEM_CNTL_BANK5 = 0x%08x\n", - rc32300_inl(MEM_CNTL_BANK5)); + rc32300_readl(MEM_CNTL_BANK5)); #endif #ifdef CONFIG_PCI --- prom.c DELETED --- |
From: Steve L. <slo...@us...> - 2002-04-29 23:05:14
|
Update of /cvsroot/linux-mips/linux/arch/mips/configs In directory usw-pr-cvs1:/tmp/cvs-serv16874/arch/mips/configs Modified Files: defconfig-79S334-be defconfig-79S334-le Added Files: defconfig-79EB355-be defconfig-79EB355-le Log Message: Initial IDT 79EB355 support. --- NEW FILE: defconfig-79EB355-be --- # # Automatically generated by make menuconfig: don't edit # CONFIG_MIPS=y CONFIG_MIPS32=y # # Code maturity level options # CONFIG_EXPERIMENTAL=y # # Machine selection # # CONFIG_ACER_PICA_61 is not set # CONFIG_ALGOR_P4032 is not set # CONFIG_BAGET_MIPS is not set # CONFIG_MIPS_COBALT is not set # CONFIG_DECSTATION is not set # CONFIG_DDB5074 is not set # CONFIG_NEC_EAGLE is not set # CONFIG_NEC_KORVA is not set # CONFIG_MIPS_EV96100 is not set # CONFIG_MIPS_EV64120 is not set # CONFIG_MIPS_ATLAS is not set # CONFIG_MIPS_MALTA is not set # CONFIG_NINO is not set # CONFIG_SIBYTE_SB1250 is not set # CONFIG_PS2 is not set # CONFIG_CASIO_BE300 is not set # CONFIG_CASIO_E15 is not set # CONFIG_VADEM_CLIO_1000 is not set # CONFIG_NEC_MOBILEPRO is not set # CONFIG_IDT_79S334 is not set CONFIG_IDT_79EB355=y # CONFIG_IBM_WORKPAD is not set # CONFIG_CASIO_E55 is not set # CONFIG_VICTOR_MPC303 is not set # CONFIG_MIPS_MAGNUM_4000 is not set # CONFIG_MOMENCO_OCELOT is not set # CONFIG_DDB5476 is not set # CONFIG_DDB5477 is not set # CONFIG_NEC_OSPREY is not set # CONFIG_OLIVETTI_M700 is not set # CONFIG_SGI_IP22 is not set # CONFIG_SNI_RM200_PCI is not set # CONFIG_MIPS_ITE8172 is not set # CONFIG_MIPS_IVR is not set # CONFIG_MIPS_PB1000 is not set # CONFIG_MIPS_PB1500 is not set # CONFIG_MIPS_PB1100 is not set # CONFIG_TOSHIBA_JMR3927 is not set # CONFIG_HP_LASERJET is not set # CONFIG_HIGHMEM is not set CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set # CONFIG_MCA is not set # CONFIG_SBUS is not set CONFIG_MIPS_RC32355=y CONFIG_NEW_IRQ=y CONFIG_NEW_TIME_C=y # CONFIG_PCI is not set CONFIG_NONCOHERENT_IO=y # CONFIG_SWAP_IO_SPACE is not set CONFIG_EISA=y # # Loadable module support # CONFIG_MODULES=y # CONFIG_MODVERSIONS is not set CONFIG_KMOD=y # # CPU selection # # CONFIG_CPU_R3000 is not set # CONFIG_CPU_TX39XX is not set # CONFIG_CPU_R6000 is not set # CONFIG_CPU_VR41XX is not set # CONFIG_CPU_R4300 is not set # CONFIG_CPU_R4X00 is not set # CONFIG_CPU_TX49XX is not set # CONFIG_CPU_R5000 is not set # CONFIG_CPU_R5432 is not set # CONFIG_CPU_R5900 is not set # CONFIG_CPU_RM7000 is not set # CONFIG_CPU_SR7100 is not set # CONFIG_CPU_NEVADA is not set # CONFIG_CPU_R10000 is not set # CONFIG_CPU_SB1 is not set # CONFIG_CPU_MIPS32 is not set # CONFIG_CPU_MIPS64 is not set CONFIG_CPU_RC32300=y CONFIG_CPU_ADVANCED=y CONFIG_CPU_HAS_LLSC=y # CONFIG_CPU_HAS_LLDSCD is not set # CONFIG_CPU_HAS_WB is not set # # General setup # # CONFIG_CPU_LITTLE_ENDIAN is not set # CONFIG_CPU_R5900_CONTEXT is not set # CONFIG_VR4131_CACHE_FIX is not set # CONFIG_VR4122_CLKSPEEDREG_FIX is not set CONFIG_KCORE_ELF=y CONFIG_ELF_KERNEL=y # CONFIG_BINFMT_IRIX is not set # CONFIG_FORWARD_KEYBOARD is not set # CONFIG_ARC_CONSOLE is not set # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_MISC is not set # CONFIG_CPU_FREQ is not set CONFIG_NET=y # CONFIG_HOTPLUG is not set # CONFIG_PCMCIA is not set # CONFIG_HOTPLUG_PCI is not set CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y # # Plug and Play configuration # # CONFIG_PNP is not set # CONFIG_ISAPNP is not set # # Memory Technology Devices (MTD) # # CONFIG_MTD is not set # # Parallel port support # # CONFIG_PARPORT is not set # # Block devices # # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_BLK_DEV_INITRD is not set # # Multi-device support (RAID and LVM) # # CONFIG_MD is not set # CONFIG_BLK_DEV_MD is not set # CONFIG_MD_LINEAR is not set # CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID1 is not set # CONFIG_MD_RAID5 is not set # CONFIG_MD_MULTIPATH is not set # CONFIG_BLK_DEV_LVM is not set # # Networking options # CONFIG_PACKET=y CONFIG_PACKET_MMAP=y # CONFIG_NETLINK_DEV is not set CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_PNP=y # CONFIG_IP_PNP_DHCP is not set CONFIG_IP_PNP_BOOTP=y # CONFIG_IP_PNP_RARP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set # CONFIG_ARPD is not set # CONFIG_INET_ECN is not set # CONFIG_SYN_COOKIES is not set # # IP: Netfilter Configuration # # CONFIG_IP_NF_CONNTRACK is not set # CONFIG_IP_NF_QUEUE is not set # CONFIG_IP_NF_IPTABLES is not set # CONFIG_IP_NF_COMPAT_IPCHAINS is not set # CONFIG_IP_NF_COMPAT_IPFWADM is not set # CONFIG_IPV6 is not set # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set # CONFIG_BRIDGE is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_LLC is not set # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_NET_FASTROUTE is not set # CONFIG_NET_HW_FLOWCONTROL is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # Telephony Support # # CONFIG_PHONE is not set # CONFIG_PHONE_IXJ is not set # CONFIG_PHONE_IXJ_PCMCIA is not set # # ATA/IDE/MFM/RLL support # # CONFIG_IDE is not set # CONFIG_BLK_DEV_IDE_MODES is not set # CONFIG_BLK_DEV_HD is not set # # SCSI support # # CONFIG_SCSI is not set # # I2O device support # # CONFIG_I2O is not set # CONFIG_I2O_BLOCK is not set # CONFIG_I2O_LAN is not set # CONFIG_I2O_SCSI is not set # CONFIG_I2O_PROC is not set # # Network device support # CONFIG_NETDEVICES=y # # ARCnet devices # # CONFIG_ARCNET is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_ETHERTAP is not set # # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y # CONFIG_MIPS_JAZZ_SONIC is not set CONFIG_MIPS_RC32355_ETH=y # CONFIG_SUNLANCE is not set # CONFIG_SUNBMAC is not set # CONFIG_SUNQE is not set # CONFIG_SUNGEM is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_LANCE is not set # CONFIG_NET_VENDOR_SMC is not set # CONFIG_NET_VENDOR_RACAL is not set # CONFIG_AT1700 is not set # CONFIG_DEPCA is not set # CONFIG_HP100 is not set # CONFIG_NET_ISA is not set # CONFIG_NET_PCI is not set # CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) # # CONFIG_ACENIC is not set # CONFIG_DL2K is not set # CONFIG_MYRI_SBUS is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_SK98LIN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PLIP is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set # # Wireless LAN (non-hamradio) # # CONFIG_NET_RADIO is not set # # Token Ring devices # # CONFIG_TR is not set # CONFIG_NET_FC is not set # CONFIG_RCPCI is not set # CONFIG_SHAPER is not set # # Wan interfaces # # CONFIG_WAN is not set # # Amateur Radio support # # CONFIG_HAMRADIO is not set # # IrDA (infrared) support # # CONFIG_IRDA is not set # # ISDN subsystem # # CONFIG_ISDN is not set # # Old CD-ROM drivers (not SCSI, not IDE) # # CONFIG_CD_NO_IDESCSI is not set # # Character devices # # CONFIG_VT is not set CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y # CONFIG_SERIAL_EXTENDED is not set # CONFIG_SERIAL_NONSTANDARD is not set CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 # # I2C support # # CONFIG_I2C is not set # # Mice # # CONFIG_BUSMOUSE is not set # CONFIG_MOUSE is not set # # Joysticks # # CONFIG_INPUT_GAMEPORT is not set # CONFIG_QIC02_TAPE is not set # # Watchdog Cards # # CONFIG_WATCHDOG is not set # CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set CONFIG_MIPS_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # # Ftape, the floppy tape device driver # # CONFIG_FTAPE is not set # CONFIG_AGP is not set # CONFIG_DRM is not set # # Multimedia devices # # CONFIG_VIDEO_DEV is not set # # File systems # # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set CONFIG_AUTOFS4_FS=y # CONFIG_REISERFS_FS is not set # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EXT3_FS is not set # CONFIG_JBD is not set # CONFIG_JBD_DEBUG is not set # CONFIG_FAT_FS is not set # CONFIG_MSDOS_FS is not set # CONFIG_UMSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_EFS_FS is not set # CONFIG_JFFS_FS is not set # CONFIG_JFFS2_FS is not set # CONFIG_CRAMFS is not set CONFIG_TMPFS=y # CONFIG_RAMFS is not set # CONFIG_ISO9660_FS is not set # CONFIG_JOLIET is not set # CONFIG_ZISOFS is not set # CONFIG_MINIX_FS is not set # CONFIG_VXFS_FS is not set # CONFIG_NTFS_FS is not set # CONFIG_NTFS_RW is not set # CONFIG_HPFS_FS is not set CONFIG_PROC_FS=y # CONFIG_DEVFS_FS is not set # CONFIG_DEVFS_MOUNT is not set # CONFIG_DEVFS_DEBUG is not set CONFIG_DEVPTS_FS=y # CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_RW is not set # CONFIG_ROMFS_FS is not set CONFIG_EXT2_FS=y # CONFIG_SYSV_FS is not set # CONFIG_UDF_FS is not set # CONFIG_UDF_RW is not set # CONFIG_UFS_FS is not set # CONFIG_UFS_FS_WRITE is not set # # Network File Systems # # CONFIG_CODA_FS is not set # CONFIG_INTERMEZZO_FS is not set CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y # CONFIG_SMB_FS is not set # CONFIG_NCP_FS is not set # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set # CONFIG_NCPFS_STRONG is not set # CONFIG_NCPFS_NFS_NS is not set # CONFIG_NCPFS_OS2_NS is not set # CONFIG_NCPFS_SMALLDOS is not set # CONFIG_NCPFS_NLS is not set # CONFIG_NCPFS_EXTRAS is not set # CONFIG_ZISOFS_FS is not set # CONFIG_ZLIB_FS_INFLATE is not set # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y # CONFIG_SMB_NLS is not set # CONFIG_NLS is not set # # Sound # # CONFIG_SOUND is not set # # USB support # # CONFIG_USB is not set # CONFIG_USB_UHCI is not set # CONFIG_USB_UHCI_ALT is not set # CONFIG_USB_OHCI is not set # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_DPCM is not set # CONFIG_USB_STORAGE_HP8200e is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set # CONFIG_USB_SCANNER is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USB_HPUSBSCSI is not set # CONFIG_USB_PEGASUS is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_CATC is not set # CONFIG_USB_CDCETHER is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_USS720 is not set # # USB Serial Converter support # # CONFIG_USB_SERIAL is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_BELKIN is not set # CONFIG_USB_SERIAL_WHITEHEAT is not set # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set # CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set # CONFIG_USB_SERIAL_MCT_U232 is not set # CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set # CONFIG_USB_RIO500 is not set # # Input core support # # CONFIG_INPUT is not set # CONFIG_INPUT_KEYBDEV is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_EVDEV is not set # # Kernel hacking # CONFIG_CROSSCOMPILE=y # CONFIG_REMOTE_DEBUG is not set # CONFIG_GDB_CONSOLE is not set # CONFIG_DEBUG is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_MIPS_UNCACHED is not set --- NEW FILE: defconfig-79EB355-le --- # # Automatically generated by make menuconfig: don't edit # CONFIG_MIPS=y CONFIG_MIPS32=y # # Code maturity level options # CONFIG_EXPERIMENTAL=y # # Machine selection # # CONFIG_ACER_PICA_61 is not set # CONFIG_ALGOR_P4032 is not set # CONFIG_BAGET_MIPS is not set # CONFIG_MIPS_COBALT is not set # CONFIG_DECSTATION is not set # CONFIG_DDB5074 is not set # CONFIG_NEC_EAGLE is not set # CONFIG_NEC_KORVA is not set # CONFIG_MIPS_EV96100 is not set # CONFIG_MIPS_EV64120 is not set # CONFIG_MIPS_ATLAS is not set # CONFIG_MIPS_MALTA is not set # CONFIG_NINO is not set # CONFIG_SIBYTE_SB1250 is not set # CONFIG_PS2 is not set # CONFIG_CASIO_BE300 is not set # CONFIG_CASIO_E15 is not set # CONFIG_VADEM_CLIO_1000 is not set # CONFIG_NEC_MOBILEPRO is not set # CONFIG_IDT_79S334 is not set CONFIG_IDT_79EB355=y # CONFIG_IBM_WORKPAD is not set # CONFIG_CASIO_E55 is not set # CONFIG_VICTOR_MPC303 is not set # CONFIG_MIPS_MAGNUM_4000 is not set # CONFIG_MOMENCO_OCELOT is not set # CONFIG_DDB5476 is not set # CONFIG_DDB5477 is not set # CONFIG_NEC_OSPREY is not set # CONFIG_OLIVETTI_M700 is not set # CONFIG_SGI_IP22 is not set # CONFIG_SNI_RM200_PCI is not set # CONFIG_MIPS_ITE8172 is not set # CONFIG_MIPS_IVR is not set # CONFIG_MIPS_PB1000 is not set # CONFIG_MIPS_PB1500 is not set # CONFIG_MIPS_PB1100 is not set # CONFIG_TOSHIBA_JMR3927 is not set # CONFIG_HP_LASERJET is not set # CONFIG_HIGHMEM is not set CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set # CONFIG_MCA is not set # CONFIG_SBUS is not set CONFIG_MIPS_RC32355=y CONFIG_NEW_IRQ=y CONFIG_NEW_TIME_C=y # CONFIG_PCI is not set CONFIG_NONCOHERENT_IO=y # CONFIG_SWAP_IO_SPACE is not set # CONFIG_ISA is not set # CONFIG_EISA is not set # # Loadable module support # CONFIG_MODULES=y # CONFIG_MODVERSIONS is not set CONFIG_KMOD=y # # CPU selection # # CONFIG_CPU_R3000 is not set # CONFIG_CPU_TX39XX is not set # CONFIG_CPU_R6000 is not set # CONFIG_CPU_VR41XX is not set # CONFIG_CPU_R4300 is not set # CONFIG_CPU_R4X00 is not set # CONFIG_CPU_TX49XX is not set # CONFIG_CPU_R5000 is not set # CONFIG_CPU_R5432 is not set # CONFIG_CPU_R5900 is not set # CONFIG_CPU_RM7000 is not set # CONFIG_CPU_SR7100 is not set # CONFIG_CPU_NEVADA is not set # CONFIG_CPU_R10000 is not set # CONFIG_CPU_SB1 is not set # CONFIG_CPU_MIPS32 is not set # CONFIG_CPU_MIPS64 is not set CONFIG_CPU_RC32300=y CONFIG_CPU_ADVANCED=y CONFIG_CPU_HAS_LLSC=y # CONFIG_CPU_HAS_LLDSCD is not set # CONFIG_CPU_HAS_WB is not set # # General setup # CONFIG_CPU_LITTLE_ENDIAN=y # CONFIG_CPU_R5900_CONTEXT is not set # CONFIG_VR4131_CACHE_FIX is not set # CONFIG_VR4122_CLKSPEEDREG_FIX is not set CONFIG_KCORE_ELF=y CONFIG_ELF_KERNEL=y # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_MISC is not set # CONFIG_CPU_FREQ is not set CONFIG_NET=y # CONFIG_HOTPLUG is not set # CONFIG_PCMCIA is not set # CONFIG_HOTPLUG_PCI is not set CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y # # Memory Technology Devices (MTD) # # CONFIG_MTD is not set # # Parallel port support # # CONFIG_PARPORT is not set # # Block devices # # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_BLK_DEV_INITRD is not set # # Multi-device support (RAID and LVM) # # CONFIG_MD is not set # CONFIG_BLK_DEV_MD is not set # CONFIG_MD_LINEAR is not set # CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID1 is not set # CONFIG_MD_RAID5 is not set # CONFIG_MD_MULTIPATH is not set # CONFIG_BLK_DEV_LVM is not set # # Networking options # CONFIG_PACKET=y CONFIG_PACKET_MMAP=y # CONFIG_NETLINK_DEV is not set CONFIG_NETFILTER=y # CONFIG_NETFILTER_DEBUG is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_PNP=y # CONFIG_IP_PNP_DHCP is not set CONFIG_IP_PNP_BOOTP=y # CONFIG_IP_PNP_RARP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set # CONFIG_ARPD is not set # CONFIG_INET_ECN is not set # CONFIG_SYN_COOKIES is not set # # IP: Netfilter Configuration # # CONFIG_IP_NF_CONNTRACK is not set # CONFIG_IP_NF_QUEUE is not set # CONFIG_IP_NF_IPTABLES is not set # CONFIG_IP_NF_COMPAT_IPCHAINS is not set # CONFIG_IP_NF_COMPAT_IPFWADM is not set # CONFIG_IPV6 is not set # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set # CONFIG_BRIDGE is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_LLC is not set # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_NET_FASTROUTE is not set # CONFIG_NET_HW_FLOWCONTROL is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # Telephony Support # # CONFIG_PHONE is not set # CONFIG_PHONE_IXJ is not set # CONFIG_PHONE_IXJ_PCMCIA is not set # # ATA/IDE/MFM/RLL support # # CONFIG_IDE is not set # CONFIG_BLK_DEV_IDE_MODES is not set # CONFIG_BLK_DEV_HD is not set # # SCSI support # # CONFIG_SCSI is not set # # I2O device support # # CONFIG_I2O is not set # CONFIG_I2O_BLOCK is not set # CONFIG_I2O_LAN is not set # CONFIG_I2O_SCSI is not set # CONFIG_I2O_PROC is not set # # Network device support # CONFIG_NETDEVICES=y # # ARCnet devices # # CONFIG_ARCNET is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_ETHERTAP is not set # # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y CONFIG_MIPS_RC32355_ETH=y # CONFIG_SUNLANCE is not set # CONFIG_SUNBMAC is not set # CONFIG_SUNQE is not set # CONFIG_SUNGEM is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_LANCE is not set # CONFIG_NET_VENDOR_SMC is not set # CONFIG_NET_VENDOR_RACAL is not set # CONFIG_NET_ISA is not set # CONFIG_NET_PCI is not set # CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) # # CONFIG_ACENIC is not set # CONFIG_DL2K is not set # CONFIG_MYRI_SBUS is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_SK98LIN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PLIP is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set # # Wireless LAN (non-hamradio) # # CONFIG_NET_RADIO is not set # # Token Ring devices # # CONFIG_TR is not set # CONFIG_NET_FC is not set # CONFIG_RCPCI is not set # CONFIG_SHAPER is not set # # Wan interfaces # # CONFIG_WAN is not set # # Amateur Radio support # # CONFIG_HAMRADIO is not set # # IrDA (infrared) support # # CONFIG_IRDA is not set # # ISDN subsystem # # CONFIG_ISDN is not set # # Old CD-ROM drivers (not SCSI, not IDE) # # CONFIG_CD_NO_IDESCSI is not set # # Character devices # # CONFIG_VT is not set CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y # CONFIG_SERIAL_EXTENDED is not set # CONFIG_SERIAL_NONSTANDARD is not set CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 # # I2C support # # CONFIG_I2C is not set # # Mice # # CONFIG_BUSMOUSE is not set # CONFIG_MOUSE is not set # # Joysticks # # CONFIG_INPUT_GAMEPORT is not set # CONFIG_QIC02_TAPE is not set # # Watchdog Cards # # CONFIG_WATCHDOG is not set # CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set CONFIG_MIPS_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # # Ftape, the floppy tape device driver # # CONFIG_FTAPE is not set # CONFIG_AGP is not set # CONFIG_DRM is not set # # Multimedia devices # # CONFIG_VIDEO_DEV is not set # # File systems # # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set CONFIG_AUTOFS4_FS=y # CONFIG_REISERFS_FS is not set # CONFIG_REISERFS_CHECK is not set # CONFIG_REISERFS_PROC_INFO is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EXT3_FS is not set # CONFIG_JBD is not set # CONFIG_JBD_DEBUG is not set # CONFIG_FAT_FS is not set # CONFIG_MSDOS_FS is not set # CONFIG_UMSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_EFS_FS is not set # CONFIG_JFFS_FS is not set # CONFIG_JFFS2_FS is not set # CONFIG_CRAMFS is not set CONFIG_TMPFS=y # CONFIG_RAMFS is not set # CONFIG_ISO9660_FS is not set # CONFIG_JOLIET is not set # CONFIG_ZISOFS is not set # CONFIG_MINIX_FS is not set # CONFIG_VXFS_FS is not set # CONFIG_NTFS_FS is not set # CONFIG_NTFS_RW is not set # CONFIG_HPFS_FS is not set CONFIG_PROC_FS=y # CONFIG_DEVFS_FS is not set # CONFIG_DEVFS_MOUNT is not set # CONFIG_DEVFS_DEBUG is not set CONFIG_DEVPTS_FS=y # CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_RW is not set # CONFIG_ROMFS_FS is not set CONFIG_EXT2_FS=y # CONFIG_SYSV_FS is not set # CONFIG_UDF_FS is not set # CONFIG_UDF_RW is not set # CONFIG_UFS_FS is not set # CONFIG_UFS_FS_WRITE is not set # # Network File Systems # # CONFIG_CODA_FS is not set # CONFIG_INTERMEZZO_FS is not set CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_ROOT_NFS=y # CONFIG_NFSD is not set # CONFIG_NFSD_V3 is not set CONFIG_SUNRPC=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y # CONFIG_SMB_FS is not set # CONFIG_NCP_FS is not set # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set # CONFIG_NCPFS_STRONG is not set # CONFIG_NCPFS_NFS_NS is not set # CONFIG_NCPFS_OS2_NS is not set # CONFIG_NCPFS_SMALLDOS is not set # CONFIG_NCPFS_NLS is not set # CONFIG_NCPFS_EXTRAS is not set # CONFIG_ZISOFS_FS is not set # CONFIG_ZLIB_FS_INFLATE is not set # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y # CONFIG_SMB_NLS is not set # CONFIG_NLS is not set # # Sound # # CONFIG_SOUND is not set # # USB support # # CONFIG_USB is not set # CONFIG_USB_UHCI is not set # CONFIG_USB_UHCI_ALT is not set # CONFIG_USB_OHCI is not set # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_DPCM is not set # CONFIG_USB_STORAGE_HP8200e is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set # CONFIG_USB_SCANNER is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USB_HPUSBSCSI is not set # CONFIG_USB_PEGASUS is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_CATC is not set # CONFIG_USB_CDCETHER is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_USS720 is not set # # USB Serial Converter support # # CONFIG_USB_SERIAL is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_BELKIN is not set # CONFIG_USB_SERIAL_WHITEHEAT is not set # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set # CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set # CONFIG_USB_SERIAL_MCT_U232 is not set # CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set # CONFIG_USB_RIO500 is not set # # Input core support # # CONFIG_INPUT is not set # CONFIG_INPUT_KEYBDEV is not set # CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_EVDEV is not set # # Kernel hacking # CONFIG_CROSSCOMPILE=y # CONFIG_REMOTE_DEBUG is not set # CONFIG_GDB_CONSOLE is not set # CONFIG_DEBUG is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_MIPS_UNCACHED is not set Index: defconfig-79S334-be =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-79S334-be,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- defconfig-79S334-be 12 Feb 2002 18:21:25 -0000 1.2 +++ defconfig-79S334-be 29 Apr 2002 23:05:11 -0000 1.3 @@ -1,7 +1,8 @@ # -# Automatically generated make config: don't edit +# Automatically generated by make menuconfig: don't edit # CONFIG_MIPS=y +CONFIG_MIPS32=y # # Code maturity level options @@ -32,6 +33,9 @@ # CONFIG_NEC_MOBILEPRO is not set CONFIG_IDT_79S334=y # CONFIG_IDT_79EB355 is not set +# CONFIG_IBM_WORKPAD is not set +# CONFIG_CASIO_E55 is not set +# CONFIG_VICTOR_MPC303 is not set # CONFIG_MIPS_MAGNUM_4000 is not set # CONFIG_MOMENCO_OCELOT is not set # CONFIG_DDB5476 is not set @@ -44,6 +48,7 @@ # CONFIG_MIPS_IVR is not set # CONFIG_MIPS_PB1000 is not set # CONFIG_MIPS_PB1500 is not set +# CONFIG_MIPS_PB1100 is not set # CONFIG_TOSHIBA_JMR3927 is not set # CONFIG_HP_LASERJET is not set # CONFIG_HIGHMEM is not set @@ -51,7 +56,7 @@ # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set # CONFIG_MCA is not set # CONFIG_SBUS is not set -CONFIG_CPU_RC32334=y +CONFIG_MIPS_RC32334=y CONFIG_NEW_IRQ=y CONFIG_NEW_TIME_C=y CONFIG_PCI=y @@ -59,7 +64,6 @@ CONFIG_PCI_AUTO=y CONFIG_NONCOHERENT_IO=y CONFIG_SWAP_IO_SPACE=y -CONFIG_PC_KEYB=y # CONFIG_ISA is not set # CONFIG_EISA is not set @@ -102,6 +106,7 @@ # CONFIG_CPU_LITTLE_ENDIAN is not set # CONFIG_CPU_R5900_CONTEXT is not set # CONFIG_VR4131_CACHE_FIX is not set +# CONFIG_VR4122_CLKSPEEDREG_FIX is not set CONFIG_KCORE_ELF=y CONFIG_ELF_KERNEL=y # CONFIG_BINFMT_IRIX is not set @@ -180,10 +185,6 @@ # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set - -# -# -# # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set @@ -244,6 +245,7 @@ # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set # # Ethernet (10 or 100Mbit) @@ -253,7 +255,6 @@ # CONFIG_HAPPYMEAL is not set # CONFIG_SUNBMAC is not set # CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set # CONFIG_SUNGEM is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_LANCE is not set @@ -266,14 +267,14 @@ # CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_APRICOT is not set # CONFIG_CS89x0 is not set +# CONFIG_TC35815 is not set CONFIG_TULIP=y # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set # CONFIG_DE4X5 is not set # CONFIG_DGRS is not set -# CONFIG_TC35815 is not set # CONFIG_DM9102 is not set -# CONFIG_EEPRO100 is not set +CONFIG_EEPRO100=y # CONFIG_LNE390 is not set # CONFIG_FEALNX is not set # CONFIG_NATSEMI is not set @@ -281,10 +282,11 @@ # CONFIG_NE3210 is not set # CONFIG_ES3210 is not set # CONFIG_8139CP is not set -# CONFIG_8139TOO is not set +CONFIG_8139TOO=y # CONFIG_8139TOO_PIO is not set # CONFIG_8139TOO_TUNE_TWISTER is not set # CONFIG_8139TOO_8129 is not set +# CONFIG_8139_NEW_RX_RESET is not set # CONFIG_SIS900 is not set # CONFIG_EPIC100 is not set # CONFIG_SUNDANCE is not set @@ -352,8 +354,7 @@ # # Character devices # -CONFIG_VT=y -CONFIG_VT_CONSOLE=y +# CONFIG_VT is not set CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y # CONFIG_SERIAL_EXTENDED is not set @@ -376,14 +377,6 @@ # Joysticks # # CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# # CONFIG_QIC02_TAPE is not set # @@ -494,17 +487,6 @@ # CONFIG_NLS is not set # -# Console drivers -# -# CONFIG_VGA_CONSOLE is not set -# CONFIG_MDA_CONSOLE is not set - -# -# Frame-buffer support -# -# CONFIG_FB is not set - -# # Sound # # CONFIG_SOUND is not set @@ -513,17 +495,9 @@ # USB support # # CONFIG_USB is not set - -# -# USB Controllers -# # CONFIG_USB_UHCI is not set # CONFIG_USB_UHCI_ALT is not set # CONFIG_USB_OHCI is not set - -# -# USB Device Class drivers -# # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set @@ -537,44 +511,16 @@ # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set # CONFIG_USB_SCANNER is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# # CONFIG_USB_PEGASUS is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_CATC is not set # CONFIG_USB_CDCETHER is not set # CONFIG_USB_USBNET is not set - -# -# USB port drivers -# # CONFIG_USB_USS720 is not set # @@ -588,6 +534,7 @@ # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set # CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set @@ -601,14 +548,11 @@ # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set # CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# # CONFIG_USB_RIO500 is not set # Index: defconfig-79S334-le =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-79S334-le,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- defconfig-79S334-le 12 Feb 2002 18:21:25 -0000 1.2 +++ defconfig-79S334-le 29 Apr 2002 23:05:11 -0000 1.3 @@ -1,7 +1,8 @@ # -# Automatically generated make config: don't edit +# Automatically generated by make menuconfig: don't edit # CONFIG_MIPS=y +CONFIG_MIPS32=y # # Code maturity level options @@ -32,6 +33,9 @@ # CONFIG_NEC_MOBILEPRO is not set CONFIG_IDT_79S334=y # CONFIG_IDT_79EB355 is not set +# CONFIG_IBM_WORKPAD is not set +# CONFIG_CASIO_E55 is not set +# CONFIG_VICTOR_MPC303 is not set # CONFIG_MIPS_MAGNUM_4000 is not set # CONFIG_MOMENCO_OCELOT is not set # CONFIG_DDB5476 is not set @@ -44,6 +48,7 @@ # CONFIG_MIPS_IVR is not set # CONFIG_MIPS_PB1000 is not set # CONFIG_MIPS_PB1500 is not set +# CONFIG_MIPS_PB1100 is not set # CONFIG_TOSHIBA_JMR3927 is not set # CONFIG_HP_LASERJET is not set # CONFIG_HIGHMEM is not set @@ -51,7 +56,7 @@ # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set # CONFIG_MCA is not set # CONFIG_SBUS is not set -CONFIG_CPU_RC32334=y +CONFIG_MIPS_RC32334=y CONFIG_NEW_IRQ=y CONFIG_NEW_TIME_C=y CONFIG_PCI=y @@ -59,7 +64,6 @@ CONFIG_PCI_AUTO=y CONFIG_NONCOHERENT_IO=y CONFIG_SWAP_IO_SPACE=y -CONFIG_PC_KEYB=y # CONFIG_ISA is not set # CONFIG_EISA is not set @@ -102,6 +106,7 @@ CONFIG_CPU_LITTLE_ENDIAN=y # CONFIG_CPU_R5900_CONTEXT is not set # CONFIG_VR4131_CACHE_FIX is not set +# CONFIG_VR4122_CLKSPEEDREG_FIX is not set CONFIG_KCORE_ELF=y CONFIG_ELF_KERNEL=y # CONFIG_BINFMT_AOUT is not set @@ -188,10 +193,6 @@ # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set - -# -# -# # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set @@ -252,6 +253,7 @@ # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set # # Ethernet (10 or 100Mbit) @@ -261,7 +263,6 @@ # CONFIG_HAPPYMEAL is not set # CONFIG_SUNBMAC is not set # CONFIG_SUNQE is not set -# CONFIG_SUNLANCE is not set # CONFIG_SUNGEM is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_LANCE is not set @@ -274,12 +275,12 @@ # CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_APRICOT is not set # CONFIG_CS89x0 is not set +# CONFIG_TC35815 is not set CONFIG_TULIP=y # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set # CONFIG_DE4X5 is not set # CONFIG_DGRS is not set -# CONFIG_TC35815 is not set # CONFIG_DM9102 is not set CONFIG_EEPRO100=y # CONFIG_LNE390 is not set @@ -293,6 +294,7 @@ # CONFIG_8139TOO_PIO is not set # CONFIG_8139TOO_TUNE_TWISTER is not set # CONFIG_8139TOO_8129 is not set +# CONFIG_8139_NEW_RX_RESET is not set # CONFIG_SIS900 is not set # CONFIG_EPIC100 is not set # CONFIG_SUNDANCE is not set @@ -360,8 +362,7 @@ # # Character devices # -CONFIG_VT=y -CONFIG_VT_CONSOLE=y +# CONFIG_VT is not set CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y # CONFIG_SERIAL_EXTENDED is not set @@ -384,14 +385,6 @@ # Joysticks # # CONFIG_INPUT_GAMEPORT is not set - -# -# Input core support is needed for gameports -# - -# -# Input core support is needed for joysticks -# # CONFIG_QIC02_TAPE is not set # @@ -502,61 +495,6 @@ # CONFIG_NLS is not set # -# Console drivers -# -# CONFIG_VGA_CONSOLE is not set -# CONFIG_MDA_CONSOLE is not set - -# -# Frame-buffer support -# -CONFIG_FB=y -CONFIG_DUMMY_CONSOLE=y -# CONFIG_FB_RIVA is not set -# CONFIG_FB_CLGEN is not set -# CONFIG_FB_PM2 is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_E1355 is not set -# CONFIG_FB_MQ200 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_E1356 is not set -CONFIG_FB_IT8181=y -# CONFIG_FB_SIMPLE is not set -# CONFIG_FB_VIRTUAL is not set -CONFIG_FBCON_ADVANCED=y -# CONFIG_FBCON_MFB is not set -# CONFIG_FBCON_CFB2 is not set -# CONFIG_FBCON_CFB4 is not set -# CONFIG_FBCON_CFB8 is not set -CONFIG_FBCON_CFB16=y -CONFIG_FBCON_CFB24=y -CONFIG_FBCON_CFB32=y -# CONFIG_FBCON_AFB is not set -# CONFIG_FBCON_ILBM is not set -# CONFIG_FBCON_IPLAN2P2 is not set -# CONFIG_FBCON_IPLAN2P4 is not set -# CONFIG_FBCON_IPLAN2P8 is not set -# CONFIG_FBCON_MAC is not set -# CONFIG_FBCON_VGA_PLANES is not set -# CONFIG_FBCON_VGA is not set -# CONFIG_FBCON_HGA is not set -# CONFIG_FBCON_FONTWIDTH8_ONLY is not set -CONFIG_FBCON_FONTS=y -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -# CONFIG_FONT_SUN8x16 is not set -# CONFIG_FONT_SUN12x22 is not set -# CONFIG_FONT_6x11 is not set -# CONFIG_FONT_PEARL_8x8 is not set -# CONFIG_FONT_ACORN_8x8 is not set - -# # Sound # # CONFIG_SOUND is not set @@ -565,17 +503,9 @@ # USB support # # CONFIG_USB is not set - -# -# USB Controllers -# # CONFIG_USB_UHCI is not set # CONFIG_USB_UHCI_ALT is not set # CONFIG_USB_OHCI is not set - -# -# USB Device Class drivers -# # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set @@ -589,44 +519,16 @@ # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set - -# -# USB Human Interface Devices (HID) -# - -# -# Input core support is needed for USB HID -# - -# -# USB Imaging devices -# # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set # CONFIG_USB_SCANNER is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USB_HPUSBSCSI is not set - -# -# USB Multimedia devices -# - -# -# Video4Linux support is needed for USB Multimedia device support -# - -# -# USB Network adaptors -# # CONFIG_USB_PEGASUS is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_CATC is not set # CONFIG_USB_CDCETHER is not set # CONFIG_USB_USBNET is not set - -# -# USB port drivers -# # CONFIG_USB_USS720 is not set # @@ -640,6 +542,7 @@ # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set # CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set @@ -653,14 +556,11 @@ # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set # CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set - -# -# USB Miscellaneous drivers -# # CONFIG_USB_RIO500 is not set # |
From: Steve L. <slo...@us...> - 2002-04-29 23:05:14
|
Update of /cvsroot/linux-mips/linux/arch/mips/kernel In directory usw-pr-cvs1:/tmp/cvs-serv16874/arch/mips/kernel Modified Files: proc.c setup.c Log Message: Initial IDT 79EB355 support. Index: proc.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/kernel/proc.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- proc.c 12 Apr 2002 20:45:07 -0000 1.16 +++ proc.c 29 Apr 2002 23:05:11 -0000 1.17 @@ -68,7 +68,8 @@ [CPU_R5500] "R5500", [CPU_TX49XX] "TX49xx", [CPU_TX39XX] "TX39xx", - [CPU_R5900] "R5900" + [CPU_R5900] "R5900", + [CPU_RC32300] "RC32300" }; Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/kernel/setup.c,v retrieving revision 1.59 retrieving revision 1.60 diff -u -d -r1.59 -r1.60 --- setup.c 23 Apr 2002 16:43:48 -0000 1.59 +++ setup.c 29 Apr 2002 23:05:11 -0000 1.60 @@ -149,6 +149,9 @@ case CPU_NEVADA: case CPU_RM7000: case CPU_TX49XX: +#ifdef CONFIG_MIPS_RC32355 + case CPU_RC32300: +#endif cpu_wait = r4k_wait; printk(" available.\n"); break; |