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: Paul M. <le...@us...> - 2002-04-21 18:03:14
|
Update of /cvsroot/linux-mips/linux/arch/mips/hp-lj In directory usw-pr-cvs1:/tmp/cvs-serv9425/arch/mips/hp-lj Modified Files: irq.c Log Message: Sync with OSS. Index: irq.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/hp-lj/irq.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- irq.c 2 Jan 2002 20:42:11 -0000 1.3 +++ irq.c 21 Apr 2002 18:03:11 -0000 1.4 @@ -8,6 +8,7 @@ * Copyright (C) 1992 Linus Torvalds * Copyright (C) 1994 - 2000 Ralf Baechle */ + #include <linux/config.h> #include <linux/init.h> #include <linux/interrupt.h> @@ -15,6 +16,8 @@ #include <asm/system.h> #include <asm/gdb-stub.h> + +/* install the handler for exception 0 */ void __init init_IRQ(void) { extern void hpIRQ(void); @@ -35,3 +38,4 @@ #endif } + |
From: Paul M. <le...@us...> - 2002-04-21 18:03:14
|
Update of /cvsroot/linux-mips/linux/arch/mips/dec In directory usw-pr-cvs1:/tmp/cvs-serv9425/arch/mips/dec Modified Files: int-handler.S setup.c Log Message: Sync with OSS. Index: int-handler.S =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/dec/int-handler.S,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- int-handler.S 26 Nov 2001 19:19:52 -0000 1.4 +++ int-handler.S 21 Apr 2002 18:03:11 -0000 1.5 @@ -2,7 +2,7 @@ * arch/mips/dec/int-handler.S * * Copyright (C) 1995, 1996, 1997 Paul M. Antoine and Harald Koerfgen - * Copyright (C) 2000, 2001 Maciej W. Rozycki + * Copyright (C) 2000, 2001, 2002 Maciej W. Rozycki * * Written by Ralf Baechle and Andreas Busse, modified for DECStation * support by Paul Antoine and Harald Koerfgen. @@ -10,6 +10,8 @@ * completly rewritten: * Copyright (C) 1998 Harald Koerfgen * + * Rewritten extensively for controller-driven IRQ support + * by Maciej W. Rozycki. */ #include <asm/asm.h> #include <asm/regdef.h> @@ -17,12 +19,13 @@ #include <asm/stackframe.h> #include <asm/addrspace.h> +#include <asm/dec/interrupts.h> +#include <asm/dec/ioasic_addrs.h> +#include <asm/dec/ioasic_ints.h> #include <asm/dec/kn01.h> #include <asm/dec/kn02.h> #include <asm/dec/kn02xa.h> #include <asm/dec/kn03.h> -#include <asm/dec/ioasic_addrs.h> -#include <asm/dec/interrupts.h> .text @@ -84,7 +87,7 @@ * 4 TurboChannel Slot 2 * 5 TurboChannel Slot 3 (ASIC) * 6 Halt button - * 7 FPU + * 7 FPU/R4k timer * * DS5000/2x's, aka kn02ca, aka maxine: * @@ -97,7 +100,7 @@ * 4 I/O write timeout * 5 TurboChannel (ASIC) * 6 Halt Keycode from Access.Bus keyboard (CTRL-ALT-ENTER) - * 7 FPU + * 7 FPU/R4k timer * * DS5000/2xx's, aka kn03, aka 3maxplus: * @@ -110,22 +113,11 @@ * 4 Reserved * 5 Memory * 6 Halt Button - * 7 FPU - * - * We handle the IRQ according to _our_ priority. - * Priority is: - * - * Highest ---- RTC - * SCSI (if separate from TC) - * Ethernet (if separate from TC) - * Serial (if separate from TC) - * TurboChannel (if there is one!) - * Memory Controller (execept kmin) - * Lowest ---- Halt (if there is one!) - * - * then we just return, if multiple IRQs are pending then we will just take - * another exception, big deal. + * 7 FPU/R4k timer * + * We handle the IRQ according to _our_ priority (see setup.c), + * then we just return. If multiple IRQs are pending then we will + * just take another exception, big deal. */ .align 5 NESTED(decstation_handle_int, PT_SIZE, ra) @@ -139,87 +131,135 @@ * Get pending Interrupts */ mfc0 t0,CP0_CAUSE # get pending interrupts - mfc0 t2,CP0_STATUS + mfc0 t1,CP0_STATUS + lw t2,cpu_fpu_mask andi t0,ST0_IM # CAUSE.CE may be non-zero! - and t0,t2 # isolate allowed ones + and t0,t1 # isolate allowed ones beqz t0,spurious - andi t2,t0,DEC_IE_FPU + and t2,t0 bnez t2,fpu # handle FPU immediately /* * Find irq with highest priority */ - la t1,cpu_mask_tbl + la t1,cpu_mask_nr_tbl 1: lw t2,(t1) - move t3,t0 - and t3,t2 - beq t3,zero,1b - addu t1,PTRSIZE # delay slot + nop + and t2,t0 + beqz t2,1b + addu t1,2*PTRSIZE # delay slot /* * Do the low-level stuff */ - lw a0,%lo(cpu_irq_nr-cpu_mask_tbl-PTRSIZE)(t1) - lw t0,%lo(cpu_ivec_tbl-cpu_mask_tbl-PTRSIZE)(t1) - bgez a0, handle_it # irq_nr >= 0? - # irq_nr < 0: t0 contains an address + lw a0,(-PTRSIZE)(t1) nop - jr t0 - nop # delay slot + bgez a0,handle_it # irq_nr >= 0? + # irq_nr < 0: it is an address + nop + jr a0 + # a trick to save a branch: + lui t2,KN03_IOASIC_BASE>>16 # upper part of IOASIC Address /* * Handle "IRQ Controller" Interrupts * Masked Interrupts are still visible and have to be masked "by hand". */ - FEXPORT(kn02_io_int) -kn02_io_int: # 3max + FEXPORT(kn02_io_int) # 3max lui t0,KN02_CSR_ADDR>>16 # get interrupt status and mask lw t0,(t0) - la t1,asic_mask_tbl - move t3,t0 - sll t3,16 # shift interrupt status - b find_int - and t0,t3 # mask out allowed ones + nop + andi t1,t0,KN02_IRQ_ALL + b 1f + srl t0,16 # shift interrupt mask - FEXPORT(kn03_io_int) -kn03_io_int: # 3max+ - lui t2,KN03_IOASIC_BASE>>16 # upper part of IOASIC Address - lw t0,SIR(t2) # get status: IOASIC isr - lw t3,SIMR(t2) # get mask: IOASIC isrm - la t1,asic_mask_tbl - b find_int - and t0,t3 # mask out allowed ones + FEXPORT(kn02xa_io_int) # 3min/maxine + lui t2,KN02XA_IOASIC_BASE>>16 # upper part of IOASIC Address - FEXPORT(kn02xa_io_int) -kn02xa_io_int: # 3min/maxine - lui t2,KN02XA_IOASIC_BASE>>16 - # upper part of IOASIC Address + FEXPORT(kn03_io_int) # 3max+ (t2 loaded earlier) lw t0,SIR(t2) # get status: IOASIC isr - lw t3,SIMR(t2) # get mask: IOASIC isrm - la t1,asic_mask_tbl - and t0,t3 + lw t1,SIMR(t2) # get mask: IOASIC isrm + nop + +1: and t0,t1 # mask out allowed ones + + beqz t0,spurious /* * Find irq with highest priority */ -find_int: beqz t0,spurious - -1: lw t2,(t1) - move t3,t0 - and t3,t2 - beq zero,t3,1b - addu t1,PTRSIZE # delay slot + la t1,asic_mask_nr_tbl +2: lw t2,(t1) + nop + and t2,t0 + beq zero,t2,2b + addu t1,2*PTRSIZE # delay slot /* * Do the low-level stuff */ - lw a0,%lo(asic_irq_nr-asic_mask_tbl-PTRSIZE)(t1) + lw a0,%lo(-PTRSIZE)(t1) + nop + bgez a0,handle_it # irq_nr >= 0? + # irq_nr < 0: it is an address + nop + jr a0 + nop # delay slot + +/* + * Dispatch low-priority interrupts. We reconsider all status + * bits again, which looks like a lose, but it makes the code + * simple and O(log n), so it gets compensated. + */ + FEXPORT(cpu_all_int) # HALT, timers, software junk + li a0,DEC_CPU_IRQ_BASE + srl t0,CAUSEB_IP + li t1,CAUSEF_IP>>CAUSEB_IP # mask + b 1f + li t2,4 # nr of bits / 2 + + FEXPORT(kn02_all_int) # impossible ? + li a0,KN02_IRQ_BASE + li t1,KN02_IRQ_ALL # mask + b 1f + li t2,4 # nr of bits / 2 + + FEXPORT(asic_all_int) # various I/O ASIC junk + li a0,IO_IRQ_BASE + li t1,IO_IRQ_ALL # mask + b 1f + li t2,8 # nr of bits / 2 + +/* + * Dispatch DMA interrupts -- O(log n). + */ + FEXPORT(asic_dma_int) # I/O ASIC DMA events + li a0,IO_IRQ_BASE+IO_INR_DMA + srl t0,IO_INR_DMA + li t1,IO_IRQ_DMA>>IO_INR_DMA # mask + li t2,8 # nr of bits / 2 + + /* + * Find irq with highest priority. + * Highest irq number takes precedence. + */ +1: srlv t3,t1,t2 +2: xor t1,t3 + and t3,t0,t1 + beqz t3,3f nop + move t0,t3 + addu a0,t2 +3: srl t2,1 + bnez t2,2b + srlv t3,t1,t2 -handle_it: jal do_IRQ +handle_it: + jal do_IRQ move a1,sp + j ret_from_irq nop @@ -233,135 +273,15 @@ END(decstation_handle_int) /* - * Generic unimplemented interrupt routines - ivec_tbl is initialised to - * point all interrupts here. The table is then filled in by machine-specific - * initialisation in dec_setup(). + * Generic unimplemented interrupt routines -- cpu_mask_nr_tbl + * and asic_mask_nr_tbl are initialized to point all interrupts here. + * The tables are then filled in by machine-specific initialisation + * in dec_setup(). */ FEXPORT(dec_intr_unimplemented) -dec_intr_unimplemented: - mfc0 a1,CP0_CAUSE # cheats way of printing an arg! - nop # to be sure... - PANIC("Unimplemented cpu interrupt! CP0_CAUSE: 0x%x"); + move a1,t0 # cheats way of printing an arg! + PANIC("Unimplemented cpu interrupt! CP0_CAUSE: 0x%08x"); FEXPORT(asic_intr_unimplemented) -asic_intr_unimplemented: move a1,t0 # cheats way of printing an arg! - PANIC("Unimplemented asic interrupt! ASIC ISR: 0x%x"); - -/* - * FIXME: This interrupt vector table is experimental. It is initialised with - * *_intr_unimplemented and filled in with the addresses of - * machine-specific interrupt routines in dec_setup() Paul 10/5/97. - * - * The mask_tbls contain the interrupt masks which are used. It is - * initialised with all possible interrupt status bits set, so that - * unused Interrupts are catched. Harald - */ - .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 - - 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 - - EXPORT(cpu_ivec_tbl) -cpu_ivec_tbl: - PTR dec_intr_unimplemented - PTR dec_intr_unimplemented - PTR dec_intr_unimplemented - PTR dec_intr_unimplemented - PTR dec_intr_unimplemented - PTR dec_intr_unimplemented - PTR dec_intr_unimplemented # these two are unlikely - PTR dec_intr_unimplemented # to be used - PTR dec_intr_unimplemented # EOL - - EXPORT(asic_mask_tbl) -asic_mask_tbl: - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0xffffffff # EOL - - EXPORT(asic_irq_nr) -asic_irq_nr: - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0xffffffff # EOL + PANIC("Unimplemented asic interrupt! ASIC ISR: 0x%08x"); Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/dec/setup.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- setup.c 2 Jan 2002 19:12:16 -0000 1.5 +++ setup.c 21 Apr 2002 18:03:11 -0000 1.6 @@ -6,56 +6,94 @@ * for more details. * * Copyright (C) 1998 Harald Koerfgen - * Copyright (C) 2000, 2001 Maciej W. Rozycki + * Copyright (C) 2000, 2001, 2002 Maciej W. Rozycki */ + #include <linux/sched.h> #include <linux/interrupt.h> #include <linux/mc146818rtc.h> #include <linux/param.h> [...1043 lines suppressed...] - cpu_mask_tbl[3] = IE_IRQ4; - cpu_irq_nr[3] = HALT; + /* Register board interrupts: FPU and cascade. */ + if (dec_interrupt[DEC_IRQ_FPU] >= 0) + setup_irq(dec_interrupt[DEC_IRQ_FPU], &fpuirq); + if (dec_interrupt[DEC_IRQ_CASCADE] >= 0) + setup_irq(dec_interrupt[DEC_IRQ_CASCADE], &ioirq); - /* - * Enable board interrupts: FPU, I/O ASIC. - */ - set_cp0_status(DEC_IE_FPU | dec_ie_ioasic); + /* Register the HALT interrupt. */ + if (dec_interrupt[DEC_IRQ_HALT] >= 0) + setup_irq(dec_interrupt[DEC_IRQ_HALT], &haltirq); +} - dec_halt_init(&haltirq); -} /* dec_init_kn03 */ +EXPORT_SYMBOL(dec_interrupt); |
From: Paul M. <le...@us...> - 2002-04-21 18:03:14
|
Update of /cvsroot/linux-mips/linux/arch/mips/ddb5xxx/common In directory usw-pr-cvs1:/tmp/cvs-serv9425/arch/mips/ddb5xxx/common Modified Files: prom.c Log Message: Sync with OSS. Index: prom.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/ddb5xxx/common/prom.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- prom.c 22 Jan 2002 22:08:12 -0000 1.5 +++ prom.c 21 Apr 2002 18:03:11 -0000 1.6 @@ -28,13 +28,12 @@ const char *get_system_type(void) { -#if defined(CONFIG_DDB5074) - return "NEC DDB Vrc-5074"; -#elif defined(CONFIG_DDB5476) - return "NEC DDB Vrc-5476"; -#elif defined(CONFIG_DDB5477) - return "NEC DDB Vrc-5477"; -#endif + switch (mips_machtype) { + case MACH_NEC_DDB5074: return "NEC DDB Vrc-5074"; + case MACH_NEC_DDB5476: return "NEC DDB Vrc-5476"; + case MACH_NEC_DDB5477: return "NEC DDB Vrc-5477"; + case MACH_NEC_ROCKHOPPER: return "NEC Rockhopper"; + } } /* [js...@ju...] PMON passes arguments in C main() style */ |
From: Paul M. <le...@us...> - 2002-04-21 18:03:14
|
Update of /cvsroot/linux-mips/linux/arch/mips/ddb5xxx/ddb5476 In directory usw-pr-cvs1:/tmp/cvs-serv9425/arch/mips/ddb5xxx/ddb5476 Modified Files: nile4_pic.c Log Message: Sync with OSS. Index: nile4_pic.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/ddb5xxx/ddb5476/nile4_pic.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- nile4_pic.c 7 Oct 2001 05:40:22 -0000 1.1 +++ nile4_pic.c 21 Apr 2002 18:03:11 -0000 1.2 @@ -158,8 +158,8 @@ // ddb_set_pmr(DDB_PCIINIT0, DDB_PCICMD_IO, 0, DDB_PCI_ACCESS_32); ddb_out32(DDB_PCIINIT0, reg); - /* i8269.c set the base vector to be 0x20, as it does for i386 */ - return irq - 0x20; + /* i8269.c set the base vector to be 0x0 */ + return irq + I8259_IRQ_BASE; } #if defined(CONFIG_LL_DEBUG) |
From: Paul M. <le...@us...> - 2002-04-21 17:57:55
|
Update of /cvsroot/linux-mips/linux/include/asm-mips In directory usw-pr-cvs1:/tmp/cvs-serv8158 Added Files: irq_cpu.h pgtable-bits.h Log Message: Add some new headers for beginnings of OSS sync.. --- NEW FILE: irq_cpu.h --- /* * include/asm-mips/irq_cpu.h * * MIPS CPU interrupt definitions. * * Copyright (C) 2002 Maciej W. Rozycki * * 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. */ #ifndef __ASM_MIPS_IRQ_CPU_H #define __ASM_MIPS_IRQ_CPU_H extern void mips_cpu_irq_init(int irq_base); #endif __ASM_MIPS_IRQ_CPU_H --- NEW FILE: pgtable-bits.h --- /* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle at alii * Copyright (C) 2001, 2002 by Ralf Baechle * Copyright (C) 1999 Silicon Graphics, Inc. */ #ifndef _ASM_CACHINGMODES_H #define _ASM_CACHINGMODES_H #include <linux/config.h> /* Note that we shift the lower 32bits of each EntryLo[01] entry * 6 bits to the left. That way we can convert the PFN into the * physical address by a single 'and' operation and gain 6 additional * bits for storing information which isn't present in a normal * MIPS page table. * * Similar to the Alpha port, we need to keep track of the ref * and mod bits in software. We have a software "yeah you can read * from this page" bit, and a hardware one which actually lets the * process read from the page. On the same token we have a software * writable bit and the real hardware one which actually lets the * process write to the page, this keeps a mod bit via the hardware * dirty bit. * * Certain revisions of the R4000 and R5000 have a bug where if a * certain sequence occurs in the last 3 instructions of an executable * page, and the following page is not mapped, the cpu can do * unpredictable things. The code (when it is written) to deal with * this problem will be in the update_mmu_cache() code for the r4k. */ #define _PAGE_PRESENT (1<<0) /* implemented in software */ #define _PAGE_READ (1<<1) /* implemented in software */ #define _PAGE_WRITE (1<<2) /* implemented in software */ #define _PAGE_ACCESSED (1<<3) /* implemented in software */ #define _PAGE_MODIFIED (1<<4) /* implemented in software */ #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) #define _PAGE_GLOBAL (1<<8) #define _PAGE_VALID (1<<9) #define _PAGE_SILENT_READ (1<<9) /* synonym */ #define _PAGE_DIRTY (1<<10) /* The MIPS dirty bit */ #define _PAGE_SILENT_WRITE (1<<10) #define _CACHE_UNCACHED (1<<11) #define _CACHE_MASK (1<<11) #define _CACHE_CACHABLE_NONCOHERENT 0 #else #define _PAGE_R4KBUG (1<<5) /* workaround for r4k bug */ #define _PAGE_GLOBAL (1<<6) #define _PAGE_VALID (1<<7) #define _PAGE_SILENT_READ (1<<7) /* synonym */ #define _PAGE_DIRTY (1<<8) /* The MIPS dirty bit */ #define _PAGE_SILENT_WRITE (1<<8) #define _CACHE_MASK (7<<9) #if defined(CONFIG_CPU_SB1) /* No penalty for being coherent on the SB1, so just use it for "noncoherent" spaces, too. Shouldn't hurt. */ #define _CACHE_UNCACHED (2<<9) #define _CACHE_CACHABLE_COW (5<<9) #define _CACHE_CACHABLE_NONCOHERENT (5<<9) #define _CACHE_UNCACHED_ACCELERATED (7<<9) #else #define _CACHE_CACHABLE_NO_WA (0<<9) /* R4600 only */ #define _CACHE_CACHABLE_WA (1<<9) /* R4600 only */ #define _CACHE_UNCACHED (2<<9) /* R4[0246]00 */ #define _CACHE_CACHABLE_NONCOHERENT (3<<9) /* R4[0246]00 */ #define _CACHE_CACHABLE_CE (4<<9) /* R4[04]00 only */ #define _CACHE_CACHABLE_COW (5<<9) /* R4[04]00 only */ #define _CACHE_CACHABLE_CUW (6<<9) /* R4[04]00 only */ #define _CACHE_UNCACHED_ACCELERATED (7<<9) /* R10000 only */ #endif #endif #define __READABLE (_PAGE_READ | _PAGE_SILENT_READ | _PAGE_ACCESSED) #define __WRITEABLE (_PAGE_WRITE | _PAGE_SILENT_WRITE | _PAGE_MODIFIED) #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_MODIFIED | _CACHE_MASK) #ifdef CONFIG_MIPS_UNCACHED #define PAGE_CACHABLE_DEFAULT _CACHE_UNCACHED #elif CONFIG_CPU_SB1 #define PAGE_CACHABLE_DEFAULT _CACHE_CACHABLE_COW #else #define PAGE_CACHABLE_DEFAULT _CACHE_CACHABLE_NONCOHERENT #endif #endif /* _ASM_CACHINGMODES_H */ |
From: Paul M. <le...@us...> - 2002-04-21 06:46:00
|
Update of /cvsroot/linux-mips/linux/drivers/char In directory usw-pr-cvs1:/tmp/cvs-serv15991/drivers/char Modified Files: serial.c Log Message: Keep binutils happy, remove routines need to be assigned wrapped through __devexit_p() or else .text.exit gets trampled. Index: serial.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/char/serial.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- serial.c 10 Mar 2002 10:22:45 -0000 1.10 +++ serial.c 21 Apr 2002 06:45:57 -0000 1.11 @@ -4921,7 +4921,7 @@ static struct pci_driver serial_pci_driver = { name: "serial", probe: serial_init_one, - remove: serial_remove_one, + remove: __devexit_p(serial_remove_one), id_table: serial_pci_tbl, }; |
From: Paul M. <le...@us...> - 2002-04-21 06:44:06
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4122/common In directory usw-pr-cvs1:/tmp/cvs-serv15862/arch/mips/vr41xx/vr4122/common Modified Files: pciu.c Log Message: Add missing header for definition of udelay(). Index: pciu.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4122/common/pciu.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- pciu.c 20 Apr 2002 19:08:43 -0000 1.2 +++ pciu.c 21 Apr 2002 06:44:03 -0000 1.3 @@ -42,6 +42,7 @@ #include <linux/init.h> #include <linux/pci.h> #include <linux/types.h> +#include <linux/delay.h> #include <asm/io.h> #include <asm/vr41xx.h> |
From: Paul M. <le...@us...> - 2002-04-21 06:43:24
|
Update of /cvsroot/linux-mips/linux/arch/mips/mm In directory usw-pr-cvs1:/tmp/cvs-serv15643/arch/mips/mm Modified Files: c-r4k.c Log Message: General cleanups, return instead of jumping to a useless label. Keeps gcc 3.0.4 happy. Index: c-r4k.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/mm/c-r4k.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- c-r4k.c 18 Mar 2002 22:40:31 -0000 1.7 +++ c-r4k.c 21 Apr 2002 06:43:20 -0000 1.8 @@ -512,7 +512,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -530,7 +530,6 @@ blast_scache16_page_indexed(page); } else blast_scache16_page(page); -out: } static void r4k_flush_cache_page_s32d16i16(struct vm_area_struct *vma, @@ -560,7 +559,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -578,7 +577,6 @@ blast_scache32_page_indexed(page); } else blast_scache32_page(page); -out: } static void r4k_flush_cache_page_s64d16i16(struct vm_area_struct *vma, @@ -608,7 +606,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -626,7 +624,6 @@ blast_scache64_page_indexed(page); } else blast_scache64_page(page); -out: } static void r4k_flush_cache_page_s128d16i16(struct vm_area_struct *vma, @@ -657,7 +654,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -675,7 +672,6 @@ blast_scache128_page_indexed(page); } else blast_scache128_page(page); -out: } static void r4k_flush_cache_page_s32d32i32(struct vm_area_struct *vma, @@ -706,7 +702,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -724,7 +720,6 @@ blast_scache32_page_indexed(page); } else blast_scache32_page(page); -out: } static void r4k_flush_cache_page_s64d32i32(struct vm_area_struct *vma, @@ -755,7 +750,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -773,7 +768,6 @@ blast_scache64_page_indexed(page); } else blast_scache64_page(page); -out: } static void r4k_flush_cache_page_s128d32i32(struct vm_area_struct *vma, @@ -804,7 +798,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -821,7 +815,6 @@ blast_scache128_page_indexed(page); } else blast_scache128_page(page); -out: } static void r4k_flush_cache_page_d16i16(struct vm_area_struct *vma, @@ -852,7 +845,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_VALID)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -869,7 +862,6 @@ page = (KSEG0 + (page & (dcache_size - 1))); blast_dcache16_page_indexed(page); } -out: } static void r4k_flush_cache_page_d32i32(struct vm_area_struct *vma, @@ -900,7 +892,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_PRESENT)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -918,7 +910,6 @@ page = (KSEG0 + (page & (dcache_size - 1))); blast_dcache32_page_indexed(page); } -out: } static void r4k_flush_cache_page_d32i32_r4600(struct vm_area_struct *vma, @@ -949,7 +940,7 @@ * in the cache. */ if (!(pte_val(*ptep) & _PAGE_PRESENT)) - goto out; + return; /* * Doing flushes for another ASID than the current one is @@ -967,7 +958,6 @@ blast_dcache32_page_indexed(page); blast_dcache32_page_indexed(page ^ dcache_waybit); } -out: } /* If the addresses passed to these routines are valid, they are |
From: Paul M. <le...@us...> - 2002-04-20 19:08:48
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4122/common In directory usw-pr-cvs1:/tmp/cvs-serv19489/vr4122/common Modified Files: pciu.c Log Message: Fix PCIU access race on Vr4131. Index: pciu.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4122/common/pciu.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- pciu.c 7 Mar 2002 03:16:54 -0000 1.1 +++ pciu.c 20 Apr 2002 19:08:43 -0000 1.2 @@ -32,6 +32,9 @@ */ /* * Changes: + * Paul Mundt <le...@ch...> + * - Fix deadlock-causing PCIU access race for VR4131. + * * MontaVista Software Inc. <yy...@mv...> or <so...@mv...> * - New creation, NEC VR4122 and VR4131 are supported. */ @@ -206,6 +209,12 @@ /* Supply PCI clock by PCI bus */ vr41xx_clock_supply(PCI_CLOCK); + + /* + * Sleep for 1us after setting MSKPPCIU bit in CMUCLKMSK + * before doing any PCIU access to avoid deadlock on VR4131. + */ + udelay(1); /* Set master memory & I/O windows */ writel(0x100f9010, PCIMMAW1REG); |
From: Pete P. <pp...@us...> - 2002-04-19 19:12:57
|
Update of /cvsroot/linux-mips/linux/drivers/pcmcia In directory usw-pr-cvs1:/tmp/cvs-serv30920/drivers/pcmcia Modified Files: Config.in Makefile au1000_generic.c Added Files: au1000_pb1x00.c Removed Files: au1000_pb1000.c Log Message: Consolidated the pcmcia pb1x00 files -- brute force approach. --- NEW FILE: au1000_pb1x00.c --- /* * * Alchemy Semi Pb1x00 boards specific pcmcia routines. * * Copyright 2002 MontaVista Software Inc. * Author: MontaVista Software, Inc. * pp...@mv... or so...@mv... * * ######################################################################## * * 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. * * ######################################################################## * * */ #include <linux/module.h> #include <linux/init.h> #include <linux/config.h> #include <linux/delay.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/tqueue.h> #include <linux/timer.h> #include <linux/mm.h> #include <linux/proc_fs.h> #include <linux/version.h> #include <linux/types.h> #include <pcmcia/version.h> #include <pcmcia/cs_types.h> #include <pcmcia/cs.h> #include <pcmcia/ss.h> #include <pcmcia/bulkmem.h> #include <pcmcia/cistpl.h> #include <pcmcia/bus_ops.h> #include "cs_internal.h" #include <asm/io.h> #include <asm/irq.h> #include <asm/system.h> #include <asm/au1000.h> #include <asm/au1000_pcmcia.h> #ifdef CONFIG_MIPS_PB1000 #include <asm/pb1000.h> #define PCMCIA_IRQ AU1000_GPIO_15 #elif defined (CONFIG_MIPS_PB1500) #include <asm/pb1500.h> #define PCMCIA_IRQ AU1000_GPIO_11 /* fixme */ #elif defined (CONFIG_MIPS_PB1100) #include <asm/pb1100.h> #define PCMCIA_IRQ AU1000_GPIO_11 #endif static int pb1x00_pcmcia_init(struct pcmcia_init *init) { #ifdef CONFIG_MIPS_PB1000 u32 pcr; pcr = PCR_SLOT_0_RST | PCR_SLOT_1_RST; writel(0x8000, PB1000_MDR); /* clear pcmcia interrupt */ au_sync_delay(100); 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_sync_delay(20); /* There's two sockets, but only the first one, 0, is used and tested */ return 1; #else /* fixme -- take care of the Pb1500 at some point */ u16 pcr; pcr = readw(PB1100_MEM_PCMCIA) & ~0xf; /* turn off power */ pcr &= ~(PB1100_PC_DEASSERT_RST | PB1100_PC_DRV_EN); writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(500); return 1; #endif } static int pb1x00_pcmcia_shutdown(void) { #ifdef CONFIG_MIPS_PB1000 u16 pcr; 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_sync_delay(20); return 0; #else u16 pcr; pcr = readw(PB1100_MEM_PCMCIA) & ~0xf; /* turn off power */ pcr &= ~(PB1100_PC_DEASSERT_RST | PB1100_PC_DRV_EN); writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(2); return 0; #endif } static int pb1x00_pcmcia_socket_state(unsigned sock, struct pcmcia_state *state) { u32 inserted; unsigned char vs; #ifdef CONFIG_MIPS_PB1000 vs = readw(PB1000_ACR1); inserted = !(vs & (ACR1_SLOT_0_CD1 | ACR1_SLOT_0_CD2)); #else vs = (readw(PB1100_BOARD_STATUS) >> 4) & 0x3; inserted = !((readl(SYS_PINSTATERD) >> 9) & 0x1); /* gpio 9 */ #endif state->ready = 0; state->vs_Xv = 0; state->vs_3v = 0; state->detect = 0; if (sock == 0) { if (inserted) { switch (vs) { case 0: case 2: state->vs_3v=1; break; case 3: /* 5V */ break; default: /* return without setting 'detect' */ printk(KERN_ERR "pb1x00 bad VS (%d)\n", vs); return; } state->detect = 1; } } else { printk(KERN_ERR "pb1x00 socket_state bad sock %d\n", sock); } if (state->detect) { state->ready = 1; } state->bvd1=1; state->bvd2=1; state->wrprot=0; return 1; } static int pb1x00_pcmcia_get_irq_info(struct pcmcia_irq_info *info) { if(info->sock > PCMCIA_MAX_SOCK) return -1; if(info->sock == 0) { info->irq = PCMCIA_IRQ; } else info->irq = -1; return 0; } static int pb1x00_pcmcia_configure_socket(const struct pcmcia_configure *configure) { u16 pcr; if(configure->sock > PCMCIA_MAX_SOCK) return -1; #ifdef CONFIG_MIPS_PB1000 pcr = readw(PB1000_PCR); if (configure->sock == 0) { pcr &= ~(PCR_SLOT_0_VCC0 | PCR_SLOT_0_VCC1 | PCR_SLOT_0_VPP0 | PCR_SLOT_0_VPP1); } else { pcr &= ~(PCR_SLOT_1_VCC0 | PCR_SLOT_1_VCC1 | PCR_SLOT_1_VPP0 | PCR_SLOT_1_VPP1); } pcr &= ~PCR_SLOT_0_RST; DEBUG(KERN_INFO "Vcc %dV Vpp %dV, pcr %x\n", configure->vcc, configure->vpp, pcr); switch(configure->vcc){ case 0: /* Vcc 0 */ switch(configure->vpp) { case 0: pcr |= SET_VCC_VPP(VCC_HIZ,VPP_GND, configure->sock); break; case 12: pcr |= SET_VCC_VPP(VCC_HIZ,VPP_12V, configure->sock); break; case 50: pcr |= SET_VCC_VPP(VCC_HIZ,VPP_5V, configure->sock); break; case 33: pcr |= SET_VCC_VPP(VCC_HIZ,VPP_3V, configure->sock); break; default: pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ, configure->sock); printk("%s: bad Vcc/Vpp (%d:%d)\n", __FUNCTION__, configure->vcc, configure->vpp); break; } break; case 50: /* Vcc 5V */ switch(configure->vpp) { case 0: pcr |= SET_VCC_VPP(VCC_5V,VPP_GND, configure->sock); break; case 50: pcr |= SET_VCC_VPP(VCC_5V,VPP_5V, configure->sock); break; case 12: pcr |= SET_VCC_VPP(VCC_5V,VPP_12V, configure->sock); break; case 33: pcr |= SET_VCC_VPP(VCC_5V,VPP_3V, configure->sock); break; default: pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ, configure->sock); printk("%s: bad Vcc/Vpp (%d:%d)\n", __FUNCTION__, configure->vcc, configure->vpp); break; } break; case 33: /* Vcc 3.3V */ switch(configure->vpp) { case 0: pcr |= SET_VCC_VPP(VCC_3V,VPP_GND, configure->sock); break; case 50: pcr |= SET_VCC_VPP(VCC_3V,VPP_5V, configure->sock); break; case 12: pcr |= SET_VCC_VPP(VCC_3V,VPP_12V, configure->sock); break; case 33: pcr |= SET_VCC_VPP(VCC_3V,VPP_3V, configure->sock); break; default: pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ, configure->sock); printk("%s: bad Vcc/Vpp (%d:%d)\n", __FUNCTION__, configure->vcc, configure->vpp); break; } break; default: /* what's this ? */ pcr |= SET_VCC_VPP(VCC_HIZ,VPP_HIZ,configure->sock); printk(KERN_ERR "%s: bad Vcc %d\n", __FUNCTION__, configure->vcc); break; } pcr &= ~(PCR_SLOT_0_RST); if (configure->reset) { pcr |= PCR_SLOT_0_RST; } writew(pcr, PB1000_PCR); au_sync_delay(300); #else pcr = readw(PB1100_MEM_PCMCIA) & ~0xf; DEBUG(KERN_INFO "Vcc %dV Vpp %dV, pcr %x, reset %d\n", configure->vcc, configure->vpp, pcr, configure->reset); switch(configure->vcc){ case 0: /* Vcc 0 */ pcr |= SET_VCC_VPP(0,0); break; case 50: /* Vcc 5V */ switch(configure->vpp) { case 0: pcr |= SET_VCC_VPP(2,0); break; case 50: pcr |= SET_VCC_VPP(2,1); break; case 12: pcr |= SET_VCC_VPP(2,2); break; case 33: default: pcr |= SET_VCC_VPP(0,0); printk("%s: bad Vcc/Vpp (%d:%d)\n", __FUNCTION__, configure->vcc, configure->vpp); break; } break; case 33: /* Vcc 3.3V */ switch(configure->vpp) { case 0: pcr |= SET_VCC_VPP(1,0); break; case 12: pcr |= SET_VCC_VPP(1,2); break; case 33: pcr |= SET_VCC_VPP(1,1); break; case 50: default: pcr |= SET_VCC_VPP(0,0); printk("%s: bad Vcc/Vpp (%d:%d)\n", __FUNCTION__, configure->vcc, configure->vpp); break; } break; default: /* what's this ? */ pcr |= SET_VCC_VPP(0,0); printk(KERN_ERR "%s: bad Vcc %d\n", __FUNCTION__, configure->vcc); break; } writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(300); if (!configure->reset) { pcr |= PB1100_PC_DRV_EN; writew(pcr, PB1100_MEM_PCMCIA); au_sync_delay(100); pcr |= PB1100_PC_DEASSERT_RST; 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_sync_delay(100); } #endif return 0; } struct pcmcia_low_level pb1x00_pcmcia_ops = { pb1x00_pcmcia_init, pb1x00_pcmcia_shutdown, pb1x00_pcmcia_socket_state, pb1x00_pcmcia_get_irq_info, pb1x00_pcmcia_configure_socket }; Index: Config.in =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/pcmcia/Config.in,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Config.in 2 Apr 2002 22:59:40 -0000 1.5 +++ Config.in 19 Apr 2002 19:12:52 -0000 1.6 @@ -25,9 +25,10 @@ dep_tristate ' HD64465 host bridge support' CONFIG_HD64465_PCMCIA $CONFIG_PCMCIA fi if [ "$CONFIG_MIPS_AU1000" = "y" ]; then - dep_tristate ' Au1000 support' CONFIG_PCMCIA_AU1000 $CONFIG_PCMCIA $CONFIG_MIPS_PB1000 - dep_tristate ' Au1500 support' CONFIG_PCMCIA_AU1500 $CONFIG_PCMCIA $CONFIG_MIPS_PB1500 - dep_tristate ' Au1100 support' CONFIG_PCMCIA_AU1100 $CONFIG_PCMCIA $CONFIG_MIPS_PB1100 + dep_tristate ' Au1x00 pcmcia support' CONFIG_PCMCIA_AU1000 $CONFIG_PCMCIA + if [ "$CONFIG_PCMCIA_AU1000" != "n" ]; then + dep_bool ' Pb1x00 board support' CONFIG_PCMCIA_PB1X00 + fi fi fi Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/pcmcia/Makefile,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- Makefile 18 Apr 2002 00:03:28 -0000 1.6 +++ Makefile 19 Apr 2002 19:12:52 -0000 1.7 @@ -59,13 +59,9 @@ endif endif -obj-$(CONFIG_PCMCIA_AU1000) += au1000_ss.o -obj-$(CONFIG_PCMCIA_AU1500) += au1500_ss.o -obj-$(CONFIG_PCMCIA_AU1100) += au1100_ss.o +obj-$(CONFIG_PCMCIA_AU1000) += au1x00_ss.o au1000_ss-objs-y := au1000_generic.o -au1000_ss-objs-$(CONFIG_MIPS_PB1000) += au1000_pb1000.o -au1000_ss-objs-$(CONFIG_MIPS_PB1500) += au1000_pb1500.o -au1000_ss-objs-$(CONFIG_MIPS_PB1100) += au1000_pb1100.o +au1000_ss-objs-$(CONFIG_PCMCIA_PB1X00) += au1000_pb1x00.o obj-$(CONFIG_PCMCIA_SA1100) += sa1100_cs.o @@ -95,9 +91,7 @@ sa1100_cs.o: $(sa1100_cs-objs-y) $(LD) -r -o $@ $(sa1100_cs-objs-y) -au1000_ss.o: $(au1000_ss-objs-y) - $(LD) -r -o $@ $(au1000_ss-objs-y) -au1100_ss.o: $(au1000_ss-objs-y) +au1x00_ss.o: $(au1000_ss-objs-y) $(LD) -r -o $@ $(au1000_ss-objs-y) yenta_socket.o: $(yenta_socket-objs) Index: au1000_generic.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/pcmcia/au1000_generic.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- au1000_generic.c 18 Apr 2002 00:03:28 -0000 1.9 +++ au1000_generic.c 19 Apr 2002 19:12:52 -0000 1.10 @@ -154,12 +154,8 @@ return -1; } -#ifdef CONFIG_MIPS_PB1000 - pcmcia_low_level=&pb1000_pcmcia_ops; -#elif defined(CONFIG_MIPS_PB1500) - pcmcia_low_level=&pb1500_pcmcia_ops; -#elif defined(CONFIG_MIPS_PB1100) - pcmcia_low_level=&pb1100_pcmcia_ops; +#if defined(CONFIG_MIPS_PB1000) || defined(CONFIG_MIPS_PB1100) || defined(CONFIG_MIPS_PB1500) + pcmcia_low_level=&pb1x00_pcmcia_ops; #else #error Unsupported AU1000 board. #endif --- au1000_pb1000.c DELETED --- |
From: Pete P. <pp...@us...> - 2002-04-19 19:12:56
|
Update of /cvsroot/linux-mips/linux/include/asm-mips In directory usw-pr-cvs1:/tmp/cvs-serv30920/include/asm-mips Modified Files: au1000_pcmcia.h Log Message: Consolidated the pcmcia pb1x00 files -- brute force approach. Index: au1000_pcmcia.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/au1000_pcmcia.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- au1000_pcmcia.h 18 Apr 2002 00:03:28 -0000 1.7 +++ au1000_pcmcia.h 19 Apr 2002 19:12:52 -0000 1.8 @@ -85,12 +85,9 @@ int (*configure_socket)(const struct pcmcia_configure *); }; -#ifdef CONFIG_MIPS_PB1000 -extern struct pcmcia_low_level pb1000_pcmcia_ops; -#elif defined (CONFIG_MIPS_PB1500) -extern struct pcmcia_low_level pb1500_pcmcia_ops; -#elif defined (CONFIG_MIPS_PB1100) -extern struct pcmcia_low_level pb1100_pcmcia_ops; +#if defined(CONFIG_MIPS_PB1000) || defined(CONFIG_MIPS_PB1100) || defined(CONFIG_MIPS_PB1500) +extern struct pcmcia_low_level pb1x00_pcmcia_ops; +#else +error unknown Au1000 board #endif - #endif /* __ASM_AU1000_PCMCIA_H */ |
From: Pete P. <pp...@us...> - 2002-04-19 19:12:56
|
Update of /cvsroot/linux-mips/linux/arch/mips/configs In directory usw-pr-cvs1:/tmp/cvs-serv30920/arch/mips/configs Modified Files: defconfig-pb1100 Log Message: Consolidated the pcmcia pb1x00 files -- brute force approach. Index: defconfig-pb1100 =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-pb1100,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- defconfig-pb1100 18 Apr 2002 00:03:28 -0000 1.5 +++ defconfig-pb1100 19 Apr 2002 19:12:52 -0000 1.6 @@ -127,9 +127,8 @@ # CONFIG_I82365 is not set # CONFIG_PCMCIA_IRQ_REMAP is not set # CONFIG_TCIC is not set -# CONFIG_PCMCIA_AU1000 is not set -# CONFIG_PCMCIA_AU1500 is not set -CONFIG_PCMCIA_AU1100=m +CONFIG_PCMCIA_AU1000=m +CONFIG_PCMCIA_PB1X00=y # # PCI Hotplug Support |
From: Pete P. <pp...@us...> - 2002-04-19 19:11:12
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv30175/drivers/video Modified Files: au1100fb.c Log Message: Removed a debug print. Index: au1100fb.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- au1100fb.c 18 Apr 2002 00:02:04 -0000 1.5 +++ au1100fb.c 19 Apr 2002 19:11:07 -0000 1.6 @@ -335,8 +335,6 @@ #endif break; default: - printk("Au1100fb: unknown blank mode %d\n", - blank_mode); break; } |
From: Pete P. <pp...@us...> - 2002-04-19 19:10:22
|
Update of /cvsroot/linux-mips/linux/arch/mips/configs In directory usw-pr-cvs1:/tmp/cvs-serv29646/arch/mips/configs Modified Files: defconfig-pb1000 Log Message: Updated the defconfig file after consolidating the pb1x00 pcmcia files. Index: defconfig-pb1000 =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-pb1000,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- defconfig-pb1000 15 Feb 2002 19:47:26 -0000 1.19 +++ defconfig-pb1000 19 Apr 2002 19:10:17 -0000 1.20 @@ -32,6 +32,9 @@ # 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 @@ -45,6 +48,7 @@ CONFIG_MIPS_PB1000=y CONFIG_PCI_AUTO=y # 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 @@ -103,6 +107,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 @@ -124,6 +129,7 @@ # CONFIG_PCMCIA_IRQ_REMAP is not set # CONFIG_TCIC is not set CONFIG_PCMCIA_AU1000=m +CONFIG_PCMCIA_PB1X00=y # # PCI Hotplug Support @@ -174,6 +180,7 @@ # CONFIG_MTD_PHYSMAP is not set CONFIG_MTD_PB1000=y # CONFIG_MTD_PB1500 is not set +# CONFIG_MTD_PB1100 is not set # CONFIG_MTD_CSTM_MIPS_IXX is not set # CONFIG_MTD_OCELOT is not set @@ -359,6 +366,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) @@ -369,7 +377,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 @@ -645,12 +652,14 @@ # CONFIG_FB_SIS is not set # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_TRIDENT is not set CONFIG_FB_E1356=y # CONFIG_PB1000_CRT is not set # CONFIG_PB1000_NTSC is not set # CONFIG_PB1000_TFT is not set # CONFIG_FB_IT8181 is not set # CONFIG_FB_SIMPLE is not set +# CONFIG_FB_HPCSFB is not set # CONFIG_FB_VIRTUAL is not set CONFIG_FBCON_ADVANCED=y # CONFIG_FBCON_MFB is not set @@ -719,6 +728,10 @@ # # 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 @@ -781,6 +794,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 @@ -794,6 +808,7 @@ # 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 |
From: Pete P. <pp...@us...> - 2002-04-18 20:28:57
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/pb1100 In directory usw-pr-cvs1:/tmp/cvs-serv27546a/arch/mips/au1000/pb1100 Modified Files: setup.c Log Message: enable BCLK switching. Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1100/setup.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- setup.c 17 Apr 2002 23:59:09 -0000 1.2 +++ setup.c 18 Apr 2002 20:28:43 -0000 1.3 @@ -230,9 +230,7 @@ while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); writel(0, SYS_TOYTRIM); - ///* Enable BCLK switching */ - // this is disabled to bring up epson sed part - //writel(0x00000060, 0xb190003c); + writel(0x00000060, 0xb190003c); #ifdef CONFIG_RTC rtc_ops = &pb1500_rtc_ops; |
From: Pete P. <pp...@us...> - 2002-04-18 00:03:33
|
Update of /cvsroot/linux-mips/linux/drivers/pcmcia In directory usw-pr-cvs1:/tmp/cvs-serv32456/drivers/pcmcia Modified Files: Makefile au1000_generic.c Log Message: Pb1100 pcmcia support. The ide-cs driver now works. Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/pcmcia/Makefile,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Makefile 2 Apr 2002 22:59:40 -0000 1.5 +++ Makefile 18 Apr 2002 00:03:28 -0000 1.6 @@ -61,10 +61,11 @@ obj-$(CONFIG_PCMCIA_AU1000) += au1000_ss.o obj-$(CONFIG_PCMCIA_AU1500) += au1500_ss.o +obj-$(CONFIG_PCMCIA_AU1100) += au1100_ss.o au1000_ss-objs-y := au1000_generic.o au1000_ss-objs-$(CONFIG_MIPS_PB1000) += au1000_pb1000.o au1000_ss-objs-$(CONFIG_MIPS_PB1500) += au1000_pb1500.o -au1000_ss-objs-$(CONFIG_MIPS_PB1100) += au1000_pb1500.o +au1000_ss-objs-$(CONFIG_MIPS_PB1100) += au1000_pb1100.o obj-$(CONFIG_PCMCIA_SA1100) += sa1100_cs.o @@ -95,6 +96,8 @@ $(LD) -r -o $@ $(sa1100_cs-objs-y) au1000_ss.o: $(au1000_ss-objs-y) + $(LD) -r -o $@ $(au1000_ss-objs-y) +au1100_ss.o: $(au1000_ss-objs-y) $(LD) -r -o $@ $(au1000_ss-objs-y) yenta_socket.o: $(yenta_socket-objs) Index: au1000_generic.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/pcmcia/au1000_generic.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- au1000_generic.c 2 Apr 2002 22:59:40 -0000 1.8 +++ au1000_generic.c 18 Apr 2002 00:03:28 -0000 1.9 @@ -59,6 +59,7 @@ static int pc_debug; #endif +MODULE_LICENSE("GPL"); MODULE_AUTHOR("Pete Popov, MontaVista Software <pp...@mv...>"); MODULE_DESCRIPTION("Linux PCMCIA Card Services: Au1x00 Socket Controller"); @@ -84,7 +85,7 @@ static int au1000_pcmcia_driver_init(void); static void au1000_pcmcia_driver_shutdown(void); static void au1000_pcmcia_task_handler(void *data); -static void au1000_pcmcia_poll_event(u32 data); +static void au1000_pcmcia_poll_event(unsigned long data); static void au1000_pcmcia_interrupt(int irq, void *dev, struct pt_regs *regs); static struct tq_struct au1000_pcmcia_task; @@ -158,7 +159,7 @@ #elif defined(CONFIG_MIPS_PB1500) pcmcia_low_level=&pb1500_pcmcia_ops; #elif defined(CONFIG_MIPS_PB1100) - pcmcia_low_level=&pb1500_pcmcia_ops; + pcmcia_low_level=&pb1100_pcmcia_ops; #else #error Unsupported AU1000 board. #endif @@ -196,10 +197,8 @@ pcmcia_socket[i].cs_state.csc_mask=SS_DETECT; if (i == 0) { - printk("sizeof(ioaddr_t) %d\n", sizeof(ioaddr_t)); pcmcia_socket[i].virt_io = (u32)ioremap((ioaddr_t)0xF00000000, 0x1000); - printk("pcmcia virt io %x\n", pcmcia_socket[i].virt_io); pcmcia_socket[i].phys_attr = (memaddr_t)0xF40000000; pcmcia_socket[i].phys_mem = (memaddr_t)0xF80000000; } @@ -308,7 +307,7 @@ }; -static void au1000_pcmcia_poll_event(u32 dummy) +static void au1000_pcmcia_poll_event(unsigned long dummy) { poll_timer.function = au1000_pcmcia_poll_event; poll_timer.expires = jiffies + AU1000_PCMCIA_POLL_PERIOD; @@ -700,6 +699,4 @@ p+=sprintf(p, "common : %u\n", pcmcia_socket[sock].speed_mem); return p-buf; } - - #endif /* defined(CONFIG_PROC_FS) */ |
From: Pete P. <pp...@us...> - 2002-04-18 00:03:33
|
Update of /cvsroot/linux-mips/linux/include/asm-mips In directory usw-pr-cvs1:/tmp/cvs-serv32456/include/asm-mips Modified Files: au1000.h au1000_pcmcia.h pb1100.h Log Message: Pb1100 pcmcia support. The ide-cs driver now works. Index: au1000.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/au1000.h,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- au1000.h 5 Apr 2002 23:25:15 -0000 1.17 +++ au1000.h 18 Apr 2002 00:03:28 -0000 1.18 @@ -777,6 +777,7 @@ #define SYS_OUTPUTSET 0xB1900108 #define SYS_OUTPUTCLR 0xB190010C #define SYS_PINSTATERD 0xB1900110 +#define SYS_PININPUTEN 0xB1900110 /* GPIO2, Au1500 only */ #define GPIO2_BASE 0xB1700000 Index: au1000_pcmcia.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/au1000_pcmcia.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- au1000_pcmcia.h 2 Apr 2002 22:59:40 -0000 1.6 +++ au1000_pcmcia.h 18 Apr 2002 00:03:28 -0000 1.7 @@ -90,7 +90,7 @@ #elif defined (CONFIG_MIPS_PB1500) extern struct pcmcia_low_level pb1500_pcmcia_ops; #elif defined (CONFIG_MIPS_PB1100) -extern struct pcmcia_low_level pb1500_pcmcia_ops; +extern struct pcmcia_low_level pb1100_pcmcia_ops; #endif #endif /* __ASM_AU1000_PCMCIA_H */ Index: pb1100.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/pb1100.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- pb1100.h 2 Apr 2002 22:59:40 -0000 1.1 +++ pb1100.h 18 Apr 2002 00:03:28 -0000 1.2 @@ -27,19 +27,55 @@ #ifndef __ASM_PB1100_H #define __ASM_PB1100_H -#define PB1500_IDENT 0xAE000000 -#define PB1500_BOARD_STATUS 0xAE000004 -#define PB1500_PCI_PCMCIA 0xAE000010 - #define PC_DEASSERT_RST 0x80 - #define PC_DRV_EN 0x10 -#define PB1500_G_CONTROL 0xAE000014 -#define PB1500_RST_VDDI 0xAE00001C -#define PB1500_LEDS 0xAE000018 +#define PB1100_IDENT 0xAE000000 +#define PB1100_BOARD_STATUS 0xAE000004 + #define PB1100_ROM_SEL (1<<15) + #define PB1100_ROM_SIZ (1<<14) + #define PB1100_SWAP_BOOT (1<<13) + #define PB1100_FLASH_WP (1<<12) + #define PB1100_ROM_H_STS (1<<11) + #define PB1100_ROM_L_STS (1<<10) + #define PB1100_FLASH_H_STS (1<<9) + #define PB1100_FLASH_L_STS (1<<8) + #define PB1100_SRAM_SIZ (1<<7) + #define PB1100_TSC_BUSY (1<<6) + #define PB1100_PCMCIA_VS_MASK (3<<4) + #define PB1100_RS232_CD (1<<3) + #define PB1100_RS232_CTS (1<<2) + #define PB1100_RS232_DSR (1<<1) + #define PB1100_RS232_RI (1<<0) -#define PB1500_HEX_LED 0xAF000004 -#define PB1500_HEX_LED_BLANK 0xAF000008 +#define PB1100_IRDA_RS232 0xAE00000C + #define PB1100_IRDA_FULL (0<<14) /* full power */ + #define PB1100_IRDA_SHUTDOWN (1<<14) + #define PB1100_IRDA_TT (2<<14) /* 2/3 power */ + #define PB1100_IRDA_OT (3<<14) /* 1/3 power */ + #define PB1100_IRDA_FIR (1<<13) -/* PCMCIA PB1500 specific defines */ +#define PB1100_MEM_PCMCIA 0xAE000010 + #define PB1100_SD_WP1_RO (1<<15) /* read only */ + #define PB1100_SD_WP0_RO (1<<14) /* read only */ + #define PB1100_SD_PWR1 (1<<11) /* applies power to SD1 */ + #define PB1100_SD_PWR0 (1<<10) /* applies power to SD0 */ + #define PB1100_SEL_SD_CONN1 (1<<9) + #define PB1100_SEL_SD_CONN0 (1<<8) + #define PB1100_PC_DEASSERT_RST (1<<7) + #define PB1100_PC_DRV_EN (1<<4) + +#define PB1100_G_CONTROL 0xAE000014 /* graphics control */ + +#define PB1100_RST_VDDI 0xAE00001C + #define PB1100_SOFT_RESET (1<<15) /* clear to reset the board */ + #define PB1100_VDDI_MASK (0x1F) + +#define PB1100_LEDS 0xAE000018 + +/* 11:8 is 4 discreet LEDs. Clearing a bit illuminates the LED. + * 7:0 is the LED Display's decimal points. + */ +#define PB1100_HEX_LED 0xAE000018 + +/* PCMCIA PB1100 specific defines */ #define PCMCIA_MAX_SOCK 0 /* VPP/VCC */ |
From: Pete P. <pp...@us...> - 2002-04-18 00:03:32
|
Update of /cvsroot/linux-mips/linux/arch/mips/configs In directory usw-pr-cvs1:/tmp/cvs-serv32456/arch/mips/configs Modified Files: defconfig-pb1100 Log Message: Pb1100 pcmcia support. The ide-cs driver now works. Index: defconfig-pb1100 =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-pb1100,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- defconfig-pb1100 12 Apr 2002 20:45:07 -0000 1.4 +++ defconfig-pb1100 18 Apr 2002 00:03:28 -0000 1.5 @@ -129,7 +129,7 @@ # CONFIG_TCIC is not set # CONFIG_PCMCIA_AU1000 is not set # CONFIG_PCMCIA_AU1500 is not set -# CONFIG_PCMCIA_AU1100 is not set +CONFIG_PCMCIA_AU1100=m # # PCI Hotplug Support @@ -306,9 +306,50 @@ # # ATA/IDE/MFM/RLL support # -# CONFIG_IDE is not set -# CONFIG_BLK_DEV_IDE_MODES is not set +CONFIG_IDE=y + +# +# 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 +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# 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 +# CONFIG_BLK_DEV_RZ1000 is not set +# CONFIG_BLK_DEV_IDEPCI is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set # # SCSI support @@ -720,7 +761,7 @@ # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_TRIDENT is not set # CONFIG_FB_E1356 is not set -CONFIG_FB_PB1100=y +CONFIG_FB_AU1100=y # CONFIG_FB_IT8181 is not set # CONFIG_FB_SIMPLE is not set # CONFIG_FB_HPCSFB is not set |
From: Pete P. <pp...@us...> - 2002-04-18 00:02:07
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv31537/drivers/video Modified Files: Config.in Makefile au1100fb.c fbmem.c Log Message: Changed the PB1100 config name to AU1100 and updated the lcd driver and options parsing. Index: Config.in =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/Config.in,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- Config.in 10 Apr 2002 01:10:11 -0000 1.17 +++ Config.in 18 Apr 2002 00:02:04 -0000 1.18 @@ -160,7 +160,7 @@ bool ' Use TFT Panel on Pb1100 ' CONFIG_PB1500_TFT fi if [ "$CONFIG_MIPS_PB1100" = "y" ]; then - bool ' Au1100 LCD Driver' CONFIG_FB_PB1100 + bool ' Au1100 LCD Driver' CONFIG_FB_AU1100 fi fi tristate ' ITE IT8181 framebuffer support' CONFIG_FB_IT8181 Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/Makefile,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- Makefile 10 Apr 2002 01:10:11 -0000 1.14 +++ Makefile 18 Apr 2002 00:02:04 -0000 1.15 @@ -86,7 +86,7 @@ obj-$(CONFIG_FB_MAXINE) += maxinefb.o obj-$(CONFIG_FB_TX3912) += tx3912fb.o obj-$(CONFIG_FB_MQ200) += mq200fb.o -obj-$(CONFIG_FB_PB1100) += au1100fb.o fbgen.o +obj-$(CONFIG_FB_AU1100) += au1100fb.o fbgen.o subdir-$(CONFIG_FB_MATROX) += matrox ifeq ($(CONFIG_FB_MATROX),y) @@ -116,7 +116,6 @@ obj-$(CONFIG_FB_HIT) += hitfb.o fbgen.o obj-$(CONFIG_FB_E1355) += epson1355fb.o fbgen.o obj-$(CONFIG_FB_E1356) += epson1356fb.o -obj-$(CONFIG_FB_AU1100) += au1100lcd.o obj-$(CONFIG_FB_IT8181) += it8181fb.o fbgen.o obj-$(CONFIG_FB_PVR2) += pvr2fb.o obj-$(CONFIG_FB_VOODOO1) += sstfb.o Index: au1100fb.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- au1100fb.c 16 Apr 2002 17:20:27 -0000 1.4 +++ au1100fb.c 18 Apr 2002 00:02:04 -0000 1.5 @@ -57,6 +57,14 @@ #include <video/fbcon-cfb8.h> #include <video/fbcon-cfb16.h> +/* + * Sanity check. If this is a new Au1100 based board, search for + * the PB1100 ifdefs to make sure you modify the code accordingly. + */ +#ifndef CONFIG_MIPS_PB1100 +error Unknown Au1100 board +#endif + #define CMAPSIZE 16 static int my_lcd_index; /* default is zero */ @@ -69,6 +77,7 @@ unsigned long fb_size; unsigned long fb_phys; int mmaped; + int nohwcursor; struct { unsigned red, green, blue, pad; } palette[256]; @@ -98,6 +107,8 @@ static int au1100fb_ioctl(struct inode *inode, struct file *file, u_int cmd, u_long arg, int con, struct fb_info *info); +void au1100_nocursor(struct display *p, int mode, int xx, int yy){}; + static struct fb_ops au1100fb_ops = { owner: THIS_MODULE, fb_get_fix: fbgen_get_fix, @@ -142,7 +153,6 @@ fix->ywrapstep = 0; fix->xpanstep = 1; fix->ypanstep = 1; - //fix->line_length = par->line_length; fix->line_length = current_par.line_length; return 0; } @@ -303,20 +313,26 @@ switch (blank_mode) { case VESA_NO_BLANKING: /* turn on panel */ + //printk("turn on panel\n"); +#ifdef CONFIG_MIPS_PB1100 p_lcd_reg->lcd_control |= LCD_CONTROL_GO; - writew(readw(PB1500_G_CONTROL) | p_lcd->mode_backlight, - PB1500_G_CONTROL); + writew(readw(PB1100_G_CONTROL) | p_lcd->mode_backlight, + PB1100_G_CONTROL); au_sync(); +#endif break; case VESA_VSYNC_SUSPEND: case VESA_HSYNC_SUSPEND: case VESA_POWERDOWN: /* turn off panel */ + //printk("turn off panel\n"); +#ifdef CONFIG_MIPS_PB1100 p_lcd_reg->lcd_control &= ~LCD_CONTROL_GO; - writew(readw(PB1500_G_CONTROL) & ~p_lcd->mode_backlight, - PB1500_G_CONTROL); + writew(readw(PB1100_G_CONTROL) & ~p_lcd->mode_backlight, + PB1100_G_CONTROL); au_sync(); +#endif break; default: printk("Au1100fb: unknown blank mode %d\n", @@ -336,12 +352,16 @@ #ifdef FBCON_HAS_CFB8 case 8: disp->dispsw = &fbcon_cfb8; + if (fb_info.nohwcursor) + fbcon_cfb8.cursor = au1100_nocursor; break; #endif #ifdef FBCON_HAS_CFB16 case 16: disp->dispsw = &fbcon_cfb16; disp->dispsw_data = fb_info.fbcon_cmap16; + if (fb_info.nohwcursor) + fbcon_cfb16.cursor = au1100_nocursor; break; #endif default: @@ -454,10 +474,12 @@ p_lcd_reg->lcd_words = words - 1; p_lcd_reg->lcd_dmaaddr0 = fb_info.fb_phys; +#ifdef CONFIG_MIPS_PB1100 /* turn on panel */ - writew(readw(PB1500_G_CONTROL) | p_lcd->mode_backlight, - PB1500_G_CONTROL); + writew(readw(PB1100_G_CONTROL) | p_lcd->mode_backlight, + PB1100_G_CONTROL); p_lcd_reg->lcd_control |= LCD_CONTROL_GO; +#endif return 0; } @@ -583,20 +605,29 @@ { char* this_opt; int i; + int num_panels = sizeof(panels)/sizeof(struct known_lcd_panels); + if (!options || !*options) return; - this_opt=strtok(options, ","); - - /* Get the panel name, everything else if fixed */ - for (i=0; i<(sizeof(panels)/sizeof(struct known_lcd_panels)); i++) { - if (!strncmp(this_opt, panels[i].panel_name, - strlen(this_opt))) { - my_lcd_index = i; - break; + for(this_opt=strtok(options, ","); this_opt; + this_opt=strtok(NULL, ",")) { + if (!strncmp(this_opt, "panel:", 6)) { + /* Get the panel name, everything else if fixed */ + for (i=0; i<num_panels; i++) { + if (!strncmp(this_opt+6, panels[i].panel_name, + strlen(this_opt))) { + my_lcd_index = i; + break; + } + } } - } + else if (!strncmp(this_opt, "nohwcursor", 10)) { + printk("nohwcursor\n"); + fb_info.nohwcursor = 1; + } + } } @@ -615,5 +646,4 @@ MODULE_AUTHOR("Pete Popov <pp...@mv...>"); MODULE_DESCRIPTION("Au1100 LCD framebuffer device driver"); - #endif /* MODULE */ Index: fbmem.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/fbmem.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- fbmem.c 10 Apr 2002 01:10:12 -0000 1.21 +++ fbmem.c 18 Apr 2002 00:02:04 -0000 1.22 @@ -328,7 +328,7 @@ #ifdef CONFIG_FB_HPCSFB { "hpcsfb", hpcsfb_init, hpcsfb_setup }, #endif -#ifdef CONFIG_FB_PB1100 +#ifdef CONFIG_FB_AU1100 { "au1100fb", au1100fb_init, au1100fb_setup }, #endif |
From: Pete P. <pp...@us...> - 2002-04-17 23:59:12
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/pb1100 In directory usw-pr-cvs1:/tmp/cvs-serv30645/arch/mips/au1000/pb1100 Modified Files: setup.c Log Message: * setup gpio * setup the video options Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1100/setup.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- setup.c 2 Apr 2002 22:59:39 -0000 1.1 +++ setup.c 17 Apr 2002 23:59:09 -0000 1.2 @@ -44,7 +44,7 @@ #include <asm/reboot.h> #include <asm/pgtable.h> #include <asm/au1000.h> -#include <asm/pb1500.h> +#include <asm/pb1100.h> #ifdef CONFIG_USB_OHCI // Enable the workaround for the OHCI DoneHead @@ -130,7 +130,7 @@ // set AUX clock to 12MHz * 8 = 96 MHz writel(8, SYS_AUXPLL); - writel(0, SYS_PINSTATERD); + writel(0, SYS_PININPUTEN); udelay(100); #if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) @@ -144,6 +144,8 @@ strcat(argptr, usb_args); } #endif + // configure pins GPIO[14:9] as GPIO + pin_func = readl(SYS_PINFUNC) & (u32)(~0x80); /* zero and disable FREQ2 */ sys_freqctrl = readl(SYS_FREQCTRL0); @@ -196,18 +198,27 @@ conswitchp = &dummy_con; #endif +#ifdef CONFIG_FB_AU1100 + if ((argptr = strstr(argptr, "video=")) == NULL) { + argptr = prom_getcmdline(); + /* default panel */ + strcat(argptr, " video=au1100fb:panel:Sharp_320x240_16"); + } +#endif + #ifdef CONFIG_FB_E1356 if ((argptr = strstr(argptr, "video=")) == NULL) { argptr = prom_getcmdline(); strcat(argptr, " video=e1356fb:system:pb1500"); } -#endif // CONFIG_FB_E1356 +#endif #ifndef CONFIG_SERIAL_NONSTANDARD /* don't touch the default serial console */ writel(0, UART0_ADDR + UART_CLK); #endif - writel(0, UART3_ADDR + UART_CLK); + outl(0, UART1_ADDR + UART_CLK); + outl(0, UART3_ADDR + UART_CLK); #ifdef CONFIG_BLK_DEV_IDE ide_ops = &std_ide_ops; |
From: Pete P. <pp...@us...> - 2002-04-17 23:56:42
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/pb1000 In directory usw-pr-cvs1:/tmp/cvs-serv29952/arch/mips/au1000/pb1000 Modified Files: setup.c Log Message: Replaced inl/outl macros with the readl/writel equivalents. Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/pb1000/setup.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- setup.c 15 Feb 2002 19:47:25 -0000 1.18 +++ setup.c 17 Apr 2002 23:56:39 -0000 1.19 @@ -121,8 +121,8 @@ #endif // set AUX clock to 12MHz * 8 = 96 MHz - outl(8, SYS_AUXPLL); - outl(0, SYS_PINSTATERD); + writel(8, SYS_AUXPLL); + 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 = inl(SYS_FREQCTRL0); + sys_freqctrl = readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - outl(sys_freqctrl, SYS_FREQCTRL0); + writel(sys_freqctrl, SYS_FREQCTRL0); /* zero and disable USBH/USBD clocks */ - sys_clksrc = inl(SYS_CLKSRC); + sys_clksrc = readl(SYS_CLKSRC); sys_clksrc &= ~0x00007FE0; - outl(sys_clksrc, SYS_CLKSRC); + writel(sys_clksrc, SYS_CLKSRC); - sys_freqctrl = inl(SYS_FREQCTRL0); + sys_freqctrl = readl(SYS_FREQCTRL0); sys_freqctrl &= ~0xFFF00000; - sys_clksrc = inl(SYS_CLKSRC); + sys_clksrc = 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... */ - outl(4, SYS_CPUPLL); + 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)); - outl(sys_freqctrl, SYS_FREQCTRL0); + writel(sys_freqctrl, SYS_FREQCTRL0); /* CPU core freq to 384MHz */ - outl(0x20, SYS_CPUPLL); + 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)); - outl(sys_freqctrl, SYS_FREQCTRL0); + writel(sys_freqctrl, SYS_FREQCTRL0); break; } @@ -190,64 +190,64 @@ #ifdef CONFIG_AU1000_USB_DEVICE sys_clksrc |= ((4<<7) | (0<<6) | (0<<5)); #endif - outl(sys_clksrc, SYS_CLKSRC); + writel(sys_clksrc, SYS_CLKSRC); #ifdef CONFIG_USB_OHCI // enable host controller and wait for reset done - outl(0x08, USB_HOST_CONFIG); + writel(0x08, USB_HOST_CONFIG); udelay(1000); - outl(0x0E, USB_HOST_CONFIG); + writel(0x0E, USB_HOST_CONFIG); udelay(1000); - inl(USB_HOST_CONFIG); // throw away first read - while (!(inl(USB_HOST_CONFIG) & 0x10)) - inl(USB_HOST_CONFIG); + readl(USB_HOST_CONFIG); // throw away first read + while (!(readl(USB_HOST_CONFIG) & 0x10)) + readl(USB_HOST_CONFIG); #endif // configure pins GPIO[14:9] as GPIO - pin_func = inl(SYS_PINFUNC) & (u32)(~0x8080); + pin_func = readl(SYS_PINFUNC) & (u32)(~0x8080); #ifndef CONFIG_AU1000_USB_DEVICE // 2nd USB port is USB host pin_func |= 0x8000; #endif - outl(pin_func, SYS_PINFUNC); - outl(0x2800, SYS_TRIOUTCLR); - outl(0x0030, SYS_OUTPUTCLR); + writel(pin_func, SYS_PINFUNC); + writel(0x2800, SYS_TRIOUTCLR); + writel(0x0030, SYS_OUTPUTCLR); #endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1000_USB_DEVICE) // make gpio 15 an input (for interrupt line) - pin_func = inl(SYS_PINFUNC) & (u32)(~0x100); + pin_func = readl(SYS_PINFUNC) & (u32)(~0x100); // we don't need I2S, so make it available for GPIO[31:29] pin_func |= (1<<5); - outl(pin_func, SYS_PINFUNC); + writel(pin_func, SYS_PINFUNC); - outl(0x8000, SYS_TRIOUTCLR); + writel(0x8000, SYS_TRIOUTCLR); #ifdef CONFIG_FB conswitchp = &dummy_con; #endif - static_cfg0 = inl(MEM_STCFG0) & (u32)(~0xc00); - outl(static_cfg0, MEM_STCFG0); + static_cfg0 = readl(MEM_STCFG0) & (u32)(~0xc00); + writel(static_cfg0, MEM_STCFG0); // configure RCE2* for LCD - outl(0x00000004, MEM_STCFG2); + writel(0x00000004, MEM_STCFG2); // MEM_STTIME2 - outl(0x09000000, MEM_STTIME2); + writel(0x09000000, MEM_STTIME2); // Set 32-bit base address decoding for RCE2* - outl(0x10003ff0, MEM_STADDR2); + writel(0x10003ff0, MEM_STADDR2); // PCI CPLD setup // expand CE0 to cover PCI - outl(0x11803e40, MEM_STADDR1); + writel(0x11803e40, MEM_STADDR1); // burst visibility on - outl(inl(MEM_STCFG0) | 0x1000, MEM_STCFG0); + writel(readl(MEM_STCFG0) | 0x1000, MEM_STCFG0); - outl(0x83, MEM_STCFG1); // ewait enabled, flash timing - outl(0x33030a10, MEM_STTIME1); // slower timing for FPGA + writel(0x83, MEM_STCFG1); // ewait enabled, flash timing + writel(0x33030a10, MEM_STTIME1); // slower timing for FPGA #ifdef CONFIG_FB_E1356 if ((argptr = strstr(argptr, "video=")) == NULL) { @@ -258,19 +258,19 @@ #ifdef CONFIG_PCI - outl(0, PCI_BRIDGE_CONFIG); // set extend byte to 0 - outl(0, SDRAM_MBAR); // set mbar to 0 - outl(0x2, SDRAM_CMD); // enable memory accesses + 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_sync_delay(1); #endif #ifndef CONFIG_SERIAL_NONSTANDARD /* don't touch the default serial console */ - outl(0, UART0_ADDR + UART_CLK); + writel(0, UART0_ADDR + UART_CLK); #endif - outl(0, UART1_ADDR + UART_CLK); - outl(0, UART2_ADDR + UART_CLK); - outl(0, UART3_ADDR + UART_CLK); + writel(0, UART1_ADDR + UART_CLK); + writel(0, UART2_ADDR + UART_CLK); + writel(0, UART3_ADDR + UART_CLK); #ifdef CONFIG_BLK_DEV_IDE { @@ -283,14 +283,14 @@ // setup irda clocks // aux clock, divide by 2, clock from 2/4 divider writel(readl(SYS_CLKSRC) | 0x7, SYS_CLKSRC); - pin_func = inl(SYS_PINFUNC) & (u32)(~(1<<2)); // clear IRTXD - outl(pin_func, SYS_PINFUNC); + pin_func = readl(SYS_PINFUNC) & (u32)(~(1<<2)); // clear IRTXD + writel(pin_func, SYS_PINFUNC); - while (inl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); - outl(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); + while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_E0S); + writel(SYS_CNTRL_E0 | SYS_CNTRL_EN0, SYS_COUNTER_CNTRL); au_sync(); - while (inl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); - outl(0, SYS_TOYTRIM); + while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S); + writel(0, SYS_TOYTRIM); /* Enable Au1000 BCLK switching - note: sed1356 must not use * its BCLK (Au1000 LCLK) for any timings */ @@ -301,7 +301,7 @@ case 0x02: /* HB */ break; default: /* HC and newer */ - outl(0x00000060, 0xb190003c); + writel(0x00000060, 0xb190003c); break; } } |
From: Pete P. <pp...@us...> - 2002-04-16 19:32:23
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv7685/drivers/video Modified Files: au1100fb.c Log Message: Screen blank/power-on bug fix. Index: au1100fb.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- au1100fb.c 15 Apr 2002 23:30:13 -0000 1.3 +++ au1100fb.c 16 Apr 2002 17:20:27 -0000 1.4 @@ -302,18 +302,18 @@ switch (blank_mode) { case VESA_NO_BLANKING: - /* turn off panel */ - writew(readw(PB1500_G_CONTROL) & ~p_lcd->mode_backlight, - PB1500_G_CONTROL); + /* turn on panel */ p_lcd_reg->lcd_control |= LCD_CONTROL_GO; + writew(readw(PB1500_G_CONTROL) | p_lcd->mode_backlight, + PB1500_G_CONTROL); au_sync(); break; case VESA_VSYNC_SUSPEND: case VESA_HSYNC_SUSPEND: case VESA_POWERDOWN: + /* turn off panel */ p_lcd_reg->lcd_control &= ~LCD_CONTROL_GO; - /* turn on panel */ writew(readw(PB1500_G_CONTROL) & ~p_lcd->mode_backlight, PB1500_G_CONTROL); au_sync(); |
From: Pete P. <pp...@us...> - 2002-04-15 23:30:17
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv31938/drivers/video Modified Files: au1100fb.c au1100fb.h Log Message: Au1100 fb driver bug fixes. Microwindows and tinyX now work. Index: au1100fb.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- au1100fb.c 11 Apr 2002 00:12:57 -0000 1.2 +++ au1100fb.c 15 Apr 2002 23:30:13 -0000 1.3 @@ -68,6 +68,7 @@ unsigned long fb_virt_start; unsigned long fb_size; unsigned long fb_phys; + int mmaped; struct { unsigned red, green, blue, pad; } palette[256]; @@ -141,7 +142,8 @@ fix->ywrapstep = 0; fix->xpanstep = 1; fix->ypanstep = 1; - fix->line_length = par->line_length; + //fix->line_length = par->line_length; + fix->line_length = current_par.line_length; return 0; } @@ -190,11 +192,9 @@ var->yres != p_lcd->yres || var->xres != p_lcd->xres || var->yres != p_lcd->yres) { - printk("bad resolution selected\n"); return -EINVAL; } if(var->bits_per_pixel != p_lcd->bpp) { - printk("bad bpp\n"); return -EINVAL; } @@ -246,7 +246,7 @@ struct au1100fb_info* i = (struct au1100fb_info*)info; - if (regno > 256) + if (regno > 255) return 1; *red = i->palette[regno].red; @@ -262,6 +262,7 @@ struct fb_info *info) { struct au1100fb_info* i = (struct au1100fb_info *)info; + u32 rgbcol; if (regno > 255) return 1; @@ -273,18 +274,25 @@ switch(p_lcd->bpp) { #ifdef FBCON_HAS_CFB8 case 8: - /* FIXME */ - printk("cfb8??\n"); + red >>= 10; + green >>= 10; + blue >>= 10; + p_lcd_reg->lcd_pallettebase[regno] = (blue&0x1f) | + ((green&0x3f)<<5) | ((red&0x1f)<<11); break; #endif #ifdef FBCON_HAS_CFB16 case 16: - i->fbcon_cmap16[regno] = (regno << 10) | (regno << 5) | regno; + i->fbcon_cmap16[regno] = + ((red & 0xf800) >> 0) | + ((green & 0xfc00) >> 5) | + ((blue & 0xf800) >> 11); break; #endif default: break; } + return 0; } @@ -294,15 +302,21 @@ switch (blank_mode) { case VESA_NO_BLANKING: - printk("Au1100fb: assert go\n"); + /* turn off panel */ + writew(readw(PB1500_G_CONTROL) & ~p_lcd->mode_backlight, + PB1500_G_CONTROL); p_lcd_reg->lcd_control |= LCD_CONTROL_GO; + au_sync(); break; case VESA_VSYNC_SUSPEND: case VESA_HSYNC_SUSPEND: case VESA_POWERDOWN: - printk("Au1100fb: deassert go\n"); p_lcd_reg->lcd_control &= ~LCD_CONTROL_GO; + /* turn on panel */ + writew(readw(PB1500_G_CONTROL) & ~p_lcd->mode_backlight, + PB1500_G_CONTROL); + au_sync(); break; default: printk("Au1100fb: unknown blank mode %d\n", @@ -338,12 +352,13 @@ } static int -au1100fb_mmap(struct fb_info *fb, +au1100fb_mmap(struct fb_info *_fb, struct file *file, struct vm_area_struct *vma) { unsigned int len; unsigned long start=0, off; + struct au1100fb_info *fb = (struct au1100fb_info *)_fb; if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) { return -EINVAL; @@ -362,16 +377,18 @@ vma->vm_pgoff = off >> PAGE_SHIFT; pgprot_val(vma->vm_page_prot) &= ~_CACHE_MASK; - pgprot_val(vma->vm_page_prot) |= _CACHE_UNCACHED; + pgprot_val(vma->vm_page_prot) |= _CACHE_CACHABLE_NONCOHERENT; /* This is an IO map - tell maydump to skip this VMA */ vma->vm_flags |= VM_IO; if (io_remap_page_range(vma->vm_start, off, vma->vm_end - vma->vm_start, - vma->vm_page_prot)) + vma->vm_page_prot)) { return -EAGAIN; + } + fb->mmaped = 1; return 0; } Index: au1100fb.h =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- au1100fb.h 15 Apr 2002 15:33:04 -0000 1.2 +++ au1100fb.h 15 Apr 2002 23:30:13 -0000 1.3 @@ -189,7 +189,7 @@ { /* 0: Pb1100 LCDA: Sharp 320x240 TFT panel */ 320, /* xres */ 240, /* yres */ - 8, /* bpp */ + 16, /* bpp */ "Sharp_320x240_16", /* mode_control */ @@ -205,7 +205,7 @@ /*LCD_CONTROL_MPI*/ | LCD_CONTROL_PT | LCD_CONTROL_PC - | LCD_CONTROL_BPP_8 ), + | LCD_CONTROL_BPP_16 ), /* mode_horztiming */ ( LCD_HORZTIMING_HN2_N(8) |
From: Pete P. <pp...@us...> - 2002-04-15 17:36:48
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv32218/drivers/video Modified Files: au1100fb.h Log Message: Clean up. Index: au1100fb.h =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/au1100fb.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- au1100fb.h 10 Apr 2002 01:10:12 -0000 1.1 +++ au1100fb.h 15 Apr 2002 15:33:04 -0000 1.2 @@ -161,21 +161,6 @@ /********************************************************************/ - -enum EGPEFormat -{ - gpe1Bpp, - gpe2Bpp, - gpe4Bpp, - gpe8Bpp, - gpe16Bpp, - gpe24Bpp, - gpe32Bpp, - gpe16YCrCb, - gpeDeviceCompatible, - gpeUndefined -}; - struct known_lcd_panels { uint32 xres; @@ -204,7 +189,7 @@ { /* 0: Pb1100 LCDA: Sharp 320x240 TFT panel */ 320, /* xres */ 240, /* yres */ - 16, /* bpp */ + 8, /* bpp */ "Sharp_320x240_16", /* mode_control */ @@ -220,7 +205,7 @@ /*LCD_CONTROL_MPI*/ | LCD_CONTROL_PT | LCD_CONTROL_PC - | LCD_CONTROL_BPP_16 ), + | LCD_CONTROL_BPP_8 ), /* mode_horztiming */ ( LCD_HORZTIMING_HN2_N(8) |
From: Pete P. <pp...@us...> - 2002-04-12 22:58:31
|
Update of /cvsroot/linux-mips/linux/drivers/video In directory usw-pr-cvs1:/tmp/cvs-serv29502/drivers/video Modified Files: epson1356fb.c Log Message: Current linux generic remap_page_range does not support higher than 32 bit physical addresses on a 32 bit kernel. In order to use the epson driver with a 36 bit MIPS32 chip select, I had to copy a few of the remap_page_range routines and modify them accorindly, in my local copy. This was tested on the Alchemy MIPS32 part which supports 36 bit phys addr. Index: epson1356fb.c =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/video/epson1356fb.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- epson1356fb.c 7 Mar 2002 23:30:22 -0000 1.8 +++ epson1356fb.c 12 Apr 2002 22:58:28 -0000 1.9 @@ -42,7 +42,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> @@ -57,6 +57,11 @@ #include <asm/io.h> #include <asm/uaccess.h> #include <linux/timer.h> +#include <linux/pagemap.h> + +#include <asm/pgalloc.h> +#include <asm/uaccess.h> +#include <asm/tlb.h> #ifdef CONFIG_MTRR #include <asm/mtrr.h> @@ -210,6 +215,8 @@ static struct e1356fb_fix boot_fix; // boot options static struct e1356fb_par boot_par; // boot options +static int e1356_remap_page_range(unsigned long from, phys_t phys_addr, unsigned long size, pgprot_t prot); + /* ------------------------------------------------------------------------- * Hardware-specific funcions @@ -2071,7 +2078,11 @@ { struct fb_info_e1356 *info = (struct fb_info_e1356*)fb; unsigned int len; +#if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32) + u64 start=0, off; +#else unsigned long start=0, off; +#endif if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) { DPRINTK("invalid vma->vm_pgoff\n"); @@ -2152,10 +2163,17 @@ if (info->fix.mmunalign) vma->vm_start += 2; +#if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32) + if (e1356_remap_page_range(vma->vm_start, off, + vma->vm_end - vma->vm_start, + vma->vm_page_prot)) + return -EAGAIN; +#else if (io_remap_page_range(vma->vm_start, off, vma->vm_end - vma->vm_start, vma->vm_page_prot)) return -EAGAIN; +#endif info->mmaped = 1; return 0; @@ -3042,3 +3060,99 @@ printk("e1356fb: reserving 1024 bytes for the hwcursor at %p\n", fb_info.membase_virt + fb_info.fb_size); } + +#if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32) + +/* + * Return indicates whether a page was freed so caller can adjust rss + */ +static inline void forget_pte(pte_t page) +{ + if (!pte_none(page)) { + printk("forget_pte: old mapping existed!\n"); + BUG(); + } +} + +/* + * maps a range of physical memory into the requested pages. the old + * mappings are removed. any references to nonexistent pages results + * in null mappings (currently treated as "copy-on-access") + */ +static inline void e1356_remap_pte_range(pte_t * pte, unsigned long address, unsigned long size, + phys_t phys_addr, pgprot_t prot) +{ + unsigned long end; + + address &= ~PMD_MASK; + end = address + size; + if (end > PMD_SIZE) + end = PMD_SIZE; + do { + struct page *page; + pte_t oldpage; + oldpage = ptep_get_and_clear(pte); + + page = virt_to_page(__va(phys_addr)); + if ((!VALID_PAGE(page)) || PageReserved(page)) + set_pte(pte, mk_pte_phys(phys_addr, prot)); + forget_pte(oldpage); + address += PAGE_SIZE; + phys_addr += PAGE_SIZE; + pte++; + } while (address && (address < end)); +} + +static inline int e1356_remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned long address, unsigned long size, + phys_t phys_addr, pgprot_t prot) +{ + unsigned long end; + + address &= ~PGDIR_MASK; + end = address + size; + if (end > PGDIR_SIZE) + end = PGDIR_SIZE; + phys_addr -= address; + do { + pte_t * pte = pte_alloc(mm, pmd, address); + if (!pte) + return -ENOMEM; + e1356_remap_pte_range(pte, address, end - address, address + phys_addr, prot); + address = (address + PMD_SIZE) & PMD_MASK; + pmd++; + } while (address && (address < end)); + return 0; +} + +/* Note: this is only safe if the mm semaphore is held when called. */ +static int e1356_remap_page_range(unsigned long from, phys_t phys_addr, unsigned long size, pgprot_t prot) +{ + int error = 0; + pgd_t * dir; + phys_t beg = from; + phys_t end = from + size; + struct mm_struct *mm = current->mm; + + phys_addr -= from; + dir = pgd_offset(mm, from); + flush_cache_range(mm, beg, end); + if (from >= end) + BUG(); + + spin_lock(&mm->page_table_lock); + do { + pmd_t *pmd = pmd_alloc(mm, dir, from); + error = -ENOMEM; + if (!pmd) + break; + error = e1356_remap_pmd_range(mm, pmd, from, end - from, phys_addr + from, prot); + if (error) + break; + from = (from + PGDIR_SIZE) & PGDIR_MASK; + dir++; + } while (from && (from < end)); + spin_unlock(&mm->page_table_lock); + flush_tlb_range(mm, beg, end); + return error; +} +#endif |