This list is closed, nobody may subscribe to it.
2004 |
Jan
(53) |
Feb
(78) |
Mar
(34) |
Apr
(26) |
May
(25) |
Jun
(34) |
Jul
(16) |
Aug
(16) |
Sep
(2) |
Oct
(58) |
Nov
(13) |
Dec
(32) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(62) |
Feb
(4) |
Mar
(40) |
Apr
(9) |
May
(13) |
Jun
(26) |
Jul
(32) |
Aug
(24) |
Sep
(18) |
Oct
(18) |
Nov
(14) |
Dec
|
2006 |
Jan
(15) |
Feb
(2) |
Mar
(23) |
Apr
(2) |
May
(2) |
Jun
(13) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2007 |
Jan
(1) |
Feb
(45) |
Mar
|
Apr
(13) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(31) |
Dec
(5) |
2008 |
Jan
(6) |
Feb
(34) |
Mar
(113) |
Apr
(40) |
May
(19) |
Jun
(5) |
Jul
(41) |
Aug
(13) |
Sep
(53) |
Oct
(4) |
Nov
(53) |
Dec
|
2009 |
Jan
(1) |
Feb
(29) |
Mar
(66) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(163) |
Nov
|
Dec
(91) |
From: Albert H. <he...@us...> - 2009-12-09 18:18:17
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/include/asm In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/arch/powerpc/include/asm Modified Files: dma-mapping.h udbg.h Log Message: Rewind to v2.6.31. Index: dma-mapping.h =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/include/asm/dma-mapping.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** dma-mapping.h 25 Oct 2009 18:59:27 -0000 1.5 --- dma-mapping.h 9 Dec 2009 18:18:06 -0000 1.6 *************** *** 17,21 **** #include <asm/io.h> #include <asm/swiotlb.h> - #include <asm-generic/dma-coherent.h> #define DMA_ERROR_CODE (~(dma_addr_t)0x0) --- 17,20 ---- Index: udbg.h =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/include/asm/udbg.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** udbg.h 25 Oct 2009 18:59:27 -0000 1.7 --- udbg.h 9 Dec 2009 18:18:06 -0000 1.8 *************** *** 52,56 **** extern void __init udbg_init_40x_realmode(void); extern void __init udbg_init_cpm(void); - extern void __init udbg_init_usbgecko(void); #endif /* __KERNEL__ */ --- 52,55 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:17
|
Update of /cvsroot/gc-linux/linux/drivers/gpio In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/gpio Modified Files: gpiolib.c Log Message: Rewind to v2.6.31. Index: gpiolib.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/gpio/gpiolib.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** gpiolib.c 25 Oct 2009 18:59:28 -0000 1.7 --- gpiolib.c 9 Dec 2009 18:18:06 -0000 1.8 *************** *** 1006,1027 **** EXPORT_SYMBOL_GPL(gpio_direction_output); - /** - * gpio_direction_is_output - tell if a gpio is configured as an output - * @gpio: gpio in question - * - * Returns a negative errno if the given gpio is not valid. - * Returns a positive non-zero if the gpio is configured as an output. - * Returns zero otherwise. - */ - int gpio_direction_is_output(unsigned gpio) - { - struct gpio_desc *desc = &gpio_desc[gpio]; - - if (!gpio_is_valid(gpio)) - return -EINVAL; - - return test_bit(FLAG_IS_OUT, &desc->flags); - } - EXPORT_SYMBOL_GPL(gpio_direction_is_output); /* I/O calls are only valid after configuration completed; the relevant --- 1006,1009 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:17
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/kernel In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/arch/powerpc/kernel Modified Files: cputable.c dma.c head_32.S udbg.c Log Message: Rewind to v2.6.31. Index: udbg.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/udbg.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** udbg.c 25 Oct 2009 18:59:27 -0000 1.9 --- udbg.c 9 Dec 2009 18:18:06 -0000 1.10 *************** *** 61,66 **** #elif defined(CONFIG_PPC_EARLY_DEBUG_CPM) udbg_init_cpm(); - #elif defined(CONFIG_PPC_EARLY_DEBUG_USBGECKO) - udbg_init_usbgecko(); #endif --- 61,64 ---- Index: dma.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/dma.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** dma.c 25 Oct 2009 18:59:27 -0000 1.5 --- dma.c 9 Dec 2009 18:18:06 -0000 1.6 *************** *** 34,40 **** void *ret; #ifdef CONFIG_NOT_COHERENT_CACHE - if (dma_alloc_from_coherent(dev, size, dma_handle, &ret)) - return ret; - ret = __dma_alloc_coherent(dev, size, dma_handle, flag); if (ret == NULL) --- 34,37 ---- *************** *** 64,69 **** { #ifdef CONFIG_NOT_COHERENT_CACHE - if (dma_release_from_coherent(dev, get_order(size), vaddr)) - return; __dma_free_coherent(size, vaddr); #else --- 61,64 ---- Index: head_32.S =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/head_32.S,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** head_32.S 25 Oct 2009 18:59:27 -0000 1.14 --- head_32.S 9 Dec 2009 18:18:06 -0000 1.15 *************** *** 165,171 **** bl setup_cpm_bat #endif - #ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO - bl setup_usbgecko_bat - #endif /* --- 165,168 ---- *************** *** 1207,1228 **** #endif - #ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO - setup_usbgecko_bat: - /* prepare a BAT for early io */ - lis r8, 0x0c00 - ori r8, r8, 0x002a /* uncached, guarded ,rw */ - lis r11, 0xcc00 - ori r11, r11, 0x3 /* 128K */ - #ifdef CONFIG_WII - oris r8, r8, 0x0100 - oris r11, r11, 0x0100 - #endif - mtspr SPRN_DBAT1L, r8 - mtspr SPRN_DBAT1U, r11 - sync - isync - blr - #endif - #ifdef CONFIG_8260 /* Jump into the system reset for the rom. --- 1204,1207 ---- Index: cputable.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/cputable.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** cputable.c 25 Oct 2009 18:59:27 -0000 1.13 --- cputable.c 9 Dec 2009 18:18:06 -0000 1.14 *************** *** 693,701 **** .platform = "ppc750", }, ! { /* 745/755 */ ! .pvr_mask = 0xfffff000, ! .pvr_value = 0x00083000, ! .cpu_name = "745/755", ! .cpu_features = CPU_FTRS_750, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, --- 693,701 ---- .platform = "ppc750", }, ! { /* 750CL */ ! .pvr_mask = 0xfffff0f0, ! .pvr_value = 0x00087010, ! .cpu_name = "750CL", ! .cpu_features = CPU_FTRS_750CL, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, *************** *** 708,718 **** .platform = "ppc750", }, ! { /* 750CL (and "Broadway") */ ! .pvr_mask = 0xfffff0e0, ! .pvr_value = 0x00087000, ! .cpu_name = "750CL", ! .cpu_features = CPU_FTRS_750CL, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, ! .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, .icache_bsize = 32, .dcache_bsize = 32, --- 708,718 ---- .platform = "ppc750", }, ! { /* 745/755 */ ! .pvr_mask = 0xfffff000, ! .pvr_value = 0x00083000, ! .cpu_name = "745/755", ! .cpu_features = CPU_FTRS_750, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, ! .mmu_features = MMU_FTR_HPTE_TABLE, .icache_bsize = 32, .dcache_bsize = 32, |
From: Albert H. <he...@us...> - 2009-12-09 18:18:17
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/boot In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/arch/powerpc/boot Modified Files: Makefile wrapper Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/boot/Makefile,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Makefile 25 Oct 2009 18:59:27 -0000 1.13 --- Makefile 9 Dec 2009 18:18:06 -0000 1.14 *************** *** 66,70 **** 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ ! fsl-soc.c mpc8xx.c pq2.c ugecon.c src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c \ cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ --- 66,70 ---- 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ ! fsl-soc.c mpc8xx.c pq2.c src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c \ cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ *************** *** 76,80 **** cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ ! cuboot-acadia.c cuboot-amigaone.c gamecube.c wii.c src-boot := $(src-wlib) $(src-plat) empty.c --- 76,80 ---- cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ ! cuboot-acadia.c cuboot-amigaone.c src-boot := $(src-wlib) $(src-plat) empty.c *************** *** 253,258 **** image-$(CONFIG_MPC7448HPC2) += cuImage.mpc7448hpc2 image-$(CONFIG_PPC_C2K) += cuImage.c2k - image-$(CONFIG_GAMECUBE) += dtbImage.gamecube - image-$(CONFIG_WII) += dtbImage.wii # Board port in arch/powerpc/platform/amigaone/Kconfig --- 253,256 ---- Index: wrapper =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/boot/wrapper,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** wrapper 25 Oct 2009 18:59:27 -0000 1.5 --- wrapper 9 Dec 2009 18:18:06 -0000 1.6 *************** *** 230,236 **** platformo=$object/cuboot-85xx.o ;; - wii|gamecube) - link_address='0x500000' - ;; esac --- 230,233 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:17
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/mm In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/arch/powerpc/mm Modified Files: pgtable_32.c Log Message: Rewind to v2.6.31. Index: pgtable_32.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/mm/pgtable_32.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** pgtable_32.c 25 Oct 2009 18:59:27 -0000 1.8 --- pgtable_32.c 9 Dec 2009 18:18:06 -0000 1.9 *************** *** 193,209 **** */ if (mem_init_done && (p < virt_to_phys(high_memory))) { ! /* ! * On some systems, though, we may want to remap normal RAM ! * that we have memreserve'd at the device tree. ! * But we can't do that safely if we are using BATs. ! * ! */ ! if (!__map_without_bats) { ! printk(KERN_WARNING ! "__ioremap(): phys addr 0x%llx is RAM lr %p\n", ! (unsigned long long)p, ! __builtin_return_address(0)); ! return NULL; ! } } #endif --- 193,199 ---- */ if (mem_init_done && (p < virt_to_phys(high_memory))) { ! printk("__ioremap(): phys addr 0x%llx is RAM lr %p\n", ! (unsigned long long)p, __builtin_return_address(0)); ! return NULL; } #endif |
From: Albert H. <he...@us...> - 2009-12-09 18:18:17
|
Update of /cvsroot/gc-linux/linux/drivers/input In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/input Modified Files: Kconfig Log Message: Rewind to v2.6.31. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/Kconfig,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Kconfig 25 Oct 2009 18:59:28 -0000 1.16 --- Kconfig 9 Dec 2009 18:18:07 -0000 1.17 *************** *** 181,186 **** source "drivers/input/gameport/Kconfig" - source "drivers/input/si/Kconfig" - endmenu --- 181,184 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:17
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/arch/powerpc/platforms/embedded6xx Modified Files: Kconfig Makefile Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/Makefile,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Makefile 25 Oct 2009 18:59:27 -0000 1.12 --- Makefile 9 Dec 2009 18:18:06 -0000 1.13 *************** *** 8,20 **** obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o obj-$(CONFIG_PPC_C2K) += c2k.o - obj-$(CONFIG_GAMECUBE) += gamecube.o gamecube_dev.o - obj-$(CONFIG_WII) += wii.o wii_dev.o - obj-$(CONFIG_WII_GPIO) += starlet-gpio.o - obj-$(CONFIG_STARLET_MINI) += starlet-mipc.o - obj-$(CONFIG_STARLET_IOS) += starlet-ipc.o starlet-malloc.o \ - starlet-stm.o starlet-es.o - obj-$(CONFIG_FLIPPER_PIC) += flipper-pic.o - obj-$(CONFIG_HOLLYWOOD_PIC) += hollywood-pic.o - obj-$(CONFIG_USBGECKO_UDBG) += usbgecko_udbg.o - obj-$(CONFIG_GAMECUBE_VIDEO_UDBG) += gcnvi_udbg.o - obj-$(CONFIG_GAMECUBE_RSW) += gcn-rsw.o --- 8,9 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/Kconfig,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Kconfig 25 Oct 2009 18:59:27 -0000 1.12 --- Kconfig 9 Dec 2009 18:18:06 -0000 1.13 *************** *** 91,198 **** bool "Enable MPC10x store gathering" depends on MPC10X_BRIDGE - - config GAMECUBE - bool "Nintendo-GameCube" - depends on EMBEDDED6xx - select GAMECUBE_COMMON - help - Select GAMECUBE if configuring for the Nintendo GameCube. - More information at: <http://gc-linux.sourceforge.net/> - - config WII - bool "Nintendo-Wii" - depends on EMBEDDED6xx - select GAMECUBE_COMMON - select PPC_LIB_RHEAP if STARLET_IOS - select USB_ARCH_HAS_EHCI if STARLET_MINI - select USB_ARCH_HAS_OHCI if STARLET_MINI - select HAVE_GENERIC_DMA_COHERENT - help - Select WII if configuring for the Nintendo Wii. - More information at: <http://gc-linux.sourceforge.net/> - - config STARLET_IOS - bool "Nintendo Wii Starlet IOS support" - depends on WII - default y - - config STARLET_MINI - bool "Team Twiizers 'mini' firmware support" - depends on WII && EXPERIMENTAL - default y - - config FLIPPER_PIC - bool - depends on GAMECUBE_COMMON - default y - - config HOLLYWOOD_PIC - bool - depends on STARLET_MINI - default y - - config GAMECUBE_COMMON - bool - select NOT_COHERENT_CACHE - select FLIPPER_PIC - default n - - config GAMECUBE_UDBG - bool "Nintendo GameCube/Wii udbg support" - depends on GAMECUBE_COMMON - default n - help - If you say yes to this option, you will be able to choose between - several udbg drivers available for the Nintendo GameCube/Wii. - - If in doubt, say N here. - - choice - prompt "Nintendo GameCube/Wii udbg drivers" - depends on GAMECUBE_UDBG - - config USBGECKO_UDBG - bool "USB Gecko udbg console for the Nintendo GameCube/Wii" - help - If you say yes to this option, support will be included for the - USB Gecko adapter as an udbg console. - The USB Gecko is a EXI to USB Serial converter that can be plugged - into a memcard slot in the Nintendo GameCube/Wii. - - This driver bypasses the EXI layer completely. - - If in doubt, say N here. - - config GAMECUBE_VIDEO_UDBG - bool "Nintendo GameCube/Wii framebuffer udbg console" - select FONTS - select FONT_8x16 - help - If you say yes to this option, support will be included for a - framebuffer based udbg console for the Nintendo GameCube/Wii. - - If in doubt, say N here. - - endchoice - - config GAMECUBE_RSW - bool "Nintendo GameCube/Wii reset switch/button" - depends on GAMECUBE_COMMON - default y - help - If you say yes to this option, support will be included for the - reset switch/button of the Nintendo GameCube/Wii. - - If in doubt, say Y here. - - config WII_GPIO - bool "Nintendo Wii GPIO support" - depends on GPIOLIB - default y - help - If you say yes to this option, support will be included for the - Nintendo Wii GPIO lines that control, for example, the sensor - bar IR leds, the front led, or the eject switch of the disk unit. - - If in doubt, say Y here. - --- 91,92 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/drivers/usb/host In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/usb/host Modified Files: Kconfig Makefile ehci-hcd.c ehci.h ohci-hcd.c ohci-q.c ohci.h Log Message: Rewind to v2.6.31. Index: ohci-q.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci-q.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ohci-q.c 25 Oct 2009 18:59:28 -0000 1.4 --- ohci-q.c 9 Dec 2009 18:18:07 -0000 1.5 *************** *** 616,622 **** /* FALLTHROUGH */ case PIPE_BULK: - if (ohci->flags & OHCI_QUIRK_WII) - ohci_mipc_bulk_quirk(ohci); - info = is_out ? TD_T_TOGGLE | TD_CC | TD_DP_OUT --- 616,619 ---- *************** *** 650,656 **** */ case PIPE_CONTROL: - if (ohci->flags & OHCI_QUIRK_WII) - ohci_mipc_control_quirk(ohci); - info = TD_CC | TD_DP_SETUP | TD_T_DATA0; td_fill (ohci, info, urb->setup_dma, 8, urb, cnt++); --- 647,650 ---- Index: ehci.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ehci.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ehci.h 25 Oct 2009 18:59:28 -0000 1.5 --- ehci.h 9 Dec 2009 18:18:07 -0000 1.6 *************** *** 38,62 **** #endif - /* - * Some platforms have weird constraints when accessing memory. - * - * For example, the Nintendo Wii video game console is unable to perform - * non-32 bit writes to non-cached memory for its second block of 64MB of RAM. - * As this platform also requires CONFIG_NOT_COHERENT, all memory allocated - * using the dma memory allocation functions can only be written using - * 32-bit accesses. - * - * Because of this constraint, as a workaround, we make sure that all - * fields in struct ehci_qh (which is allocated from a dma pool) are - * always 32 bit fields. - * Note that the remaining structs allocated from dma-able memory are already - * 32 bit fields. - */ - #ifdef CONFIG_USB_EHCI_HCD_MIPC - #define ehci_fld(type) u32 - #else - #define ehci_fld(type) type - #endif - /* statistics can be kept for for tuning/monitoring */ struct ehci_stats { --- 38,41 ---- *************** *** 358,362 **** unsigned stamp; ! ehci_fld(u8) qh_state; #define QH_STATE_LINKED 1 /* HC sees this */ #define QH_STATE_UNLINK 2 /* HC may still see this */ --- 337,341 ---- unsigned stamp; ! u8 qh_state; #define QH_STATE_LINKED 1 /* HC sees this */ #define QH_STATE_UNLINK 2 /* HC may still see this */ *************** *** 365,378 **** #define QH_STATE_COMPLETING 5 /* don't touch token.HALT */ ! ehci_fld(u8) xacterrs; /* XactErr retry counter */ #define QH_XACTERR_MAX 32 /* XactErr retry limit */ /* periodic schedule info */ ! ehci_fld(u8) usecs; /* intr bandwidth */ ! ehci_fld(u8) gap_uf; /* uframes split/csplit gap */ ! ehci_fld(u8) c_usecs; /* ... split completion bw */ ! ehci_fld(u16) tt_usecs; /* tt downstream bandwidth */ ! ehci_fld(unsigned short) period; /* polling interval */ ! ehci_fld(unsigned short) start; /* where polling starts */ #define NO_FRAME ((unsigned short)~0) /* pick new start */ --- 344,357 ---- #define QH_STATE_COMPLETING 5 /* don't touch token.HALT */ ! u8 xacterrs; /* XactErr retry counter */ #define QH_XACTERR_MAX 32 /* XactErr retry limit */ /* periodic schedule info */ ! u8 usecs; /* intr bandwidth */ ! u8 gap_uf; /* uframes split/csplit gap */ ! u8 c_usecs; /* ... split completion bw */ ! u16 tt_usecs; /* tt downstream bandwidth */ ! unsigned short period; /* polling interval */ ! unsigned short start; /* where polling starts */ #define NO_FRAME ((unsigned short)~0) /* pick new start */ *************** *** 613,634 **** #endif - #ifdef CONFIG_USB_EHCI_HCD_MIPC - - #include <asm/starlet-mini.h> - - static inline unsigned int ehci_readl(const struct ehci_hcd *ehci, - __u32 __iomem *regs) - { - return mipc_in_be32(regs); - } - - static inline void ehci_writel(const struct ehci_hcd *ehci, - const unsigned int val, __u32 __iomem *regs) - { - mipc_out_be32(regs, val); - } - - #else - /* * Big-endian read/write functions are arch-specific. --- 592,595 ---- *************** *** 664,669 **** } - #endif /* CONFIG_USB_EHCI_HCD_MIPC */ - /* * On certain ppc-44x SoC there is a HW issue, that could only worked around with --- 625,628 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/Kconfig,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Kconfig 25 Oct 2009 18:59:28 -0000 1.12 --- Kconfig 9 Dec 2009 18:18:07 -0000 1.13 *************** *** 114,125 **** OpenFirmware platform bus. - config USB_EHCI_HCD_MIPC - bool "Nintendo Wii EHCI USB controller support via 'mini'" - depends on USB_EHCI_HCD && STARLET_MINI - default y - ---help--- - Say Y here to support the EHCI USB controller found in the - Nintendo Wii video game console. - config USB_OXU210HP_HCD tristate "OXU210HP HCD support" --- 114,117 ---- *************** *** 212,224 **** default USB_OHCI_HCD_PPC_OF_BE || USB_OHCI_HCD_PPC_OF_LE - config USB_OHCI_HCD_MIPC - bool "Nintendo Wii OHCI USB controller support via 'mini'" - depends on USB_OHCI_HCD && STARLET_MINI - select USB_OHCI_LITTLE_ENDIAN - default y - ---help--- - Say Y here to support the OHCI USB controller found in the - Nintendo Wii video game console. - config USB_OHCI_HCD_PCI bool "OHCI support for PCI-bus USB controllers" --- 204,207 ---- *************** *** 361,383 **** SH7366, SH7723 and SH7724 processors. - config USB_WII_HCD - tristate "Nintendo Wii HCD support" - depends on USB && STARLET_IOS && !HIGHMEM && EXPERIMENTAL - help - The Nintendo Wii includes a USB 1.1 host controller that can be - accessed through the API provided by the starlet subsystem. - - Enable this option if you plan to use the internal Nintendo Wii - bluetooth dongle or any USB peripheral connected to the external - ports. - - USB devices using isochronous transfers are not supported. - Use of USB hubs is partially supported. - - Use completely at you own risk. If unsure, say N. - - To compile this driver as a module, choose M here: the - module will be called rvl-sthcd. - config USB_WHCI_HCD tristate "Wireless USB Host Controller Interface (WHCI) driver (EXPERIMENTAL)" --- 344,347 ---- Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/Makefile,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Makefile 25 Oct 2009 18:59:28 -0000 1.9 --- Makefile 9 Dec 2009 18:18:07 -0000 1.10 *************** *** 31,34 **** obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o obj-$(CONFIG_USB_ISP1760_HCD) += isp1760.o - obj-$(CONFIG_USB_WII_HCD) += rvl-sthcd.o obj-$(CONFIG_USB_HWA_HCD) += hwa-hc.o --- 31,33 ---- Index: ohci.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ohci.h 25 Oct 2009 18:59:28 -0000 1.4 --- ohci.h 9 Dec 2009 18:18:07 -0000 1.5 *************** *** 17,42 **** /* - * Some platforms have weird constraints when accessing memory. - * - * For example, the Nintendo Wii video game console is unable to perform - * non-32 bit writes to non-cached memory for its second block of 64MB of RAM. - * As this platform also requires CONFIG_NOT_COHERENT_CACHE, all memory - * allocated using the dma memory allocation functions can only be written - * using 32-bit accesses. - * - * Because of this constraint, as a workaround, we make sure that all - * fields in struct ed and td (which are allocated from dma pools) are - * always 32 bit fields. - * Note that the remaining structs allocated from dma-able memory are already - * 32 bit fields. - */ - #ifdef CONFIG_USB_OHCI_HCD_MIPC - #define ohci_fld(type) u32 - #else - #define ohci_fld(type) type - #endif - - - /* * OHCI Endpoint Descriptor (ED) ... holds TD queue * See OHCI spec, section 4.2 --- 17,20 ---- *************** *** 74,92 **** * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... */ ! ohci_fld(u8) state; /* ED_{IDLE,UNLINK,OPER} */ #define ED_IDLE 0x00 /* NOT linked to HC */ #define ED_UNLINK 0x01 /* being unlinked from hc */ #define ED_OPER 0x02 /* IS linked to hc */ ! ohci_fld(u8) type; /* PIPE_{BULK,...} */ /* periodic scheduling params (for intr and iso) */ ! ohci_fld(u8) branch; ! ohci_fld(u16) interval; ! ohci_fld(u16) load; ! ohci_fld(u16) last_iso; /* iso only */ /* HC may see EDs on rm_list until next frame (frame_no == tick) */ ! ohci_fld(u16) tick; } __attribute__ ((aligned(16))); --- 52,70 ---- * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... */ ! u8 state; /* ED_{IDLE,UNLINK,OPER} */ #define ED_IDLE 0x00 /* NOT linked to HC */ #define ED_UNLINK 0x01 /* being unlinked from hc */ #define ED_OPER 0x02 /* IS linked to hc */ ! u8 type; /* PIPE_{BULK,...} */ /* periodic scheduling params (for intr and iso) */ ! u8 branch; ! u16 interval; ! u16 load; ! u16 last_iso; /* iso only */ /* HC may see EDs on rm_list until next frame (frame_no == tick) */ ! u16 tick; } __attribute__ ((aligned(16))); *************** *** 141,145 **** /* rest are purely for the driver's use */ ! ohci_fld(__u8) index; struct ed *ed; struct td *td_hash; /* dma-->td hashtable */ --- 119,123 ---- /* rest are purely for the driver's use */ ! __u8 index; struct ed *ed; struct td *td_hash; /* dma-->td hashtable */ *************** *** 425,429 **** #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ #define OHCI_QUIRK_AMD_ISO 0x200 /* ISO transfers*/ - #define OHCI_QUIRK_WII 0x400 /* Hollywood chipset */ // there are also chip quirks/bugs in init logic --- 403,406 ---- *************** *** 560,594 **** #endif - #ifdef CONFIG_USB_OHCI_HCD_MIPC - - #include <asm/starlet-mini.h> - - static inline unsigned int _ohci_readl(const struct ohci_hcd *ohci, - __hc32 __iomem *regs) - { - return mipc_in_be32(regs); - } - - static inline void _ohci_writel(const struct ohci_hcd *ohci, - const unsigned int val, __hc32 __iomem *regs) - { - mipc_out_be32(regs, val); - } - - extern void ohci_mipc_control_quirk(struct ohci_hcd *ohci); - extern void ohci_mipc_bulk_quirk(struct ohci_hcd *ohci); - - #else - - static inline void ohci_mipc_control_quirk(struct ohci_hcd *ohci) - { - return; - } - - static inline void ohci_mipc_bulk_quirk(struct ohci_hcd *ohci) - { - return; - } - /* * Big-endian read/write functions are arch-specific. --- 537,540 ---- *************** *** 620,625 **** } - #endif /* CONFIG_USB_OHCI_HCD_MIPC */ - #ifdef CONFIG_ARCH_LH7A404 /* Marc Singer: at the time this code was written, the LH7A404 --- 566,569 ---- Index: ohci-hcd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci-hcd.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ohci-hcd.c 25 Oct 2009 18:59:28 -0000 1.5 --- ohci-hcd.c 9 Dec 2009 18:18:07 -0000 1.6 *************** *** 1062,1070 **** #endif - #ifdef CONFIG_USB_OHCI_HCD_MIPC - #include "ohci-mipc.c" - #define OF_PLATFORM_DRIVER ohci_hcd_mipc_driver - #endif - #ifdef CONFIG_PPC_PS3 #include "ohci-ps3.c" --- 1062,1065 ---- Index: ehci-hcd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ehci-hcd.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ehci-hcd.c 25 Oct 2009 18:59:28 -0000 1.5 --- ehci-hcd.c 9 Dec 2009 18:18:07 -0000 1.6 *************** *** 1108,1116 **** #endif - #ifdef CONFIG_USB_EHCI_HCD_MIPC - #include "ehci-mipc.c" - #define OF_PLATFORM_DRIVER ehci_hcd_mipc_driver - #endif - #ifdef CONFIG_PLAT_ORION #include "ehci-orion.c" --- 1108,1111 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/drivers/net In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/net Modified Files: Kconfig Makefile Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/Makefile,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** Makefile 25 Oct 2009 18:59:28 -0000 1.38 --- Makefile 9 Dec 2009 18:18:07 -0000 1.39 *************** *** 242,246 **** obj-$(CONFIG_ENC28J60) += enc28j60.o obj-$(CONFIG_ETHOC) += ethoc.o - obj-$(CONFIG_GAMECUBE_BBA) += gcn-bba.o obj-$(CONFIG_XTENSA_XT2000_SONIC) += xtsonic.o --- 242,245 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/Kconfig,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** Kconfig 25 Oct 2009 18:59:28 -0000 1.44 --- Kconfig 9 Dec 2009 18:18:07 -0000 1.45 *************** *** 271,283 **** will be called bmac. - config GAMECUBE_BBA - tristate "Nintendo GameCube ethernet BroadBand Adapter (BBA)" - depends on GAMECUBE_EXI && GAMECUBE - help - Say Y here to add ethernet support for the Broadband Adapter (BBA). - - To compile this driver as a module, choose M here: the module - will be called gcn-bba. - config ARIADNE tristate "Ariadne support" --- 271,274 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/block Modified Files: Kconfig Makefile Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Makefile,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** Makefile 25 Oct 2009 18:59:27 -0000 1.30 --- Makefile 9 Dec 2009 18:18:06 -0000 1.31 *************** *** 14,22 **** obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o - obj-$(CONFIG_GAMECUBE_SD) += gcn-sd.o - obj-$(CONFIG_GAMECUBE_ARAM) += gcn-aram.o - obj-$(CONFIG_GAMECUBE_DI) += gcn-di/ - obj-$(CONFIG_WII_MEM2) += rvl-mem2.o - obj-$(CONFIG_WII_SD) += rvl-stsd.o obj-$(CONFIG_BLK_DEV_RAM) += brd.o obj-$(CONFIG_BLK_DEV_LOOP) += loop.o --- 14,17 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Kconfig,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** Kconfig 25 Oct 2009 18:59:27 -0000 1.42 --- Kconfig 9 Dec 2009 18:18:06 -0000 1.43 *************** *** 64,132 **** module will be called z2ram. - config GAMECUBE_SD - tristate "Nintendo GameCube/Wii MMC/SD card" - depends on GAMECUBE_EXI - help - This enables support for using SD and MMC cards through - the Nintendo SD Card Adapter (DOL-019) or compatible hardware. - - You probably want to compile FAT support, and the required - codepages, or mount will complain. See Filesystems -> DOS/FAT/NT - filesystems and Filesystems -> Native Language Support - - Say Y if you want to include this driver in the kernel. - - To compile this driver as a module, choose M here: the - module will be called gcn-sd. - - config GAMECUBE_ARAM - tristate "Nintendo GameCube Auxiliary RAM (ARAM)" - depends on GAMECUBE - help - This enables support for using the 16MB of ARAM found in the - Nintendo GameCube as a block device. - Say Y if you want to include this driver in the kernel. - - To compile this driver as a module, choose M here: the - module will be called gcn-aram. - - config GAMECUBE_DI - tristate "Nintendo GameCube Disk Interface (DI)" - depends on GAMECUBE - help - This enables support for using the DVD drive unit found - in the Nintendo GameCube. - Say Y if you want to include this driver in the kernel. - - To compile this driver as a module, choose M here: the - module will be called gcn-di. - - config WII_MEM2 - tristate "Nintendo Wii MEM2" - depends on WII - help - This enables support for using the MEM2 found in the - Nintendo Wii as a block device. - Say Y if you want to include this driver in the kernel. - - To compile this driver as a module, choose M here: the - module will be called rvl-mem2. - - config WII_SD - tristate "Nintendo Wii front slot MMC/SD" - depends on STARLET_IOS - help - This enables support for MMC/SD cards using the front SD card - slot of the Nintendo Wii. - - You probably want to compile FAT support, and the required - codepages, or mount will complain. See Filesystems -> DOS/FAT/NT - filesystems and Filesystems -> Native Language Support - - Say Y if you want to include this driver in the kernel. - - To compile this driver as a module, choose M here: the - module will be called rvl-stsd. - config BLK_DEV_XD tristate "XT hard disk support" --- 64,67 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/drivers/input/keyboard In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/input/keyboard Modified Files: Kconfig Makefile Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/keyboard/Makefile,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Makefile 25 Oct 2009 18:59:28 -0000 1.12 --- Makefile 9 Dec 2009 18:18:07 -0000 1.13 *************** *** 32,34 **** obj-$(CONFIG_KEYBOARD_TOSA) += tosakbd.o obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o - obj-$(CONFIG_KEYBOARD_WII) += rvl-stkbd.o --- 32,33 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/keyboard/Kconfig,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Kconfig 25 Oct 2009 18:59:28 -0000 1.16 --- Kconfig 9 Dec 2009 18:18:07 -0000 1.17 *************** *** 311,325 **** module will be called sunkbd. - config KEYBOARD_WII - tristate "Nintendo Wii USB keyboard IOS glue" - depends on (STARLET_IOS && !USB) - help - Say Y here if you have a Nintendo Wii console running Linux and have - a keyboard attached to one of its USB ports. - This driver uses the IOS interface glue to access the USB keyboard. - - To compile this driver as a module, choose M here: the - module will be called rvl-stkbd. - config KEYBOARD_SH_KEYSC tristate "SuperH KEYSC keypad support" --- 311,314 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/drivers/i2c/busses In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/i2c/busses Modified Files: Kconfig Makefile i2c-gpio.c Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Makefile,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Makefile 25 Oct 2009 18:59:28 -0000 1.9 --- Makefile 9 Dec 2009 18:18:07 -0000 1.10 *************** *** 32,38 **** obj-$(CONFIG_I2C_DAVINCI) += i2c-davinci.o obj-$(CONFIG_I2C_DESIGNWARE) += i2c-designware.o - obj-$(CONFIG_I2C_GPIO_COMMON) += i2c-gpio-common.o obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o - obj-$(CONFIG_I2C_GPIO_OF) += i2c-gpio-of.o obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o obj-$(CONFIG_I2C_IBM_IIC) += i2c-ibm_iic.o --- 32,36 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Kconfig,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Kconfig 25 Oct 2009 18:59:28 -0000 1.9 --- Kconfig 9 Dec 2009 18:18:07 -0000 1.10 *************** *** 337,360 **** will be called i2c-designware. - config I2C_GPIO_COMMON - tristate - depends on GENERIC_GPIO - select I2C_ALGOBIT - default n - config I2C_GPIO tristate "GPIO-based bitbanging I2C" ! select I2C_GPIO_COMMON help This is a very simple bitbanging I2C driver utilizing the arch-neutral GPIO API to control the SCL and SDA lines. - config I2C_GPIO_OF - tristate "GPIO-based bitbanging I2C driver with OF bindings" - select I2C_GPIO_COMMON - help - This option allows the declaration of GPIO-based I2C devices - using a device tree source. - config I2C_HIGHLANDER tristate "Highlander FPGA SMBus interface" --- 337,348 ---- will be called i2c-designware. config I2C_GPIO tristate "GPIO-based bitbanging I2C" ! depends on GENERIC_GPIO ! select I2C_ALGOBIT help This is a very simple bitbanging I2C driver utilizing the arch-neutral GPIO API to control the SCL and SDA lines. config I2C_HIGHLANDER tristate "Highlander FPGA SMBus interface" Index: i2c-gpio.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/i2c-gpio.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** i2c-gpio.c 25 Oct 2009 18:59:28 -0000 1.6 --- i2c-gpio.c 9 Dec 2009 18:18:07 -0000 1.7 *************** *** 8,27 **** * published by the Free Software Foundation. */ ! ! #include "i2c-gpio-common.h" ! #include <linux/init.h> #include <linux/platform_device.h> /* ! * Platform bindings. ! * */ static int __devinit i2c_gpio_probe(struct platform_device *pdev) { struct i2c_gpio_platform_data *pdata; struct i2c_adapter *adap; ! int error; pdata = pdev->dev.platform_data; --- 8,87 ---- * published by the Free Software Foundation. */ ! #include <linux/i2c.h> ! #include <linux/i2c-algo-bit.h> ! #include <linux/i2c-gpio.h> #include <linux/init.h> + #include <linux/module.h> #include <linux/platform_device.h> + #include <asm/gpio.h> + + /* Toggle SDA by changing the direction of the pin */ + static void i2c_gpio_setsda_dir(void *data, int state) + { + struct i2c_gpio_platform_data *pdata = data; + + if (state) + gpio_direction_input(pdata->sda_pin); + else + gpio_direction_output(pdata->sda_pin, 0); + } + /* ! * Toggle SDA by changing the output value of the pin. This is only ! * valid for pins configured as open drain (i.e. setting the value ! * high effectively turns off the output driver.) */ + static void i2c_gpio_setsda_val(void *data, int state) + { + struct i2c_gpio_platform_data *pdata = data; + + gpio_set_value(pdata->sda_pin, state); + } + + /* Toggle SCL by changing the direction of the pin. */ + static void i2c_gpio_setscl_dir(void *data, int state) + { + struct i2c_gpio_platform_data *pdata = data; + + if (state) + gpio_direction_input(pdata->scl_pin); + else + gpio_direction_output(pdata->scl_pin, 0); + } + + /* + * Toggle SCL by changing the output value of the pin. This is used + * for pins that are configured as open drain and for output-only + * pins. The latter case will break the i2c protocol, but it will + * often work in practice. + */ + static void i2c_gpio_setscl_val(void *data, int state) + { + struct i2c_gpio_platform_data *pdata = data; + + gpio_set_value(pdata->scl_pin, state); + } + + static int i2c_gpio_getsda(void *data) + { + struct i2c_gpio_platform_data *pdata = data; + + return gpio_get_value(pdata->sda_pin); + } + + static int i2c_gpio_getscl(void *data) + { + struct i2c_gpio_platform_data *pdata = data; + + return gpio_get_value(pdata->scl_pin); + } static int __devinit i2c_gpio_probe(struct platform_device *pdev) { struct i2c_gpio_platform_data *pdata; + struct i2c_algo_bit_data *bit_data; struct i2c_adapter *adap; ! int ret; pdata = pdev->dev.platform_data; *************** *** 29,61 **** return -ENXIO; ! error = -ENOMEM; ! adap = kzalloc(sizeof(*adap), GFP_KERNEL); if (!adap) goto err_alloc_adap; ! error = i2c_gpio_adapter_probe(adap, pdata, &pdev->dev, pdev->id, ! THIS_MODULE); ! if (error) ! goto err_probe; platform_set_drvdata(pdev, adap); return 0; ! err_probe: kfree(adap); err_alloc_adap: ! return error; } static int __devexit i2c_gpio_remove(struct platform_device *pdev) { - struct i2c_adapter *adap; struct i2c_gpio_platform_data *pdata; adap = platform_get_drvdata(pdev); pdata = pdev->dev.platform_data; ! i2c_gpio_adapter_remove(adap, pdata); kfree(adap); return 0; } --- 89,192 ---- return -ENXIO; ! ret = -ENOMEM; ! adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL); if (!adap) goto err_alloc_adap; ! bit_data = kzalloc(sizeof(struct i2c_algo_bit_data), GFP_KERNEL); ! if (!bit_data) ! goto err_alloc_bit_data; ! ! ret = gpio_request(pdata->sda_pin, "sda"); ! if (ret) ! goto err_request_sda; ! ret = gpio_request(pdata->scl_pin, "scl"); ! if (ret) ! goto err_request_scl; ! ! if (pdata->sda_is_open_drain) { ! gpio_direction_output(pdata->sda_pin, 1); ! bit_data->setsda = i2c_gpio_setsda_val; ! } else { ! gpio_direction_input(pdata->sda_pin); ! bit_data->setsda = i2c_gpio_setsda_dir; ! } ! ! if (pdata->scl_is_open_drain || pdata->scl_is_output_only) { ! gpio_direction_output(pdata->scl_pin, 1); ! bit_data->setscl = i2c_gpio_setscl_val; ! } else { ! gpio_direction_input(pdata->scl_pin); ! bit_data->setscl = i2c_gpio_setscl_dir; ! } ! ! if (!pdata->scl_is_output_only) ! bit_data->getscl = i2c_gpio_getscl; ! bit_data->getsda = i2c_gpio_getsda; ! ! if (pdata->udelay) ! bit_data->udelay = pdata->udelay; ! else if (pdata->scl_is_output_only) ! bit_data->udelay = 50; /* 10 kHz */ ! else ! bit_data->udelay = 5; /* 100 kHz */ ! ! if (pdata->timeout) ! bit_data->timeout = pdata->timeout; ! else ! bit_data->timeout = HZ / 10; /* 100 ms */ ! ! bit_data->data = pdata; ! ! adap->owner = THIS_MODULE; ! snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); ! adap->algo_data = bit_data; ! adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; ! adap->dev.parent = &pdev->dev; ! ! /* ! * If "dev->id" is negative we consider it as zero. ! * The reason to do so is to avoid sysfs names that only make ! * sense when there are multiple adapters. ! */ ! adap->nr = (pdev->id != -1) ? pdev->id : 0; ! ret = i2c_bit_add_numbered_bus(adap); ! if (ret) ! goto err_add_bus; platform_set_drvdata(pdev, adap); + dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n", + pdata->sda_pin, pdata->scl_pin, + pdata->scl_is_output_only + ? ", no clock stretching" : ""); + return 0; ! err_add_bus: ! gpio_free(pdata->scl_pin); ! err_request_scl: ! gpio_free(pdata->sda_pin); ! err_request_sda: ! kfree(bit_data); ! err_alloc_bit_data: kfree(adap); err_alloc_adap: ! return ret; } static int __devexit i2c_gpio_remove(struct platform_device *pdev) { struct i2c_gpio_platform_data *pdata; + struct i2c_adapter *adap; adap = platform_get_drvdata(pdev); pdata = pdev->dev.platform_data; ! i2c_del_adapter(adap); ! gpio_free(pdata->scl_pin); ! gpio_free(pdata->sda_pin); ! kfree(adap->algo_data); kfree(adap); + return 0; } *************** *** 72,82 **** static int __init i2c_gpio_init(void) { ! int error; ! error = platform_driver_register(&i2c_gpio_driver); ! if (error) ! printk(KERN_ERR "i2c-gpio: registration failed (%d)\n", error); ! return error; } module_init(i2c_gpio_init); --- 203,213 ---- static int __init i2c_gpio_init(void) { ! int ret; ! ret = platform_driver_register(&i2c_gpio_driver); ! if (ret) ! printk(KERN_ERR "i2c-gpio: probe failed: %d\n", ret); ! return ret; } module_init(i2c_gpio_init); |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/drivers/net/usb In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/net/usb Modified Files: usbnet.c Log Message: Rewind to v2.6.31. Index: usbnet.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/usb/usbnet.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** usbnet.c 25 Oct 2009 18:59:28 -0000 1.9 --- usbnet.c 9 Dec 2009 18:18:07 -0000 1.10 *************** *** 547,553 **** // during some PM-driven resume scenarios, // these (async) unlinks complete immediately - spin_unlock(&q->lock); retval = usb_unlink_urb (urb); - spin_lock(&q->lock); if (retval != -EINPROGRESS && retval != 0) devdbg (dev, "unlink urb err, %d", retval); --- 547,551 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/sound/ppc In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/sound/ppc Modified Files: Kconfig Makefile Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/sound/ppc/Makefile,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Makefile 25 Oct 2009 18:59:28 -0000 1.13 --- Makefile 9 Dec 2009 18:18:07 -0000 1.14 *************** *** 5,13 **** snd-powermac-objs := powermac.o pmac.o awacs.o burgundy.o daca.o tumbler.o keywest.o beep.o - snd-gcn-objs := gcn-ai.o # Toplevel Module Dependency obj-$(CONFIG_SND_POWERMAC) += snd-powermac.o obj-$(CONFIG_SND_PS3) += snd_ps3.o - obj-$(CONFIG_SND_GAMECUBE) += snd-gcn.o - obj-$(CONFIG_SND_GAMECUBE_MIC) += gcn-mic.o --- 5,10 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/sound/ppc/Kconfig,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** Kconfig 25 Oct 2009 18:59:28 -0000 1.22 --- Kconfig 9 Dec 2009 18:18:07 -0000 1.23 *************** *** 50,70 **** default "2000" - config SND_GAMECUBE - tristate "Nintendo GameCube/Wii" - depends on SND && GAMECUBE_COMMON - help - Say Y here to include support for audio on the Nintendo GameCube/Wii. - - To compile this driver as a module, choose M here: the module - will be called snd-gcn. - - config SND_GAMECUBE_MIC - tristate "Nintendo GameCube Microphone (DOL-022)" - depends on SND && GAMECUBE_EXI && EXPERIMENTAL - help - If you say yes to this option, support will be included for the - Nintendo GameCube Microphone (DOL-022). - - If in doubt, say N here. - endif # SND_PPC --- 50,52 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/drivers/usb In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/drivers/usb Modified Files: Kconfig Makefile Log Message: Rewind to v2.6.31. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/Makefile,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Makefile 25 Oct 2009 18:59:28 -0000 1.10 --- Makefile 9 Dec 2009 18:18:07 -0000 1.11 *************** *** 19,23 **** obj-$(CONFIG_USB_U132_HCD) += host/ obj-$(CONFIG_USB_R8A66597_HCD) += host/ - obj-$(CONFIG_USB_WII_HCD) += host/ obj-$(CONFIG_USB_HWA_HCD) += host/ obj-$(CONFIG_USB_ISP1760_HCD) += host/ --- 19,22 ---- Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/Kconfig,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Kconfig 25 Oct 2009 18:59:28 -0000 1.11 --- Kconfig 9 Dec 2009 18:18:07 -0000 1.12 *************** *** 24,29 **** default y if SUPERH # r8a66597-hcd default y if MICROBLAZE - default y if WII # rvl-sthcd - default y if STARLET_IOS # rvl-sthcd default PCI --- 24,27 ---- |
From: Albert H. <he...@us...> - 2009-12-09 18:18:16
|
Update of /cvsroot/gc-linux/linux/include/linux In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17071/include/linux Modified Files: fb.h gpio.h i2c-gpio.h kexec.h linux_logo.h Log Message: Rewind to v2.6.31. Index: linux_logo.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/linux_logo.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** linux_logo.h 25 Oct 2009 18:59:28 -0000 1.2 --- linux_logo.h 9 Dec 2009 18:18:07 -0000 1.3 *************** *** 39,43 **** extern const struct linux_logo logo_blackfin_clut224; extern const struct linux_logo logo_dec_clut224; - extern const struct linux_logo logo_gcn_clut224; extern const struct linux_logo logo_mac_clut224; extern const struct linux_logo logo_parisc_clut224; --- 39,42 ---- Index: i2c-gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/i2c-gpio.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** i2c-gpio.h 25 Oct 2009 18:59:28 -0000 1.6 --- i2c-gpio.h 9 Dec 2009 18:18:07 -0000 1.7 *************** *** 34,38 **** unsigned int scl_is_open_drain:1; unsigned int scl_is_output_only:1; - unsigned int sda_enforce_dir:1; }; --- 34,37 ---- Index: kexec.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/kexec.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** kexec.h 25 Oct 2009 18:59:28 -0000 1.4 --- kexec.h 9 Dec 2009 18:18:07 -0000 1.5 *************** *** 53,61 **** typedef unsigned long kimage_entry_t; ! #define IND_DESTINATION 0x01 ! #define IND_INDIRECTION 0x02 ! #define IND_DONE 0x04 ! #define IND_SOURCE 0x08 ! #define IND_NOALLOC 0x10 /* special case for memory preserving code */ #define KEXEC_SEGMENT_MAX 16 --- 53,60 ---- typedef unsigned long kimage_entry_t; ! #define IND_DESTINATION 0x1 ! #define IND_INDIRECTION 0x2 ! #define IND_DONE 0x4 ! #define IND_SOURCE 0x8 #define KEXEC_SEGMENT_MAX 16 *************** *** 127,132 **** extern struct page *kimage_alloc_control_pages(struct kimage *image, unsigned int order); - extern int kimage_add_preserved_region(struct kimage *image, unsigned long to, - unsigned long from, int length); extern void crash_kexec(struct pt_regs *); int kexec_should_crash(struct task_struct *); --- 126,129 ---- Index: fb.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/fb.h,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** fb.h 25 Oct 2009 18:59:28 -0000 1.38 --- fb.h 9 Dec 2009 18:18:07 -0000 1.39 *************** *** 39,47 **** #define FBIOGET_DISPINFO 0x4618 - #define FBIOWAITRETRACE 0x4619 - #define FBIOWAITPEFINISH 0x4620 - #define FBIOVIRTTOPHYS 0x4621 - #define FBIOFLIP 0x4622 - #define FBIOFLIPHACK 0x4623 /* libsdl */ #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ --- 39,42 ---- *************** *** 918,928 **** #define fb_writeb __raw_writeb #define fb_writew __raw_writew ! #ifndef CONFIG_FB_GAMECUBE /* XXX Why? O' why? */ ! # define fb_writel __raw_writel ! #else ! extern unsigned int vifb_writel(unsigned int, void *); ! # define fb_writel(b, addr) vifb_writel(b, addr) ! # define fb_writel_real(b, addr) (*(/*volatile*/ u32 __iomem *)(addr) = (b)) ! #endif #define fb_writeq __raw_writeq #define fb_memset memset_io --- 913,917 ---- #define fb_writeb __raw_writeb #define fb_writew __raw_writew ! #define fb_writel __raw_writel #define fb_writeq __raw_writeq #define fb_memset memset_io Index: gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/gpio.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gpio.h 25 Oct 2009 18:59:28 -0000 1.6 --- gpio.h 9 Dec 2009 18:18:07 -0000 1.7 *************** *** 50,58 **** } - static inline int gpio_direction_is_output(unsigned gpio) - { - return -EINVAL; - } - static inline int gpio_get_value(unsigned gpio) { --- 50,53 ---- |
From: Albert H. <he...@us...> - 2009-10-25 18:59:43
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/kernel In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/arch/powerpc/kernel Modified Files: cputable.c dma.c head_32.S udbg.c Log Message: Merge gc-linux-v2.6.31. Index: udbg.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/udbg.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** udbg.c 25 Oct 2009 18:53:45 -0000 1.8 --- udbg.c 25 Oct 2009 18:59:27 -0000 1.9 *************** *** 61,64 **** --- 61,66 ---- #elif defined(CONFIG_PPC_EARLY_DEBUG_CPM) udbg_init_cpm(); + #elif defined(CONFIG_PPC_EARLY_DEBUG_USBGECKO) + udbg_init_usbgecko(); #endif Index: dma.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/dma.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** dma.c 25 Oct 2009 18:56:55 -0000 1.4 --- dma.c 25 Oct 2009 18:59:27 -0000 1.5 *************** *** 34,37 **** --- 34,40 ---- void *ret; #ifdef CONFIG_NOT_COHERENT_CACHE + if (dma_alloc_from_coherent(dev, size, dma_handle, &ret)) + return ret; + ret = __dma_alloc_coherent(dev, size, dma_handle, flag); if (ret == NULL) *************** *** 61,64 **** --- 64,69 ---- { #ifdef CONFIG_NOT_COHERENT_CACHE + if (dma_release_from_coherent(dev, get_order(size), vaddr)) + return; __dma_free_coherent(size, vaddr); #else Index: head_32.S =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/head_32.S,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** head_32.S 25 Oct 2009 18:56:55 -0000 1.13 --- head_32.S 25 Oct 2009 18:59:27 -0000 1.14 *************** *** 165,168 **** --- 165,171 ---- bl setup_cpm_bat #endif + #ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO + bl setup_usbgecko_bat + #endif /* *************** *** 1204,1207 **** --- 1207,1228 ---- #endif + #ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO + setup_usbgecko_bat: + /* prepare a BAT for early io */ + lis r8, 0x0c00 + ori r8, r8, 0x002a /* uncached, guarded ,rw */ + lis r11, 0xcc00 + ori r11, r11, 0x3 /* 128K */ + #ifdef CONFIG_WII + oris r8, r8, 0x0100 + oris r11, r11, 0x0100 + #endif + mtspr SPRN_DBAT1L, r8 + mtspr SPRN_DBAT1U, r11 + sync + isync + blr + #endif + #ifdef CONFIG_8260 /* Jump into the system reset for the rom. Index: cputable.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/cputable.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** cputable.c 25 Oct 2009 18:56:55 -0000 1.12 --- cputable.c 25 Oct 2009 18:59:27 -0000 1.13 *************** *** 693,701 **** .platform = "ppc750", }, ! { /* 750CL */ ! .pvr_mask = 0xfffff0f0, ! .pvr_value = 0x00087010, ! .cpu_name = "750CL", ! .cpu_features = CPU_FTRS_750CL, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, --- 693,701 ---- .platform = "ppc750", }, ! { /* 745/755 */ ! .pvr_mask = 0xfffff000, ! .pvr_value = 0x00083000, ! .cpu_name = "745/755", ! .cpu_features = CPU_FTRS_750, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, *************** *** 708,718 **** .platform = "ppc750", }, ! { /* 745/755 */ ! .pvr_mask = 0xfffff000, ! .pvr_value = 0x00083000, ! .cpu_name = "745/755", ! .cpu_features = CPU_FTRS_750, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, ! .mmu_features = MMU_FTR_HPTE_TABLE, .icache_bsize = 32, .dcache_bsize = 32, --- 708,718 ---- .platform = "ppc750", }, ! { /* 750CL (and "Broadway") */ ! .pvr_mask = 0xfffff0e0, ! .pvr_value = 0x00087000, ! .cpu_name = "750CL", ! .cpu_features = CPU_FTRS_750CL, .cpu_user_features = COMMON_USER | PPC_FEATURE_PPC_LE, ! .mmu_features = MMU_FTR_HPTE_TABLE | MMU_FTR_USE_HIGH_BATS, .icache_bsize = 32, .dcache_bsize = 32, |
From: Albert H. <he...@us...> - 2009-10-25 18:59:43
|
Update of /cvsroot/gc-linux/linux/drivers/misc In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/drivers/misc Modified Files: Kconfig Makefile gcn-mi.c Log Message: Merge gc-linux-v2.6.31. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/misc/Kconfig,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Kconfig 25 Oct 2009 18:56:56 -0000 1.20 --- Kconfig 25 Oct 2009 18:59:28 -0000 1.21 *************** *** 56,59 **** --- 56,81 ---- interval timing. + config GAMECUBE_GQR + tristate "Nintendo GameCube/Wii Graphic Quantization Registers (GQR)" + depends on GAMECUBE_COMMON + help + This option enables device driver support for the Gekko/Broadway + processors' Graphic Quantization Registers. + These registers are used with the psql and psqst instructions. + The registers will appear in /proc/sys/gqr. + + config GAMECUBE_MI + tristate "Nintendo GameCube Memory Interface (MI)" + depends on GAMECUBE + help + If you say yes to this option, support will be included for the + Memory Interface (MI) of the Nintendo GameCube. + + The MI allows one to setup up to four protected memory regions, + catching invalid accesses to them. The MI catches out of bounds + memory accesses too. + + If in doubt, say N here. + config IBM_ASM tristate "Device driver for IBM RSA service processor" Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/misc/Makefile,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Makefile 25 Oct 2009 18:56:56 -0000 1.16 --- Makefile 25 Oct 2009 18:59:28 -0000 1.17 *************** *** 21,24 **** --- 21,26 ---- obj-$(CONFIG_ISL29003) += isl29003.o obj-$(CONFIG_C2PORT) += c2port/ + obj-$(CONFIG_GAMECUBE_GQR) += gcn-gqr.o + obj-$(CONFIG_GAMECUBE_MI) += gcn-mi.o obj-y += eeprom/ obj-y += cb710/ Index: gcn-mi.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/misc/gcn-mi.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** gcn-mi.c 1 Feb 2009 18:29:35 -0000 1.9 --- gcn-mi.c 25 Oct 2009 18:59:28 -0000 1.10 *************** *** 208,215 **** #ifdef CONFIG_PROC_FS struct platform_device *pdev = to_platform_device(device); ! priv->proc_file = create_proc_read_entry(pdev->dev.bus_id, 0444, NULL, mi_proc_read, priv); ! priv->proc_file->owner = THIS_MODULE; #endif /* CONFIG_PROC_FS */ --- 208,217 ---- #ifdef CONFIG_PROC_FS + { struct platform_device *pdev = to_platform_device(device); ! priv->proc_file = create_proc_read_entry(dev_name(&pdev->dev), ! 0444, NULL, mi_proc_read, priv); ! } #endif /* CONFIG_PROC_FS */ *************** *** 240,244 **** #ifdef CONFIG_PROC_FS struct platform_device *pdev = to_platform_device(priv->device); ! remove_proc_entry(pdev->dev.bus_id, NULL); #endif /* CONFIG_PROC_FS */ --- 242,246 ---- #ifdef CONFIG_PROC_FS struct platform_device *pdev = to_platform_device(priv->device); ! remove_proc_entry(dev_name(&pdev->dev), NULL); #endif /* CONFIG_PROC_FS */ |
From: Albert H. <he...@us...> - 2009-10-25 18:59:42
|
Update of /cvsroot/gc-linux/linux/drivers/i2c/busses In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/drivers/i2c/busses Modified Files: Kconfig Makefile i2c-gpio.c Log Message: Merge gc-linux-v2.6.31. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Kconfig,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Kconfig 25 Oct 2009 18:56:56 -0000 1.8 --- Kconfig 25 Oct 2009 18:59:28 -0000 1.9 *************** *** 337,348 **** will be called i2c-designware. ! config I2C_GPIO ! tristate "GPIO-based bitbanging I2C" depends on GENERIC_GPIO select I2C_ALGOBIT help This is a very simple bitbanging I2C driver utilizing the arch-neutral GPIO API to control the SCL and SDA lines. config I2C_HIGHLANDER tristate "Highlander FPGA SMBus interface" --- 337,360 ---- will be called i2c-designware. ! config I2C_GPIO_COMMON ! tristate depends on GENERIC_GPIO select I2C_ALGOBIT + default n + + config I2C_GPIO + tristate "GPIO-based bitbanging I2C" + select I2C_GPIO_COMMON help This is a very simple bitbanging I2C driver utilizing the arch-neutral GPIO API to control the SCL and SDA lines. + config I2C_GPIO_OF + tristate "GPIO-based bitbanging I2C driver with OF bindings" + select I2C_GPIO_COMMON + help + This option allows the declaration of GPIO-based I2C devices + using a device tree source. + config I2C_HIGHLANDER tristate "Highlander FPGA SMBus interface" Index: i2c-gpio.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/i2c-gpio.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** i2c-gpio.c 25 Oct 2009 18:53:45 -0000 1.5 --- i2c-gpio.c 25 Oct 2009 18:59:28 -0000 1.6 *************** *** 8,87 **** * published by the Free Software Foundation. */ - #include <linux/i2c.h> - #include <linux/i2c-algo-bit.h> - #include <linux/i2c-gpio.h> - #include <linux/init.h> - #include <linux/module.h> - #include <linux/platform_device.h> - - #include <asm/gpio.h> - - /* Toggle SDA by changing the direction of the pin */ - static void i2c_gpio_setsda_dir(void *data, int state) - { - struct i2c_gpio_platform_data *pdata = data; - - if (state) - gpio_direction_input(pdata->sda_pin); - else - gpio_direction_output(pdata->sda_pin, 0); - } - - /* - * Toggle SDA by changing the output value of the pin. This is only - * valid for pins configured as open drain (i.e. setting the value - * high effectively turns off the output driver.) - */ - static void i2c_gpio_setsda_val(void *data, int state) - { - struct i2c_gpio_platform_data *pdata = data; ! gpio_set_value(pdata->sda_pin, state); ! } ! ! /* Toggle SCL by changing the direction of the pin. */ ! static void i2c_gpio_setscl_dir(void *data, int state) ! { ! struct i2c_gpio_platform_data *pdata = data; ! if (state) ! gpio_direction_input(pdata->scl_pin); ! else ! gpio_direction_output(pdata->scl_pin, 0); ! } /* ! * Toggle SCL by changing the output value of the pin. This is used ! * for pins that are configured as open drain and for output-only ! * pins. The latter case will break the i2c protocol, but it will ! * often work in practice. */ - static void i2c_gpio_setscl_val(void *data, int state) - { - struct i2c_gpio_platform_data *pdata = data; - - gpio_set_value(pdata->scl_pin, state); - } - - static int i2c_gpio_getsda(void *data) - { - struct i2c_gpio_platform_data *pdata = data; - - return gpio_get_value(pdata->sda_pin); - } - - static int i2c_gpio_getscl(void *data) - { - struct i2c_gpio_platform_data *pdata = data; - - return gpio_get_value(pdata->scl_pin); - } static int __devinit i2c_gpio_probe(struct platform_device *pdev) { struct i2c_gpio_platform_data *pdata; - struct i2c_algo_bit_data *bit_data; struct i2c_adapter *adap; ! int ret; pdata = pdev->dev.platform_data; --- 8,27 ---- * published by the Free Software Foundation. */ ! #include "i2c-gpio-common.h" ! #include <linux/init.h> ! #include <linux/platform_device.h> /* ! * Platform bindings. ! * */ static int __devinit i2c_gpio_probe(struct platform_device *pdev) { struct i2c_gpio_platform_data *pdata; struct i2c_adapter *adap; ! int error; pdata = pdev->dev.platform_data; *************** *** 89,192 **** return -ENXIO; ! ret = -ENOMEM; ! adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL); if (!adap) goto err_alloc_adap; ! bit_data = kzalloc(sizeof(struct i2c_algo_bit_data), GFP_KERNEL); ! if (!bit_data) ! goto err_alloc_bit_data; ! ! ret = gpio_request(pdata->sda_pin, "sda"); ! if (ret) ! goto err_request_sda; ! ret = gpio_request(pdata->scl_pin, "scl"); ! if (ret) ! goto err_request_scl; ! ! if (pdata->sda_is_open_drain) { ! gpio_direction_output(pdata->sda_pin, 1); ! bit_data->setsda = i2c_gpio_setsda_val; ! } else { ! gpio_direction_input(pdata->sda_pin); ! bit_data->setsda = i2c_gpio_setsda_dir; ! } ! ! if (pdata->scl_is_open_drain || pdata->scl_is_output_only) { ! gpio_direction_output(pdata->scl_pin, 1); ! bit_data->setscl = i2c_gpio_setscl_val; ! } else { ! gpio_direction_input(pdata->scl_pin); ! bit_data->setscl = i2c_gpio_setscl_dir; ! } ! ! if (!pdata->scl_is_output_only) ! bit_data->getscl = i2c_gpio_getscl; ! bit_data->getsda = i2c_gpio_getsda; ! ! if (pdata->udelay) ! bit_data->udelay = pdata->udelay; ! else if (pdata->scl_is_output_only) ! bit_data->udelay = 50; /* 10 kHz */ ! else ! bit_data->udelay = 5; /* 100 kHz */ ! ! if (pdata->timeout) ! bit_data->timeout = pdata->timeout; ! else ! bit_data->timeout = HZ / 10; /* 100 ms */ ! ! bit_data->data = pdata; ! ! adap->owner = THIS_MODULE; ! snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); ! adap->algo_data = bit_data; ! adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; ! adap->dev.parent = &pdev->dev; ! ! /* ! * If "dev->id" is negative we consider it as zero. ! * The reason to do so is to avoid sysfs names that only make ! * sense when there are multiple adapters. ! */ ! adap->nr = (pdev->id != -1) ? pdev->id : 0; ! ret = i2c_bit_add_numbered_bus(adap); ! if (ret) ! goto err_add_bus; platform_set_drvdata(pdev, adap); - dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n", - pdata->sda_pin, pdata->scl_pin, - pdata->scl_is_output_only - ? ", no clock stretching" : ""); - return 0; ! err_add_bus: ! gpio_free(pdata->scl_pin); ! err_request_scl: ! gpio_free(pdata->sda_pin); ! err_request_sda: ! kfree(bit_data); ! err_alloc_bit_data: kfree(adap); err_alloc_adap: ! return ret; } static int __devexit i2c_gpio_remove(struct platform_device *pdev) { - struct i2c_gpio_platform_data *pdata; struct i2c_adapter *adap; adap = platform_get_drvdata(pdev); pdata = pdev->dev.platform_data; ! i2c_del_adapter(adap); ! gpio_free(pdata->scl_pin); ! gpio_free(pdata->sda_pin); ! kfree(adap->algo_data); kfree(adap); - return 0; } --- 29,61 ---- return -ENXIO; ! error = -ENOMEM; ! adap = kzalloc(sizeof(*adap), GFP_KERNEL); if (!adap) goto err_alloc_adap; ! error = i2c_gpio_adapter_probe(adap, pdata, &pdev->dev, pdev->id, ! THIS_MODULE); ! if (error) ! goto err_probe; platform_set_drvdata(pdev, adap); return 0; ! err_probe: kfree(adap); err_alloc_adap: ! return error; } static int __devexit i2c_gpio_remove(struct platform_device *pdev) { struct i2c_adapter *adap; + struct i2c_gpio_platform_data *pdata; adap = platform_get_drvdata(pdev); pdata = pdev->dev.platform_data; ! i2c_gpio_adapter_remove(adap, pdata); kfree(adap); return 0; } *************** *** 203,213 **** static int __init i2c_gpio_init(void) { ! int ret; ! ret = platform_driver_register(&i2c_gpio_driver); ! if (ret) ! printk(KERN_ERR "i2c-gpio: probe failed: %d\n", ret); ! return ret; } module_init(i2c_gpio_init); --- 72,82 ---- static int __init i2c_gpio_init(void) { ! int error; ! error = platform_driver_register(&i2c_gpio_driver); ! if (error) ! printk(KERN_ERR "i2c-gpio: registration failed (%d)\n", error); ! return error; } module_init(i2c_gpio_init); Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Makefile,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Makefile 25 Oct 2009 18:56:56 -0000 1.8 --- Makefile 25 Oct 2009 18:59:28 -0000 1.9 *************** *** 32,36 **** --- 32,38 ---- obj-$(CONFIG_I2C_DAVINCI) += i2c-davinci.o obj-$(CONFIG_I2C_DESIGNWARE) += i2c-designware.o + obj-$(CONFIG_I2C_GPIO_COMMON) += i2c-gpio-common.o obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o + obj-$(CONFIG_I2C_GPIO_OF) += i2c-gpio-of.o obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o obj-$(CONFIG_I2C_IBM_IIC) += i2c-ibm_iic.o |
From: Albert H. <he...@us...> - 2009-10-25 18:59:41
|
Update of /cvsroot/gc-linux/linux/kernel In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/kernel Modified Files: kexec.c Log Message: Merge gc-linux-v2.6.31. Index: kexec.c =================================================================== RCS file: /cvsroot/gc-linux/linux/kernel/kexec.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** kexec.c 25 Oct 2009 18:56:56 -0000 1.4 --- kexec.c 25 Oct 2009 18:59:28 -0000 1.5 *************** *** 581,590 **** ! static int kimage_add_page(struct kimage *image, unsigned long page) { int result; page &= PAGE_MASK; ! result = kimage_add_entry(image, page | IND_SOURCE); if (result == 0) image->destination += PAGE_SIZE; --- 581,591 ---- ! static inline int kimage_add_page_with_flags(struct kimage *image, ! unsigned long page, int flags) { int result; page &= PAGE_MASK; ! result = kimage_add_entry(image, page | (flags & ~PAGE_MASK)); if (result == 0) image->destination += PAGE_SIZE; *************** *** 593,596 **** --- 594,607 ---- } + static int kimage_add_page(struct kimage *image, unsigned long page) + { + return kimage_add_page_with_flags(image, page, IND_SOURCE); + } + + static int kimage_add_page_noalloc(struct kimage *image, unsigned long page) + { + return kimage_add_page_with_flags(image, page, IND_SOURCE|IND_NOALLOC); + } + static void kimage_free_extra_pages(struct kimage *image) *************** *** 611,614 **** --- 622,646 ---- } + int kimage_add_preserved_region(struct kimage *image, unsigned long to, + unsigned long from, int length) + { + int result = 0; + + if (length > 0) { + result = kimage_set_destination(image, to); + if (result < 0) + goto out; + while (length > 0) { + result = kimage_add_page_noalloc(image, from); + if (result < 0) + goto out; + from += PAGE_SIZE; + length -= PAGE_SIZE; + } + } + out: + return result; + } + #define for_each_kimage_entry(image, ptr, entry) \ for (ptr = &image->head; (entry = *ptr) && !(entry & IND_DONE); \ *************** *** 642,648 **** */ ind = entry; } - else if (entry & IND_SOURCE) - kimage_free_entry(entry); } /* Free the final indirection page */ --- 674,682 ---- */ ind = entry; + } else if (entry & IND_SOURCE) { + /* free only entries that we really allocated */ + if (!(entry & IND_NOALLOC)) + kimage_free_entry(entry); } } /* Free the final indirection page */ |
From: Albert H. <he...@us...> - 2009-10-25 18:59:41
|
Update of /cvsroot/gc-linux/linux/include/asm-generic In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/include/asm-generic Modified Files: gpio.h Log Message: Merge gc-linux-v2.6.31. Index: gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/asm-generic/gpio.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gpio.h 25 Oct 2009 18:53:46 -0000 1.6 --- gpio.h 25 Oct 2009 18:59:28 -0000 1.7 *************** *** 119,122 **** --- 119,123 ---- extern int gpio_direction_input(unsigned gpio); extern int gpio_direction_output(unsigned gpio, int value); + extern int gpio_direction_is_output(unsigned gpio); extern int gpio_get_value_cansleep(unsigned gpio); |
From: Albert H. <he...@us...> - 2009-10-25 18:59:41
|
Update of /cvsroot/gc-linux/linux/drivers/usb/host In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/drivers/usb/host Modified Files: Kconfig Makefile ehci-hcd.c ehci.h ohci-hcd.c ohci-q.c ohci.h Log Message: Merge gc-linux-v2.6.31. Index: ohci-q.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci-q.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ohci-q.c 25 Oct 2009 18:53:45 -0000 1.3 --- ohci-q.c 25 Oct 2009 18:59:28 -0000 1.4 *************** *** 616,619 **** --- 616,622 ---- /* FALLTHROUGH */ case PIPE_BULK: + if (ohci->flags & OHCI_QUIRK_WII) + ohci_mipc_bulk_quirk(ohci); + info = is_out ? TD_T_TOGGLE | TD_CC | TD_DP_OUT *************** *** 647,650 **** --- 650,656 ---- */ case PIPE_CONTROL: + if (ohci->flags & OHCI_QUIRK_WII) + ohci_mipc_control_quirk(ohci); + info = TD_CC | TD_DP_SETUP | TD_T_DATA0; td_fill (ohci, info, urb->setup_dma, 8, urb, cnt++); Index: ehci.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ehci.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ehci.h 25 Oct 2009 18:56:56 -0000 1.4 --- ehci.h 25 Oct 2009 18:59:28 -0000 1.5 *************** *** 38,41 **** --- 38,62 ---- #endif + /* + * Some platforms have weird constraints when accessing memory. + * + * For example, the Nintendo Wii video game console is unable to perform + * non-32 bit writes to non-cached memory for its second block of 64MB of RAM. + * As this platform also requires CONFIG_NOT_COHERENT, all memory allocated + * using the dma memory allocation functions can only be written using + * 32-bit accesses. + * + * Because of this constraint, as a workaround, we make sure that all + * fields in struct ehci_qh (which is allocated from a dma pool) are + * always 32 bit fields. + * Note that the remaining structs allocated from dma-able memory are already + * 32 bit fields. + */ + #ifdef CONFIG_USB_EHCI_HCD_MIPC + #define ehci_fld(type) u32 + #else + #define ehci_fld(type) type + #endif + /* statistics can be kept for for tuning/monitoring */ struct ehci_stats { *************** *** 337,341 **** unsigned stamp; ! u8 qh_state; #define QH_STATE_LINKED 1 /* HC sees this */ #define QH_STATE_UNLINK 2 /* HC may still see this */ --- 358,362 ---- unsigned stamp; ! ehci_fld(u8) qh_state; #define QH_STATE_LINKED 1 /* HC sees this */ #define QH_STATE_UNLINK 2 /* HC may still see this */ *************** *** 344,357 **** #define QH_STATE_COMPLETING 5 /* don't touch token.HALT */ ! u8 xacterrs; /* XactErr retry counter */ #define QH_XACTERR_MAX 32 /* XactErr retry limit */ /* periodic schedule info */ ! u8 usecs; /* intr bandwidth */ ! u8 gap_uf; /* uframes split/csplit gap */ ! u8 c_usecs; /* ... split completion bw */ ! u16 tt_usecs; /* tt downstream bandwidth */ ! unsigned short period; /* polling interval */ ! unsigned short start; /* where polling starts */ #define NO_FRAME ((unsigned short)~0) /* pick new start */ --- 365,378 ---- #define QH_STATE_COMPLETING 5 /* don't touch token.HALT */ ! ehci_fld(u8) xacterrs; /* XactErr retry counter */ #define QH_XACTERR_MAX 32 /* XactErr retry limit */ /* periodic schedule info */ ! ehci_fld(u8) usecs; /* intr bandwidth */ ! ehci_fld(u8) gap_uf; /* uframes split/csplit gap */ ! ehci_fld(u8) c_usecs; /* ... split completion bw */ ! ehci_fld(u16) tt_usecs; /* tt downstream bandwidth */ ! ehci_fld(unsigned short) period; /* polling interval */ ! ehci_fld(unsigned short) start; /* where polling starts */ #define NO_FRAME ((unsigned short)~0) /* pick new start */ *************** *** 592,595 **** --- 613,634 ---- #endif + #ifdef CONFIG_USB_EHCI_HCD_MIPC + + #include <asm/starlet-mini.h> + + static inline unsigned int ehci_readl(const struct ehci_hcd *ehci, + __u32 __iomem *regs) + { + return mipc_in_be32(regs); + } + + static inline void ehci_writel(const struct ehci_hcd *ehci, + const unsigned int val, __u32 __iomem *regs) + { + mipc_out_be32(regs, val); + } + + #else + /* * Big-endian read/write functions are arch-specific. *************** *** 625,628 **** --- 664,669 ---- } + #endif /* CONFIG_USB_EHCI_HCD_MIPC */ + /* * On certain ppc-44x SoC there is a HW issue, that could only worked around with Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/Kconfig,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Kconfig 25 Oct 2009 18:56:56 -0000 1.11 --- Kconfig 25 Oct 2009 18:59:28 -0000 1.12 *************** *** 114,117 **** --- 114,125 ---- OpenFirmware platform bus. + config USB_EHCI_HCD_MIPC + bool "Nintendo Wii EHCI USB controller support via 'mini'" + depends on USB_EHCI_HCD && STARLET_MINI + default y + ---help--- + Say Y here to support the EHCI USB controller found in the + Nintendo Wii video game console. + config USB_OXU210HP_HCD tristate "OXU210HP HCD support" *************** *** 204,207 **** --- 212,224 ---- default USB_OHCI_HCD_PPC_OF_BE || USB_OHCI_HCD_PPC_OF_LE + config USB_OHCI_HCD_MIPC + bool "Nintendo Wii OHCI USB controller support via 'mini'" + depends on USB_OHCI_HCD && STARLET_MINI + select USB_OHCI_LITTLE_ENDIAN + default y + ---help--- + Say Y here to support the OHCI USB controller found in the + Nintendo Wii video game console. + config USB_OHCI_HCD_PCI bool "OHCI support for PCI-bus USB controllers" *************** *** 344,347 **** --- 361,383 ---- SH7366, SH7723 and SH7724 processors. + config USB_WII_HCD + tristate "Nintendo Wii HCD support" + depends on USB && STARLET_IOS && !HIGHMEM && EXPERIMENTAL + help + The Nintendo Wii includes a USB 1.1 host controller that can be + accessed through the API provided by the starlet subsystem. + + Enable this option if you plan to use the internal Nintendo Wii + bluetooth dongle or any USB peripheral connected to the external + ports. + + USB devices using isochronous transfers are not supported. + Use of USB hubs is partially supported. + + Use completely at you own risk. If unsure, say N. + + To compile this driver as a module, choose M here: the + module will be called rvl-sthcd. + config USB_WHCI_HCD tristate "Wireless USB Host Controller Interface (WHCI) driver (EXPERIMENTAL)" Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/Makefile,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Makefile 25 Oct 2009 18:56:56 -0000 1.8 --- Makefile 25 Oct 2009 18:59:28 -0000 1.9 *************** *** 31,33 **** --- 31,34 ---- obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o obj-$(CONFIG_USB_ISP1760_HCD) += isp1760.o + obj-$(CONFIG_USB_WII_HCD) += rvl-sthcd.o obj-$(CONFIG_USB_HWA_HCD) += hwa-hc.o Index: ohci.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ohci.h 25 Oct 2009 18:53:45 -0000 1.3 --- ohci.h 25 Oct 2009 18:59:28 -0000 1.4 *************** *** 17,20 **** --- 17,42 ---- /* + * Some platforms have weird constraints when accessing memory. + * + * For example, the Nintendo Wii video game console is unable to perform + * non-32 bit writes to non-cached memory for its second block of 64MB of RAM. + * As this platform also requires CONFIG_NOT_COHERENT_CACHE, all memory + * allocated using the dma memory allocation functions can only be written + * using 32-bit accesses. + * + * Because of this constraint, as a workaround, we make sure that all + * fields in struct ed and td (which are allocated from dma pools) are + * always 32 bit fields. + * Note that the remaining structs allocated from dma-able memory are already + * 32 bit fields. + */ + #ifdef CONFIG_USB_OHCI_HCD_MIPC + #define ohci_fld(type) u32 + #else + #define ohci_fld(type) type + #endif + + + /* * OHCI Endpoint Descriptor (ED) ... holds TD queue * See OHCI spec, section 4.2 *************** *** 52,70 **** * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... */ ! u8 state; /* ED_{IDLE,UNLINK,OPER} */ #define ED_IDLE 0x00 /* NOT linked to HC */ #define ED_UNLINK 0x01 /* being unlinked from hc */ #define ED_OPER 0x02 /* IS linked to hc */ ! u8 type; /* PIPE_{BULK,...} */ /* periodic scheduling params (for intr and iso) */ ! u8 branch; ! u16 interval; ! u16 load; ! u16 last_iso; /* iso only */ /* HC may see EDs on rm_list until next frame (frame_no == tick) */ ! u16 tick; } __attribute__ ((aligned(16))); --- 74,92 ---- * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... */ ! ohci_fld(u8) state; /* ED_{IDLE,UNLINK,OPER} */ #define ED_IDLE 0x00 /* NOT linked to HC */ #define ED_UNLINK 0x01 /* being unlinked from hc */ #define ED_OPER 0x02 /* IS linked to hc */ ! ohci_fld(u8) type; /* PIPE_{BULK,...} */ /* periodic scheduling params (for intr and iso) */ ! ohci_fld(u8) branch; ! ohci_fld(u16) interval; ! ohci_fld(u16) load; ! ohci_fld(u16) last_iso; /* iso only */ /* HC may see EDs on rm_list until next frame (frame_no == tick) */ ! ohci_fld(u16) tick; } __attribute__ ((aligned(16))); *************** *** 119,123 **** /* rest are purely for the driver's use */ ! __u8 index; struct ed *ed; struct td *td_hash; /* dma-->td hashtable */ --- 141,145 ---- /* rest are purely for the driver's use */ ! ohci_fld(__u8) index; struct ed *ed; struct td *td_hash; /* dma-->td hashtable */ *************** *** 403,406 **** --- 425,429 ---- #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */ #define OHCI_QUIRK_AMD_ISO 0x200 /* ISO transfers*/ + #define OHCI_QUIRK_WII 0x400 /* Hollywood chipset */ // there are also chip quirks/bugs in init logic *************** *** 537,540 **** --- 560,594 ---- #endif + #ifdef CONFIG_USB_OHCI_HCD_MIPC + + #include <asm/starlet-mini.h> + + static inline unsigned int _ohci_readl(const struct ohci_hcd *ohci, + __hc32 __iomem *regs) + { + return mipc_in_be32(regs); + } + + static inline void _ohci_writel(const struct ohci_hcd *ohci, + const unsigned int val, __hc32 __iomem *regs) + { + mipc_out_be32(regs, val); + } + + extern void ohci_mipc_control_quirk(struct ohci_hcd *ohci); + extern void ohci_mipc_bulk_quirk(struct ohci_hcd *ohci); + + #else + + static inline void ohci_mipc_control_quirk(struct ohci_hcd *ohci) + { + return; + } + + static inline void ohci_mipc_bulk_quirk(struct ohci_hcd *ohci) + { + return; + } + /* * Big-endian read/write functions are arch-specific. *************** *** 566,569 **** --- 620,625 ---- } + #endif /* CONFIG_USB_OHCI_HCD_MIPC */ + #ifdef CONFIG_ARCH_LH7A404 /* Marc Singer: at the time this code was written, the LH7A404 Index: ohci-hcd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci-hcd.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ohci-hcd.c 25 Oct 2009 18:56:56 -0000 1.4 --- ohci-hcd.c 25 Oct 2009 18:59:28 -0000 1.5 *************** *** 1062,1065 **** --- 1062,1070 ---- #endif + #ifdef CONFIG_USB_OHCI_HCD_MIPC + #include "ohci-mipc.c" + #define OF_PLATFORM_DRIVER ohci_hcd_mipc_driver + #endif + #ifdef CONFIG_PPC_PS3 #include "ohci-ps3.c" Index: ehci-hcd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ehci-hcd.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ehci-hcd.c 25 Oct 2009 18:56:56 -0000 1.4 --- ehci-hcd.c 25 Oct 2009 18:59:28 -0000 1.5 *************** *** 1108,1111 **** --- 1108,1116 ---- #endif + #ifdef CONFIG_USB_EHCI_HCD_MIPC + #include "ehci-mipc.c" + #define OF_PLATFORM_DRIVER ehci_hcd_mipc_driver + #endif + #ifdef CONFIG_PLAT_ORION #include "ehci-orion.c" |
From: Albert H. <he...@us...> - 2009-10-25 18:59:41
|
Update of /cvsroot/gc-linux/linux/drivers/net In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/drivers/net Modified Files: Kconfig Makefile gcn-bba.c Log Message: Merge gc-linux-v2.6.31. Index: gcn-bba.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/gcn-bba.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** gcn-bba.c 25 Oct 2009 18:50:27 -0000 1.19 --- gcn-bba.c 25 Oct 2009 18:59:28 -0000 1.20 *************** *** 350,357 **** packet_len:12, next_packet_ptr:12; ! #else __u32 next_packet_ptr:12, packet_len:12, status:8; #endif } __attribute((packed)); --- 350,359 ---- packet_len:12, next_packet_ptr:12; ! #elif defined(__LITTLE_ENDIAN_BITFIELD) __u32 next_packet_ptr:12, packet_len:12, status:8; + #else + #error "Unsupported byte order." #endif } __attribute((packed)); *************** *** 717,721 **** /* move read pointer to next packet */ ! bba_out12(BBA_RRP, rrp = descr.next_packet_ptr); /* get write pointer and continue */ --- 719,724 ---- /* move read pointer to next packet */ ! rrp = descr.next_packet_ptr; ! bba_out12(BBA_RRP, rrp); /* get write pointer and continue */ *************** *** 1089,1092 **** --- 1092,1105 ---- } + static const struct net_device_ops bba_netdev_ops = { + .ndo_open = bba_open, + .ndo_stop = bba_close, + .ndo_start_xmit = bba_start_xmit, + .ndo_get_stats = bba_get_stats, + .ndo_change_mtu = eth_change_mtu, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_mac_address = eth_mac_addr, + }; + /* * Initializes a BroadBand Adapter device. *************** *** 1111,1118 **** /* network device hooks */ ! dev->open = bba_open; ! dev->stop = bba_close; ! dev->hard_start_xmit = bba_start_xmit; ! dev->get_stats = bba_get_stats; priv = netdev_priv(dev); --- 1124,1128 ---- /* network device hooks */ ! dev->netdev_ops = &bba_netdev_ops; priv = netdev_priv(dev); Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/Makefile,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** Makefile 25 Oct 2009 18:56:56 -0000 1.37 --- Makefile 25 Oct 2009 18:59:28 -0000 1.38 *************** *** 242,245 **** --- 242,246 ---- obj-$(CONFIG_ENC28J60) += enc28j60.o obj-$(CONFIG_ETHOC) += ethoc.o + obj-$(CONFIG_GAMECUBE_BBA) += gcn-bba.o obj-$(CONFIG_XTENSA_XT2000_SONIC) += xtsonic.o Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/Kconfig,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** Kconfig 25 Oct 2009 18:56:56 -0000 1.43 --- Kconfig 25 Oct 2009 18:59:28 -0000 1.44 *************** *** 271,274 **** --- 271,283 ---- will be called bmac. + config GAMECUBE_BBA + tristate "Nintendo GameCube ethernet BroadBand Adapter (BBA)" + depends on GAMECUBE_EXI && GAMECUBE + help + Say Y here to add ethernet support for the Broadband Adapter (BBA). + + To compile this driver as a module, choose M here: the module + will be called gcn-bba. + config ARIADNE tristate "Ariadne support" |
From: Albert H. <he...@us...> - 2009-10-25 18:59:41
|
Update of /cvsroot/gc-linux/linux/drivers/gpio In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/drivers/gpio Modified Files: gpiolib.c Log Message: Merge gc-linux-v2.6.31. Index: gpiolib.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/gpio/gpiolib.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gpiolib.c 25 Oct 2009 18:53:45 -0000 1.6 --- gpiolib.c 25 Oct 2009 18:59:28 -0000 1.7 *************** *** 1006,1009 **** --- 1006,1027 ---- EXPORT_SYMBOL_GPL(gpio_direction_output); + /** + * gpio_direction_is_output - tell if a gpio is configured as an output + * @gpio: gpio in question + * + * Returns a negative errno if the given gpio is not valid. + * Returns a positive non-zero if the gpio is configured as an output. + * Returns zero otherwise. + */ + int gpio_direction_is_output(unsigned gpio) + { + struct gpio_desc *desc = &gpio_desc[gpio]; + + if (!gpio_is_valid(gpio)) + return -EINVAL; + + return test_bit(FLAG_IS_OUT, &desc->flags); + } + EXPORT_SYMBOL_GPL(gpio_direction_is_output); /* I/O calls are only valid after configuration completed; the relevant |
From: Albert H. <he...@us...> - 2009-10-25 18:59:41
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv751/drivers/block Modified Files: Kconfig Makefile gcn-aram.c gcn-sd.c rvl-mem2.c rvl-stsd.c Log Message: Merge gc-linux-v2.6.31. Index: gcn-aram.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-aram.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** gcn-aram.c 2 Mar 2009 18:50:14 -0000 1.20 --- gcn-aram.c 25 Oct 2009 18:59:27 -0000 1.21 *************** *** 89,93 **** */ struct aram_drvdata { ! spinlock_t lock; spinlock_t io_lock; --- 89,93 ---- */ struct aram_drvdata { ! spinlock_t queue_lock; spinlock_t io_lock; *************** *** 99,103 **** struct request_queue *queue; ! struct request *req; dma_addr_t dma_addr; size_t dma_len; --- 99,103 ---- struct request_queue *queue; ! struct request *req; /* protected by ->io_lock */ dma_addr_t dma_addr; size_t dma_len; *************** *** 169,190 **** out_be16(csr_reg, csr); ! /* pick up current request being serviced */ req = drvdata->req; drvdata->req = NULL; ! ! spin_unlock_irqrestore(&drvdata->io_lock, flags); ! ! if (req) { ! __blk_end_request(req, 0, req->current_nr_sectors << 9); dma_unmap_single(drvdata->dev, drvdata->dma_addr, drvdata->dma_len, rq_dir_to_dma_dir(req)); ! spin_lock(&drvdata->lock); ! blk_start_queue(drvdata->queue); ! spin_unlock(&drvdata->lock); ! } else { drv_printk(KERN_ERR, "ignoring interrupt, no request\n"); } return IRQ_HANDLED; } --- 169,195 ---- out_be16(csr_reg, csr); ! /* pick up request in service */ req = drvdata->req; drvdata->req = NULL; ! if (drvdata->dma_len) { dma_unmap_single(drvdata->dev, drvdata->dma_addr, drvdata->dma_len, rq_dir_to_dma_dir(req)); ! drvdata->dma_len = 0; ! } ! ! spin_unlock_irqrestore(&drvdata->io_lock, flags); ! ! if (!req) { drv_printk(KERN_ERR, "ignoring interrupt, no request\n"); + goto out; } + spin_lock(&drvdata->queue_lock); + __blk_end_request_cur(req, 0); + blk_start_queue(drvdata->queue); + spin_unlock(&drvdata->queue_lock); + + out: return IRQ_HANDLED; } *************** *** 197,251 **** size_t len; unsigned long flags; ! req = elv_next_request(q); while (req) { spin_lock_irqsave(&drvdata->io_lock, flags); - - /* we schedule a single request each time */ if (drvdata->req) { - spin_unlock_irqrestore(&drvdata->io_lock, flags); blk_stop_queue(q); - break; - } - - blkdev_dequeue_request(req); - - /* ignore requests that we can't handle */ - if (!blk_fs_request(req)) { spin_unlock_irqrestore(&drvdata->io_lock, flags); ! continue; } ! /* store the request being handled */ ! drvdata->req = req; ! blk_stop_queue(q); ! spin_unlock_irqrestore(&drvdata->io_lock, flags); /* calculate the ARAM address and length */ ! aram_addr = req->sector << 9; ! len = req->current_nr_sectors << 9; /* give up if the request goes out of bounds */ if (aram_addr + len > ARAM_BUFFERSIZE) { drv_printk(KERN_ERR, "bad access: block=%lu," ! " size=%u\n", (unsigned long)req->sector, len); ! /* XXX correct? the request is already dequeued */ ! end_request(req, 0); ! continue; } ! BUG_ON(req->nr_phys_segments != 1); ! /* perform DMA mappings */ drvdata->dma_len = len; drvdata->dma_addr = dma_map_single(drvdata->dev, req->buffer, len, rq_dir_to_dma_dir(req)); - - /* start the DMA transfer */ aram_start_dma_transfer(drvdata, aram_addr); break; } } --- 202,250 ---- size_t len; unsigned long flags; + int error; ! req = blk_peek_request(q); while (req) { spin_lock_irqsave(&drvdata->io_lock, flags); if (drvdata->req) { blk_stop_queue(q); spin_unlock_irqrestore(&drvdata->io_lock, flags); ! break; } ! blk_start_request(req); ! error = -EIO; ! if (!blk_fs_request(req)) ! goto done; /* calculate the ARAM address and length */ ! aram_addr = blk_rq_pos(req) << 9; ! len = blk_rq_cur_bytes(req); /* give up if the request goes out of bounds */ if (aram_addr + len > ARAM_BUFFERSIZE) { drv_printk(KERN_ERR, "bad access: block=%lu," ! " size=%u\n", (unsigned long)blk_rq_pos(req), len); ! goto done; } ! drvdata->req = req; ! spin_unlock_irqrestore(&drvdata->io_lock, flags); ! /* perform DMA mappings and start the transfer */ drvdata->dma_len = len; drvdata->dma_addr = dma_map_single(drvdata->dev, req->buffer, len, rq_dir_to_dma_dir(req)); aram_start_dma_transfer(drvdata, aram_addr); + + /* one request at a time */ break; + done: + spin_unlock_irqrestore(&drvdata->io_lock, flags); + if (!__blk_end_request_cur(req, error)) + req = blk_peek_request(q); } } *************** *** 262,266 **** int retval = 0; ! spin_lock_irqsave(&drvdata->lock, flags); /* only allow a minor of 0 to be opened */ --- 261,265 ---- int retval = 0; ! spin_lock_irqsave(&drvdata->queue_lock, flags); /* only allow a minor of 0 to be opened */ *************** *** 283,287 **** out: ! spin_unlock_irqrestore(&drvdata->lock, flags); return retval; } --- 282,286 ---- out: ! spin_unlock_irqrestore(&drvdata->queue_lock, flags); return retval; } *************** *** 292,301 **** unsigned long flags; ! spin_lock_irqsave(&drvdata->lock, flags); if (drvdata->ref_count > 0) drvdata->ref_count--; else drvdata->ref_count = 0; ! spin_unlock_irqrestore(&drvdata->lock, flags); return 0; --- 291,300 ---- unsigned long flags; ! spin_lock_irqsave(&drvdata->queue_lock, flags); if (drvdata->ref_count > 0) drvdata->ref_count--; else drvdata->ref_count = 0; ! spin_unlock_irqrestore(&drvdata->queue_lock, flags); return 0; *************** *** 336,346 **** retval = -ENOMEM; ! spin_lock_init(&drvdata->lock); spin_lock_init(&drvdata->io_lock); ! queue = blk_init_queue(aram_do_request, &drvdata->lock); if (!queue) goto err_blk_init_queue; ! blk_queue_hardsect_size(queue, ARAM_SECTOR_SIZE); blk_queue_dma_alignment(queue, ARAM_DMA_ALIGN); blk_queue_max_phys_segments(queue, 1); --- 335,345 ---- retval = -ENOMEM; ! spin_lock_init(&drvdata->queue_lock); spin_lock_init(&drvdata->io_lock); ! queue = blk_init_queue(aram_do_request, &drvdata->queue_lock); if (!queue) goto err_blk_init_queue; ! blk_queue_logical_block_size(queue, ARAM_SECTOR_SIZE); blk_queue_dma_alignment(queue, ARAM_DMA_ALIGN); blk_queue_max_phys_segments(queue, 1); Index: gcn-sd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-sd.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** gcn-sd.c 2 Mar 2009 18:48:17 -0000 1.17 --- gcn-sd.c 25 Oct 2009 18:59:27 -0000 1.18 *************** *** 1091,1095 **** */ ! start = req->sector << KERNEL_SECTOR_SHIFT; #if 0 nr_blocks = req->current_nr_sectors >> --- 1091,1095 ---- */ ! start = blk_rq_pos(req) << KERNEL_SECTOR_SHIFT; #if 0 nr_blocks = req->current_nr_sectors >> *************** *** 1097,1101 **** block_len = 1 << host->card.csd.read_blkbits; #else ! nr_blocks = req->current_nr_sectors; block_len = 1 << KERNEL_SECTOR_SHIFT; #endif --- 1097,1101 ---- block_len = 1 << host->card.csd.read_blkbits; #else ! nr_blocks = blk_rq_cur_sectors(req); block_len = 1 << KERNEL_SECTOR_SHIFT; #endif *************** *** 1135,1140 **** /* kernel sectors and card write blocks are both 512 bytes long */ ! start = req->sector << KERNEL_SECTOR_SHIFT; ! nr_blocks = req->current_nr_sectors; block_len = 1 << KERNEL_SECTOR_SHIFT; --- 1135,1140 ---- /* kernel sectors and card write blocks are both 512 bytes long */ ! start = blk_rq_pos(req) << KERNEL_SECTOR_SHIFT; ! nr_blocks = blk_rq_cur_sectors(req); block_len = 1 << KERNEL_SECTOR_SHIFT; *************** *** 1160,1164 **** * <0 in case of error. * 0 if request passes the checks - * >0 if request can be ignored */ static int sd_check_request(struct sd_host *host, struct request *req) --- 1160,1163 ---- *************** *** 1166,1169 **** --- 1165,1171 ---- unsigned long nr_sectors; + if (!blk_fs_request(req)) + return -EIO; + if (test_bit(__SD_MEDIA_CHANGED, &host->flags)) { sd_printk(KERN_ERR, "media changed, aborting\n"); *************** *** 1177,1188 **** /* keep our reads within limits */ ! if (req->sector + req->current_nr_sectors > nr_sectors) { sd_printk(KERN_ERR, "reading past end, aborting\n"); return -EINVAL; } - if (!blk_fs_request(req)) - return 1; - return 0; } --- 1179,1187 ---- /* keep our reads within limits */ ! if (blk_rq_pos(req) + blk_rq_cur_sectors(req) > nr_sectors) { sd_printk(KERN_ERR, "reading past end, aborting\n"); return -EINVAL; } return 0; } *************** *** 1193,1212 **** static int sd_do_request(struct sd_host *host, struct request *req) { ! int retval; ! retval = sd_check_request(host, req); ! if (retval) ! return 0; switch (rq_data_dir(req)) { case WRITE: ! retval = sd_write_request(host, req); break; case READ: ! retval = sd_read_request(host, req); break; } ! return retval; } --- 1192,1215 ---- static int sd_do_request(struct sd_host *host, struct request *req) { ! int nr_sectors = 0; ! int error; ! error = sd_check_request(host, req); ! if (error) { ! nr_sectors = error; ! goto out; ! } switch (rq_data_dir(req)) { case WRITE: ! nr_sectors = sd_write_request(host, req); break; case READ: ! nr_sectors = sd_read_request(host, req); break; } ! out: ! return nr_sectors; } *************** *** 1240,1244 **** spin_lock_irqsave(&host->queue_lock, flags); if (!blk_queue_plugged(host->queue)) ! req = elv_next_request(host->queue); spin_unlock_irqrestore(&host->queue_lock, flags); --- 1243,1247 ---- spin_lock_irqsave(&host->queue_lock, flags); if (!blk_queue_plugged(host->queue)) ! req = blk_fetch_request(host->queue); spin_unlock_irqrestore(&host->queue_lock, flags); *************** *** 1402,1406 **** /* inform the block layer about various sizes */ ! blk_queue_hardsect_size(host->queue, 1 << KERNEL_SECTOR_SHIFT); set_capacity(host->disk, host->card.csd.capacity << (host->card.csd.read_blkbits - KERNEL_SECTOR_SHIFT)); --- 1405,1409 ---- /* inform the block layer about various sizes */ ! blk_queue_logical_block_size(host->queue, 1 << KERNEL_SECTOR_SHIFT); set_capacity(host->disk, host->card.csd.capacity << (host->card.csd.read_blkbits - KERNEL_SECTOR_SHIFT)); Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Kconfig,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** Kconfig 25 Oct 2009 18:56:56 -0000 1.41 --- Kconfig 25 Oct 2009 18:59:27 -0000 1.42 *************** *** 64,67 **** --- 64,132 ---- module will be called z2ram. + config GAMECUBE_SD + tristate "Nintendo GameCube/Wii MMC/SD card" + depends on GAMECUBE_EXI + help + This enables support for using SD and MMC cards through + the Nintendo SD Card Adapter (DOL-019) or compatible hardware. + + You probably want to compile FAT support, and the required + codepages, or mount will complain. See Filesystems -> DOS/FAT/NT + filesystems and Filesystems -> Native Language Support + + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called gcn-sd. + + config GAMECUBE_ARAM + tristate "Nintendo GameCube Auxiliary RAM (ARAM)" + depends on GAMECUBE + help + This enables support for using the 16MB of ARAM found in the + Nintendo GameCube as a block device. + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called gcn-aram. + + config GAMECUBE_DI + tristate "Nintendo GameCube Disk Interface (DI)" + depends on GAMECUBE + help + This enables support for using the DVD drive unit found + in the Nintendo GameCube. + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called gcn-di. + + config WII_MEM2 + tristate "Nintendo Wii MEM2" + depends on WII + help + This enables support for using the MEM2 found in the + Nintendo Wii as a block device. + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called rvl-mem2. + + config WII_SD + tristate "Nintendo Wii front slot MMC/SD" + depends on STARLET_IOS + help + This enables support for MMC/SD cards using the front SD card + slot of the Nintendo Wii. + + You probably want to compile FAT support, and the required + codepages, or mount will complain. See Filesystems -> DOS/FAT/NT + filesystems and Filesystems -> Native Language Support + + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called rvl-stsd. + config BLK_DEV_XD tristate "XT hard disk support" Index: rvl-mem2.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/rvl-mem2.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** rvl-mem2.c 25 Oct 2009 18:50:27 -0000 1.7 --- rvl-mem2.c 25 Oct 2009 18:59:28 -0000 1.8 *************** *** 73,108 **** int error; ! req = elv_next_request(q); while (req) { ! if (blk_fs_request(req)) { ! /* calculate the MEM2 address and length */ ! mem2_addr = req->sector << 9; ! len = req->current_nr_sectors << 9; ! /* give up if the request goes out of bounds */ ! if (mem2_addr + len > drvdata->size) { ! drv_printk(KERN_ERR, "bad access: block=%lu," ! " size=%u\n", ! (unsigned long)req->sector, len); ! error = -EIO; ! } else { ! switch (rq_data_dir(req)) { ! case READ: ! memcpy(req->buffer, ! drvdata->io_base + mem2_addr, ! len); ! break; ! case WRITE: ! memcpy(drvdata->io_base + mem2_addr, ! req->buffer, len); ! break; ! } ! error = 0; ! } ! __blk_end_request(req, error, len); ! } else { ! end_request(req, 0); } ! req = elv_next_request(q); } } --- 73,108 ---- int error; ! req = blk_fetch_request(q); while (req) { ! error = -EIO; ! if (!blk_fs_request(req)) ! goto done; ! ! /* calculate the MEM2 address and length */ ! mem2_addr = blk_rq_pos(req) << 9; ! len = blk_rq_cur_bytes(req); ! ! /* give up if the request goes out of bounds */ ! if (mem2_addr + len > drvdata->size) { ! drv_printk(KERN_ERR, "bad access: block=%lu," ! " size=%zu\n", ! (unsigned long)blk_rq_pos(req), len); ! goto done; } ! ! switch (rq_data_dir(req)) { ! case READ: ! memcpy(req->buffer, drvdata->io_base + mem2_addr, len); ! break; ! case WRITE: ! memcpy(drvdata->io_base + mem2_addr, req->buffer, len); ! break; ! } ! error = 0; ! ! done: ! if (!__blk_end_request_cur(req, error)); ! req = blk_fetch_request(q); } } *************** *** 198,202 **** goto err_blk_init_queue; ! blk_queue_hardsect_size(queue, MEM2_SECTOR_SIZE); blk_queue_max_phys_segments(queue, 1); blk_queue_max_hw_segments(queue, 1); --- 198,202 ---- goto err_blk_init_queue; ! blk_queue_logical_block_size(queue, MEM2_SECTOR_SIZE); blk_queue_max_phys_segments(queue, 1); blk_queue_max_hw_segments(queue, 1); Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Makefile,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** Makefile 25 Oct 2009 18:56:56 -0000 1.29 --- Makefile 25 Oct 2009 18:59:27 -0000 1.30 *************** *** 14,17 **** --- 14,22 ---- obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o + obj-$(CONFIG_GAMECUBE_SD) += gcn-sd.o + obj-$(CONFIG_GAMECUBE_ARAM) += gcn-aram.o + obj-$(CONFIG_GAMECUBE_DI) += gcn-di/ + obj-$(CONFIG_WII_MEM2) += rvl-mem2.o + obj-$(CONFIG_WII_SD) += rvl-stsd.o obj-$(CONFIG_BLK_DEV_RAM) += brd.o obj-$(CONFIG_BLK_DEV_LOOP) += loop.o Index: rvl-stsd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/rvl-stsd.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** rvl-stsd.c 25 Oct 2009 18:50:27 -0000 1.8 --- rvl-stsd.c 25 Oct 2009 18:59:28 -0000 1.9 *************** *** 1724,1734 **** } - /* - * Returns >0 if a request should be dispatched. - */ static int stsd_check_request(struct stsd_host *host, struct request *req) { unsigned long nr_sectors; if (test_bit(__STSD_MEDIA_CHANGED, &host->flags)) { drv_printk(KERN_ERR, "media changed, aborting\n"); --- 1724,1734 ---- } static int stsd_check_request(struct stsd_host *host, struct request *req) { unsigned long nr_sectors; + if (!blk_fs_request(req)) + return -EIO; + if (test_bit(__STSD_MEDIA_CHANGED, &host->flags)) { drv_printk(KERN_ERR, "media changed, aborting\n"); *************** *** 1742,1754 **** /* keep our reads within limits */ ! if (req->sector + req->current_nr_sectors > nr_sectors) { drv_printk(KERN_ERR, "reading past end, aborting\n"); return -EINVAL; } ! if (!blk_fs_request(req)) ! return 0; ! ! return 1; } --- 1742,1751 ---- /* keep our reads within limits */ ! if (blk_rq_pos(req) + blk_rq_cur_sectors(req) > nr_sectors) { drv_printk(KERN_ERR, "reading past end, aborting\n"); return -EINVAL; } ! return 0; } *************** *** 1758,1774 **** unsigned long start; int write; - int uptodate; int error; ! uptodate = stsd_check_request(host, req); ! if (uptodate <= 0) ! return uptodate; write = (rq_data_dir(req) == READ) ? 0 : 1; ! start = req->sector; if (!stsd_card_is_sdhc(host)) start <<= KERNEL_SECTOR_SHIFT; ! nr_blocks = req->current_nr_sectors; error = stsd_do_block_transfer(host, write, --- 1755,1770 ---- unsigned long start; int write; int error; ! error = stsd_check_request(host, req); ! if (error) ! goto out; write = (rq_data_dir(req) == READ) ? 0 : 1; ! start = blk_rq_pos(req); if (!stsd_card_is_sdhc(host)) start <<= KERNEL_SECTOR_SHIFT; ! nr_blocks = blk_rq_cur_sectors(req); error = stsd_do_block_transfer(host, write, *************** *** 1778,1781 **** --- 1774,1778 ---- error, error, start); + out: return error; } *************** *** 1797,1801 **** spin_lock_irqsave(&host->queue_lock, flags); if (!blk_queue_plugged(host->queue)) ! req = elv_next_request(host->queue); spin_unlock_irqrestore(&host->queue_lock, flags); --- 1794,1798 ---- spin_lock_irqsave(&host->queue_lock, flags); if (!blk_queue_plugged(host->queue)) ! req = blk_fetch_request(host->queue); spin_unlock_irqrestore(&host->queue_lock, flags); *************** *** 1814,1818 **** spin_lock_irqsave(&host->queue_lock, flags); ! __blk_end_request(req, error, blk_rq_bytes(req)); spin_unlock_irqrestore(&host->queue_lock, flags); } --- 1811,1815 ---- spin_lock_irqsave(&host->queue_lock, flags); ! __blk_end_request_cur(req, error); spin_unlock_irqrestore(&host->queue_lock, flags); } *************** *** 1825,1829 **** { struct stsd_host *host = q->queuedata; - wake_up_process(host->io_thread); } --- 1822,1825 ---- *************** *** 1959,1963 **** /* inform the block layer about various sizes */ ! blk_queue_hardsect_size(host->queue, KERNEL_SECTOR_SIZE); set_capacity(host->disk, host->card.csd.capacity << (host->card.csd.read_blkbits - KERNEL_SECTOR_SHIFT)); --- 1955,1959 ---- /* inform the block layer about various sizes */ ! blk_queue_logical_block_size(host->queue, KERNEL_SECTOR_SIZE); set_capacity(host->disk, host->card.csd.capacity << (host->card.csd.read_blkbits - KERNEL_SECTOR_SHIFT)); |