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...> - 2008-03-18 18:57:44
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/configs In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv23948/arch/powerpc/configs Modified Files: wii_defconfig Log Message: Added starlet ipc driver and starlet stm routines. Signed-off-by: Albert Herranz <alb...@ya...> Index: wii_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/configs/wii_defconfig,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- wii_defconfig 4 Mar 2008 06:20:55 -0000 1.1 +++ wii_defconfig 18 Mar 2008 18:57:14 -0000 1.2 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.24 -# Tue Mar 4 06:39:01 2008 +# Tue Mar 18 19:19:03 2008 # # CONFIG_PPC64 is not set @@ -239,10 +239,10 @@ CONFIG_KERNEL_START=0xc0000000 CONFIG_TASK_SIZE_BOOL=y CONFIG_TASK_SIZE=0x80000000 -# CONFIG_CONSISTENT_START_BOOL is not set +CONFIG_CONSISTENT_START_BOOL=y CONFIG_CONSISTENT_START=0xff100000 -# CONFIG_CONSISTENT_SIZE_BOOL is not set -CONFIG_CONSISTENT_SIZE=0x00200000 +CONFIG_CONSISTENT_SIZE_BOOL=y +CONFIG_CONSISTENT_SIZE=0x00010000 CONFIG_BOOT_LOAD=0x00800000 # @@ -338,7 +338,73 @@ # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set -# CONFIG_MTD is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set + +# +# User Modules And Translation Layers +# +# CONFIG_MTD_CHAR is not set +CONFIG_MTD_BLKDEVS=y +# CONFIG_MTD_BLOCK is not set +# CONFIG_MTD_BLOCK_RO is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_RAM=y +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PLATRAM=y + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +CONFIG_MTD_PHRAM=y +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_ONENAND is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set CONFIG_OF_DEVICE=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y @@ -735,6 +801,7 @@ # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set +# CONFIG_JFFS2_FS is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set |
From: Albert H. <he...@us...> - 2008-03-18 18:57:20
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv23948/arch/powerpc/platforms/embedded6xx Modified Files: Makefile gamecube.c gamecube.h Added Files: starlet-ipc.c starlet-stm.c Log Message: Added starlet ipc driver and starlet stm routines. Signed-off-by: Albert Herranz <alb...@ya...> Index: gamecube.h =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/gamecube.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gamecube.h 4 Mar 2008 06:20:55 -0000 1.1 +++ gamecube.h 18 Mar 2008 18:57:17 -0000 1.2 @@ -24,14 +24,18 @@ #define GCN_IO2_BASE (0xc0000000 | GCN_IO2_PHYS_BASE) /* - * There are 14 IRQs in total. Each has a corresponding bit in both + * Each interrupt has a corresponding bit in both * the Interrupt Cause (ICR) and Interrupt Mask (IMR) registers. * * Enabling/disabling an interrupt line involves asserting/clearing * the corresponding bit in IMR. ACK'ing a request simply involves * asserting the corresponding bit in ICR. */ +#ifdef CONFIG_GAMECUBE_WII +#define FLIPPER_NR_IRQS (15) +#else #define FLIPPER_NR_IRQS (14) +#endif #define FLIPPER_ICR ((void __iomem *)(GCN_IO1_BASE+0x3000)) #define FLIPPER_IMR ((void __iomem *)(GCN_IO1_BASE+0x3004)) Index: gamecube.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/gamecube.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gamecube.c 4 Mar 2008 06:20:55 -0000 1.1 +++ gamecube.c 18 Mar 2008 18:57:17 -0000 1.2 @@ -27,6 +27,8 @@ #include <asm/prom.h> #include <asm/lmb.h> +#include <asm/starlet.h> + #include "gamecube.h" #include "ugecon.h" @@ -86,12 +88,20 @@ static void gamecube_restart(char *cmd) { +#ifdef CONFIG_GAMECUBE_WII + starlet_stm_restart(); +#else local_irq_disable(); out_8(FLIPPER_RESET, 0x00); +#endif } static void gamecube_power_off(void) { +#ifdef CONFIG_GAMECUBE_WII + starlet_stm_power_off(); + /* falldown */ +#endif local_irq_disable(); for (;;); /* spin until power button pressed */ } Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile 4 Mar 2008 06:20:55 -0000 1.1 +++ Makefile 18 Mar 2008 18:57:16 -0000 1.2 @@ -6,5 +6,6 @@ obj-$(CONFIG_PPC_HOLLY) += holly.o obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o obj-$(CONFIG_GAMECUBE) += gamecube.o +obj-$(CONFIG_GAMECUBE_WII) += starlet-ipc.o starlet-stm.o obj-$(CONFIG_GAMECUBE_RESET) += gcn-rsw.o obj-$(CONFIG_USBGECKO_EARLY_CONSOLE) += ugecon.o --- NEW FILE: starlet-ipc.c --- /* * arch/powerpc/platforms/embedded6xx/starlet-ipc.c * * Nintendo Wii starlet IPC driver * Copyright (C) 2008 The GameCube Linux Team * Copyright (C) 2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/device.h> #include <linux/platform_device.h> #include <linux/ioport.h> #include <linux/interrupt.h> #include <linux/dmapool.h> #include <linux/dma-mapping.h> #include <linux/string.h> #include <asm/io.h> #include <asm/bitops.h> #include <asm/starlet.h> #ifdef CONFIG_PPC_MERGE #include <platforms/embedded6xx/gamecube.h> #else #include <platforms/gamecube.h> #endif #define DRV_MODULE_NAME "starlet-ipc" #define DRV_DESCRIPTION "Nintendo Wii starlet IPC driver" #define DRV_AUTHOR "Albert Herranz" static char starlet_ipc_driver_version[] = "0.1-isobel"; #define PFX DRV_MODULE_NAME ": " #define ipc_printk(level, format, arg...) \ printk(level PFX format , ## arg) #ifdef SD_DEBUG # define DBG(fmt, args...) \ printk(KERN_ERR "%s: " fmt, __FUNCTION__ , ## args) #else # define DBG(fmt, args...) #endif #define STARLET_IPC_BASE 0x0d000000 #define STARLET_IPC_SIZE 0x40 #define STARLET_IPC_IRQ 14 #define STARLET_IPC_DMA_ALIGN 0x1f /* 32 bytes */ /* * Hardware registers */ #define STARLET_IPC_TXBUF 0x00 /* data from cpu to starlet */ #define STARLET_IPC_CSR 0x04 #define STARLET_IPC_CSR_TSTART (1<<0) /* start transmit */ #define STARLET_IPC_CSR_TBEI (1<<1) /* tx buf empty int */ #define STARLET_IPC_CSR_RBFI (1<<2) /* rx buf full int */ #define STARLET_IPC_CSR_INT (1<<3) /* interrupt ack */ #define STARLET_IPC_CSR_RBFIMASK (1<<4) /* rx buf full int mask */ #define STARLET_IPC_CSR_TBEIMASK (1<<5) /* tx buf empty int mask */ #define STARLET_IPC_RXBUF 0x08 /* data from starlet to cpu */ #define STARLET_IPC_ISR 0x30 /* IOS calls */ #define STARLET_IOS_OPEN 0x01 #define STARLET_IOS_CLOSE 0x02 #define STARLET_IOS_IOCTL 0x06 /* starlet_ipc_device flags */ enum { __TX_INUSE = 0, /* tx buffer in use flag */ }; struct starlet_ipc_request { /* begin starlet hardware request format */ u32 cmd; s32 result; union { s32 fd; u32 req_cmd; }; union { struct { dma_addr_t pathname; u32 mode; } open; struct { u32 request; dma_addr_t ibuf; u32 ilen; dma_addr_t obuf; u32 olen; } ioctl; u32 argv[5]; }; /* end starlet hardware request format */ struct starlet_ipc_device *ipc_dev; struct list_head node; dma_addr_t dma_addr; void *done_data; void (*done) (struct starlet_ipc_request * req); }; /* * * Hardware. */ /* * */ static inline void starlet_ipc_update_csr(void __iomem * io_base, u32 val) { u32 csr; csr = in_be32(io_base + STARLET_IPC_CSR); /* preserve interrupt masks */ csr &= STARLET_IPC_CSR_RBFIMASK | STARLET_IPC_CSR_TBEIMASK; csr |= val; out_be32(io_base + STARLET_IPC_CSR, csr); } /* * */ static inline void starlet_ipc_sendto(void __iomem * io_base, u32 data) { out_be32(io_base + STARLET_IPC_TXBUF, data); } /* * */ static inline u32 starlet_ipc_recvfrom(void __iomem * io_base) { return in_be32(io_base + STARLET_IPC_RXBUF); } /* * */ static void starlet_ipc_eoi(void __iomem * io_base) { starlet_ipc_update_csr(io_base, STARLET_IPC_CSR_INT); out_be32(io_base + STARLET_IPC_ISR, 0x40000000); /* huh? */ } /* * */ static void starlet_ipc_quiesce(struct starlet_ipc_device *ipc_dev) { u32 csr; /* ack and disable MBOX? and REPLY interrupts */ csr = in_be32(ipc_dev->io_base + STARLET_IPC_CSR); csr &= ~(STARLET_IPC_CSR_TBEIMASK | STARLET_IPC_CSR_RBFIMASK); csr |= STARLET_IPC_CSR_TBEI | STARLET_IPC_CSR_RBFI; out_be32(ipc_dev->io_base + STARLET_IPC_CSR, csr); } /* * Requests. * */ /* * */ static void starlet_ipc_debug_print_request(struct starlet_ipc_request *req) { DBG("cmd=%x, result=%d, fd=%x, dma_addr=%p\n", req->cmd, req->result, req->fd, (void *)req->dma_addr); } /* * */ static struct starlet_ipc_request *starlet_ipc_alloc_request(struct starlet_ipc_device *ipc_dev) { struct starlet_ipc_request *req; dma_addr_t dma_addr; req = dma_pool_alloc(ipc_dev->dma_pool, GFP_KERNEL, &dma_addr); if (req) { req->ipc_dev = ipc_dev; req->result = 0xdeadbeef; req->dma_addr = dma_addr; INIT_LIST_HEAD(&req->node); } return req; } /* * */ void starlet_ipc_free_request(struct starlet_ipc_request *req) { dma_pool_free(req->ipc_dev->dma_pool, req, req->dma_addr); } /* * */ static void starlet_ipc_start_request(struct starlet_ipc_request *req) { struct starlet_ipc_device *ipc_dev = req->ipc_dev; void __iomem *io_base = ipc_dev->io_base; unsigned long flags; DBG("start_request\n"); starlet_ipc_debug_print_request(req); spin_lock_irqsave(&ipc_dev->list_lock, flags); list_add_tail(&req->node, &ipc_dev->outstanding_list); ipc_dev->nr_outstanding++; spin_unlock_irqrestore(&ipc_dev->list_lock, flags); starlet_ipc_sendto(io_base, (u32) req->dma_addr); starlet_ipc_update_csr(io_base, STARLET_IPC_CSR_TSTART); } /* * */ static void starlet_ipc_complete_request(struct starlet_ipc_request *req) { struct starlet_ipc_device *ipc_dev = req->ipc_dev; unsigned long flags; spin_lock_irqsave(&ipc_dev->list_lock, flags); list_del(&req->node); ipc_dev->nr_outstanding--; spin_unlock_irqrestore(&ipc_dev->list_lock, flags); DBG("complete_request\n"); starlet_ipc_debug_print_request(req); if (req->done) req->done(req); } /* * */ static void starlet_ipc_submit_request(struct starlet_ipc_request *req) { struct starlet_ipc_device *ipc_dev = req->ipc_dev; unsigned long flags; if (test_and_set_bit(__TX_INUSE, &ipc_dev->flags)) { spin_lock_irqsave(&ipc_dev->list_lock, flags); list_add_tail(&req->node, &ipc_dev->pending_list); ipc_dev->nr_pending++; spin_unlock_irqrestore(&ipc_dev->list_lock, flags); } else { starlet_ipc_start_request(req); } } /* * */ static struct starlet_ipc_request * starlet_ipc_find_request_by_bus_addr(struct starlet_ipc_device *ipc_dev, dma_addr_t req_bus_addr) { struct starlet_ipc_request *req; unsigned long flags; spin_lock_irqsave(&ipc_dev->list_lock, flags); list_for_each_entry(req, &ipc_dev->outstanding_list, node) { if (req && req_bus_addr == req->dma_addr) { spin_unlock_irqrestore(&ipc_dev->list_lock, flags); return req; } } spin_unlock_irqrestore(&ipc_dev->list_lock, flags); return NULL; } /* * Interrupt handlers. * */ /* * Transmit Buffer Empty Interrupt. */ static int starlet_ipc_dispatch_tbei(struct starlet_ipc_device *ipc_dev) { struct starlet_ipc_request *req = NULL; struct list_head *pending = &ipc_dev->pending_list; unsigned long flags; DBG("tx buf empty interrupt!\n"); spin_lock_irqsave(&ipc_dev->list_lock, flags); if (!list_empty(pending)) { req = list_entry(pending->next, struct starlet_ipc_request, node); list_del_init(&req->node); ipc_dev->nr_pending--; } spin_unlock_irqrestore(&ipc_dev->list_lock, flags); if (req) starlet_ipc_start_request(req); else clear_bit(__TX_INUSE, &ipc_dev->flags); return IRQ_HANDLED; } /* * Receive Buffer Full Interrupt. */ static int starlet_ipc_dispatch_rbfi(struct starlet_ipc_device *ipc_dev) { void __iomem *io_base = ipc_dev->io_base; struct starlet_ipc_request *req; unsigned long req_bus_addr; DBG("rx buf full interrupt!\n"); req_bus_addr = starlet_ipc_recvfrom(io_base); req = starlet_ipc_find_request_by_bus_addr(ipc_dev, req_bus_addr); if (req) { starlet_ipc_complete_request(req); } else { ipc_printk(KERN_WARNING, "unknown request, bus=%p\n", (void *)req_bus_addr); } return IRQ_HANDLED; } typedef int (*ipc_handler_t) (struct starlet_ipc_device *); /* * */ static int starlet_ipc_cond_dispatch_irq(struct starlet_ipc_device *ipc_dev, u32 irqmask, u32 irq, ipc_handler_t handler) { void __iomem *io_base = ipc_dev->io_base; u32 csr; int retval = IRQ_NONE; csr = in_be32(io_base + STARLET_IPC_CSR); if ((csr & (irqmask | irq)) == (irqmask | irq)) { retval = handler(ipc_dev); if (retval == IRQ_HANDLED) { starlet_ipc_update_csr(io_base, irq); starlet_ipc_eoi(io_base); } } return retval; } /* * */ static irqreturn_t starlet_ipc_handler(int irq, void *data) { struct starlet_ipc_device *ipc_dev = (struct starlet_ipc_device *)data; int retval; /* starlet read a request */ retval = starlet_ipc_cond_dispatch_irq(ipc_dev, STARLET_IPC_CSR_TBEIMASK, STARLET_IPC_CSR_TBEI, starlet_ipc_dispatch_tbei); if (retval == IRQ_HANDLED) return retval; /* starlet wrote a reply */ retval = starlet_ipc_cond_dispatch_irq(ipc_dev, STARLET_IPC_CSR_RBFIMASK, STARLET_IPC_CSR_RBFI, starlet_ipc_dispatch_rbfi); return retval; } /* * IPC Calls. * */ /* * Internal. Completion routine. */ static void starlet_ipc_wait_done(struct starlet_ipc_request *req) { complete(req->done_data); } /* * */ static int starlet_ipc_call_and_wait(struct starlet_ipc_request *req) { DECLARE_COMPLETION(complete); req->done_data = &complete; req->done = starlet_ipc_wait_done; starlet_ipc_submit_request(req); wait_for_completion(&complete); return req->result; } /* * * IOS High level interfaces. */ static struct starlet_ipc_device *starlet_ipc_device_instance; /* * */ struct starlet_ipc_device *starlet_ipc_get_device(void) { if (!starlet_ipc_device_instance) ipc_printk(KERN_ERR, "uninitialized device instance!\n"); return starlet_ipc_device_instance; } EXPORT_SYMBOL_GPL(starlet_ipc_get_device); /* private aligned buffer for device pathnames */ DEFINE_MUTEX(buf_aligned_pathname_lock); static char buf_aligned_pathname[64] __attribute__ ((aligned(STARLET_IPC_DMA_ALIGN + 1))); /* * */ int starlet_ios_open(const char *pathname, int flags) { struct starlet_ipc_device *ipc_dev = starlet_ipc_get_device(); struct starlet_ipc_request *req; dma_addr_t dma_addr; void *vaddr = (void *)pathname; size_t len; int use_private_buf; int retval = -ENOMEM; if (!ipc_dev) return -ENODEV; len = strlen(pathname) + 1; use_private_buf = !IS_ALIGNED((unsigned long)pathname, STARLET_IPC_DMA_ALIGN + 1); req = starlet_ipc_alloc_request(ipc_dev); if (req) { if (use_private_buf) { mutex_lock(&buf_aligned_pathname_lock); /* FIXME: check pathname length */ strcpy(buf_aligned_pathname, pathname); vaddr = buf_aligned_pathname; } dma_addr = dma_map_single(&ipc_dev->pdev.dev, vaddr, len, DMA_TO_DEVICE); req->cmd = STARLET_IOS_OPEN; req->open.pathname = dma_addr; /* bus address */ req->open.mode = flags; retval = starlet_ipc_call_and_wait(req); if (use_private_buf) { dma_unmap_single(&ipc_dev->pdev.dev, dma_addr, len, DMA_TO_DEVICE); mutex_unlock(&buf_aligned_pathname_lock); } starlet_ipc_free_request(req); } return retval; } EXPORT_SYMBOL_GPL(starlet_ios_open); /* * */ int starlet_ios_close(int fd) { struct starlet_ipc_device *ipc_dev = starlet_ipc_get_device(); struct starlet_ipc_request *req; int retval = -ENOMEM; if (!ipc_dev) return -ENODEV; req = starlet_ipc_alloc_request(ipc_dev); if (req) { req->cmd = STARLET_IOS_CLOSE; req->fd = fd; retval = starlet_ipc_call_and_wait(req); starlet_ipc_free_request(req); } return retval; } EXPORT_SYMBOL_GPL(starlet_ios_close); /* * */ int starlet_ios_ioctl(int fd, int request, dma_addr_t ibuf, size_t ilen, dma_addr_t obuf, size_t olen) { struct starlet_ipc_device *ipc_dev = starlet_ipc_get_device(); struct starlet_ipc_request *req; int retval = -EINVAL; if (!ipc_dev) return -ENODEV; req = starlet_ipc_alloc_request(ipc_dev); if (req) { req->cmd = STARLET_IOS_IOCTL; req->fd = fd; req->ioctl.request = (u32) request; req->ioctl.ibuf = ibuf; req->ioctl.ilen = ilen; req->ioctl.obuf = obuf; req->ioctl.olen = olen; retval = starlet_ipc_call_and_wait(req); starlet_ipc_free_request(req); } return retval; } EXPORT_SYMBOL_GPL(starlet_ios_ioctl); /* * Platform driver interface. * */ /* * */ static int starlet_ipc_init_irq(struct starlet_ipc_device *ipc_dev) { int retval; int irq = platform_get_irq(&ipc_dev->pdev, 0); retval = request_irq(irq, starlet_ipc_handler, 0, DRV_MODULE_NAME, ipc_dev); if (retval) { ipc_printk(KERN_ERR, "request of irq%d failed\n", irq); } else { /* ack and enable MBOX? and REPLY interrupts */ out_be32(ipc_dev->io_base + STARLET_IPC_CSR, STARLET_IPC_CSR_TBEIMASK | STARLET_IPC_CSR_RBFIMASK | STARLET_IPC_CSR_TBEI | STARLET_IPC_CSR_RBFI); } return retval; } /* * */ static void starlet_ipc_exit_irq(struct starlet_ipc_device *ipc_dev) { int irq = platform_get_irq(&ipc_dev->pdev, 0); starlet_ipc_quiesce(ipc_dev); free_irq(irq, ipc_dev); } /* * */ static int starlet_ipc_probe(struct platform_device *pdev) { struct starlet_ipc_device *ipc_dev = to_ipc_dev(pdev); struct resource *mem; size_t size; int retval; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) { ipc_printk(KERN_ERR, "failed to determine io address range\n"); return -ENODEV; } memset(ipc_dev, 0, sizeof(*ipc_dev) - sizeof(ipc_dev->pdev)); ipc_dev->io_base = ioremap(mem->start, mem->end - mem->start + 1); if (!ipc_dev->io_base) { ipc_printk(KERN_ERR, "ioremap from %p to %p failed\n", (void *)mem->start, (void *)mem->end); return -EINVAL; } size = max((size_t) 128, sizeof(struct starlet_ipc_request)); ipc_dev->dma_pool = dma_pool_create(DRV_MODULE_NAME, &ipc_dev->pdev.dev, size, STARLET_IPC_DMA_ALIGN + 1, 0); if (!ipc_dev->dma_pool) { ipc_printk(KERN_ERR, "dma_pool_create failed\n"); iounmap(ipc_dev->io_base); return -ENOMEM; } spin_lock_init(&ipc_dev->list_lock); INIT_LIST_HEAD(&ipc_dev->pending_list); INIT_LIST_HEAD(&ipc_dev->outstanding_list); starlet_ipc_device_instance = ipc_dev; retval = starlet_ipc_init_irq(ipc_dev); if (retval) { starlet_ipc_device_instance = NULL; dma_pool_destroy(ipc_dev->dma_pool); iounmap(ipc_dev->io_base); return retval; } return 0; } /* * */ static int starlet_ipc_remove(struct platform_device *pdev) { struct starlet_ipc_device *ipc_dev = to_ipc_dev(pdev); iounmap(ipc_dev->io_base); starlet_ipc_exit_irq(ipc_dev); return 0; } static struct platform_driver starlet_ipc_driver = { .probe = starlet_ipc_probe, .remove = starlet_ipc_remove, .driver = { .name = DRV_MODULE_NAME, }, }; static struct resource starlet_ipc_resources[] = { [0] = { .start = STARLET_IPC_BASE, .end = STARLET_IPC_BASE + STARLET_IPC_SIZE - 1, .flags = IORESOURCE_MEM, }, [1] = { .start = STARLET_IPC_IRQ, .end = STARLET_IPC_IRQ, .flags = IORESOURCE_IRQ, }, }; static struct starlet_ipc_device starlet_ipc_device = { .pdev = { .name = DRV_MODULE_NAME, .id = 0, .num_resources = ARRAY_SIZE(starlet_ipc_resources), .resource = starlet_ipc_resources, }, }; /* * Kernel module interface. * */ /* * */ static int __init starlet_ipc_init(void) { int retval; ipc_printk(KERN_INFO, "%s - version %s\n", DRV_DESCRIPTION, starlet_ipc_driver_version); retval = platform_driver_register(&starlet_ipc_driver); if (!retval) { retval = platform_device_register(&starlet_ipc_device.pdev); if (retval) platform_driver_unregister(&starlet_ipc_driver); } return retval; } /* * */ static void __exit starlet_ipc_exit(void) { platform_device_unregister(&starlet_ipc_device.pdev); platform_driver_unregister(&starlet_ipc_driver); } module_init(starlet_ipc_init); module_exit(starlet_ipc_exit); --- NEW FILE: starlet-stm.c --- /* * arch/powerpc/platforms/embedded6xx/starlet-stm.c * * Nintendo Wii starlet STM routines * Copyright (C) 2008 The GameCube Linux Team * Copyright (C) 2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #include <linux/kernel.h> #include <linux/dma-mapping.h> #include <asm/starlet.h> /* * /dev/stm/immediate * */ #define STARLET_STM_HOTRESET 0x2001 #define STARLET_STM_SHUTDOWN 0x2003 #define STARLET_DEV_STM_IMMEDIATE "/dev/stm/immediate" static const char dev_stm_immediate[] = STARLET_DEV_STM_IMMEDIATE; /* private aligned buffer for restart/power_off operations */ static u32 starlet_stm_buf[(STARLET_IPC_DMA_ALIGN+1)/sizeof(u32)] __attribute__ ((aligned (STARLET_IPC_DMA_ALIGN+1))); /* * */ static void starlet_stm_common_restart(int request, u32 value) { struct starlet_ipc_device *ipc_dev = starlet_ipc_get_device(); dma_addr_t dma_addr; u32 *vaddr = starlet_stm_buf; size_t len = sizeof(starlet_stm_buf); int fd; if (!ipc_dev) return; fd = starlet_ios_open(dev_stm_immediate, 0); if (fd >= 0) { *vaddr = value; dma_addr = dma_map_single(&ipc_dev->pdev.dev, vaddr, len, DMA_BIDIRECTIONAL); starlet_ios_ioctl(fd, request, dma_addr, len, dma_addr, len); dma_unmap_single(&ipc_dev->pdev.dev, dma_addr, len, DMA_BIDIRECTIONAL); starlet_ios_close(fd); } } /* * */ void starlet_stm_restart(void) { starlet_stm_common_restart(STARLET_STM_HOTRESET, 0); } //EXPORT_SYMBOL_GPL(starlet_stm_restart); /* * */ void starlet_stm_power_off(void) { starlet_stm_common_restart(STARLET_STM_SHUTDOWN, 0); } //EXPORT_SYMBOL_GPL(starlet_stm_power_off); |
From: Albert H. <he...@us...> - 2008-03-18 18:57:17
|
Update of /cvsroot/gc-linux/linux/include/asm-powerpc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv23948/include/asm-powerpc Added Files: starlet.h Log Message: Added starlet ipc driver and starlet stm routines. Signed-off-by: Albert Herranz <alb...@ya...> --- NEW FILE: starlet.h --- /* * include/asm-powerpc/starlet.h * * Nintendo Wii starlet processor definitions * Copyright (C) 2008 The GameCube Linux Team * Copyright (C) 2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #ifndef __ASM_POWERPC_STARLET_H #define __ASM_POWERPC_STARLET_H #include <linux/types.h> #include <linux/spinlock_types.h> #include <linux/dmapool.h> #include <linux/list.h> #include <linux/platform_device.h> #define STARLET_IPC_DMA_ALIGN 0x1f /* 32 bytes */ struct starlet_ipc_device { void __iomem *io_base; unsigned long flags; struct dma_pool *dma_pool; spinlock_t list_lock; struct list_head outstanding_list; unsigned long nr_outstanding; struct list_head pending_list; unsigned long nr_pending; struct platform_device pdev; }; #define to_ipc_dev(n) container_of(n,struct starlet_ipc_device,pdev) /* from starlet-ipc.c */ extern struct starlet_ipc_device *starlet_ipc_get_device(void); extern int starlet_ios_open(const char *pathname, int flags); extern int starlet_ios_close(int fd); extern int starlet_ios_ioctl(int fd, int request, dma_addr_t ibuf, size_t ilen, dma_addr_t obuf, size_t olen); /* from starlet-stm.c */ extern void starlet_stm_restart(void); extern void starlet_stm_power_off(void); #endif /* __ASM_POWERPC_STARLET_H */ |
From: Albert H. <he...@us...> - 2008-03-18 18:57:16
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv23948/drivers/block Modified Files: rvl-mem2.c Log Message: Added starlet ipc driver and starlet stm routines. Signed-off-by: Albert Herranz <alb...@ya...> Index: rvl-mem2.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/rvl-mem2.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- rvl-mem2.c 4 Mar 2008 06:06:07 -0000 1.1 +++ rvl-mem2.c 18 Mar 2008 18:57:18 -0000 1.2 @@ -50,7 +50,7 @@ /* * Driver settings */ -#define MEM2_NAME "rvlmem2" +#define MEM2_NAME DRV_MODULE_NAME #define MEM2_MAJOR Z2RAM_MAJOR #define MEM2_SECTOR_SIZE PAGE_SIZE |
From: Albert H. <he...@us...> - 2008-03-18 18:49:02
|
Update of /cvsroot/gc-linux/linux/include/asm-powerpc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv19261/asm-powerpc Log Message: Directory /cvsroot/gc-linux/linux/include/asm-powerpc added to the repository |
From: Albert H. <he...@us...> - 2008-03-04 06:20:57
|
Update of /cvsroot/gc-linux/linux/drivers/misc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/drivers/misc Modified Files: gcn-mi.c Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. Index: gcn-mi.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/misc/gcn-mi.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gcn-mi.c 14 Nov 2007 23:08:49 -0000 1.6 +++ gcn-mi.c 4 Mar 2008 06:20:56 -0000 1.7 @@ -24,7 +24,11 @@ #include <asm/io.h> #include "gcn-mi.h" -#include "../../arch/ppc/platforms/gamecube.h" +#ifdef CONFIG_PPC_MERGE +#include <platforms/embedded6xx/gamecube.h> +#else +#include <platforms/gamecube.h> +#endif #define MI_IRQ 7 |
From: Albert H. <he...@us...> - 2008-03-04 06:20:56
|
Update of /cvsroot/gc-linux/linux/drivers/video In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/drivers/video Modified Files: gcnfb.c gcngx.c Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. Index: gcnfb.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/video/gcnfb.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- gcnfb.c 14 Nov 2007 23:08:55 -0000 1.16 +++ gcnfb.c 4 Mar 2008 06:20:56 -0000 1.17 @@ -31,7 +31,13 @@ #include <linux/wait.h> #include <linux/platform_device.h> #include <asm/io.h> + +#ifdef CONFIG_PPC_MERGE +#include <platforms/embedded6xx/gamecube.h> +#else #include <platforms/gamecube.h> +#endif + #include "gcngx.h" #define DRV_MODULE_NAME "gcnfb" @@ -47,7 +53,7 @@ #define VI_IRQ 8 -#define VI_BASE 0xcc002000 +#define VI_BASE (GCN_IO1_BASE+0x2000) #define VI_SIZE 0x100 #define VI_IO_BASE ((void __iomem *)VI_BASE) Index: gcngx.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/video/gcngx.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- gcngx.c 14 Nov 2007 23:08:56 -0000 1.12 +++ gcngx.c 4 Mar 2008 06:20:56 -0000 1.13 @@ -30,7 +30,13 @@ #include <asm/pgtable.h> #include <asm/atomic.h> #include <asm/cacheflush.h> + +#ifdef CONFIG_PPC_MERGE +#include <platforms/embedded6xx/gamecube.h> +#else #include <platforms/gamecube.h> +#endif + #include "gcngx.h" /* Function definitions */ |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/configs In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/powerpc/configs Added Files: gamecube_defconfig wii_defconfig Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: wii_defconfig --- # # Automatically generated make config: don't edit # Linux kernel version: 2.6.24 # Tue Mar 4 06:39:01 2008 # # CONFIG_PPC64 is not set # # Processor support # CONFIG_6xx=y # CONFIG_PPC_85xx is not set # CONFIG_PPC_8xx is not set # CONFIG_40x is not set # CONFIG_44x is not set # CONFIG_E200 is not set CONFIG_PPC_FPU=y # CONFIG_ALTIVEC is not set CONFIG_PPC_STD_MMU=y CONFIG_PPC_STD_MMU_32=y # CONFIG_PPC_MM_SLICES is not set # CONFIG_SMP is not set CONFIG_NOT_COHERENT_CACHE=y CONFIG_PPC32=y CONFIG_WORD_SIZE=32 CONFIG_PPC_MERGE=y CONFIG_MMU=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_HARDIRQS=y CONFIG_IRQ_PER_CPU=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_ILOG2_U32=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_FIND_NEXT_BIT=y # CONFIG_ARCH_NO_VIRT_TO_BUS is not set CONFIG_PPC=y CONFIG_EARLY_PRINTK=y CONFIG_GENERIC_NVRAM=y CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_PPC_OF=y CONFIG_OF=y # CONFIG_PPC_UDBG_16550 is not set # CONFIG_GENERIC_TBSYNC is not set CONFIG_AUDIT_ARCH=y CONFIG_GENERIC_BUG=y # CONFIG_DEFAULT_UIMAGE is not set # CONFIG_PPC_DCR_NATIVE is not set # CONFIG_PPC_DCR_MMIO is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="-isobel-wii" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_USER_NS is not set # CONFIG_PID_NS is not set # CONFIG_AUDIT is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_CGROUPS is not set CONFIG_FAIR_GROUP_SCHED=y CONFIG_FAIR_USER_SCHED=y # CONFIG_FAIR_CGROUP_SCHED is not set CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_EMBEDDED=y CONFIG_SYSCTL_SYSCALL=y # CONFIG_KALLSYMS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y # CONFIG_ELF_CORE is not set CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_KMOD=y CONFIG_BLOCK=y CONFIG_LBD=y # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_LSF is not set # CONFIG_BLK_DEV_BSG is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y CONFIG_DEFAULT_AS=y # CONFIG_DEFAULT_DEADLINE is not set # CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="anticipatory" # # Platform support # CONFIG_PPC_MULTIPLATFORM=y # CONFIG_PPC_82xx is not set # CONFIG_PPC_83xx is not set # CONFIG_PPC_86xx is not set CONFIG_CLASSIC32=y # CONFIG_PPC_CHRP is not set # CONFIG_PPC_MPC52xx is not set # CONFIG_PPC_MPC5200 is not set # CONFIG_PPC_EFIKA is not set # CONFIG_PPC_LITE5200 is not set # CONFIG_PPC_PMAC is not set # CONFIG_PPC_CELL is not set # CONFIG_PPC_CELL_NATIVE is not set # CONFIG_PQ2ADS is not set CONFIG_EMBEDDED6xx=y # CONFIG_LINKSTATION is not set # CONFIG_MPC7448HPC2 is not set # CONFIG_PPC_HOLLY is not set # CONFIG_PPC_PRPMC2800 is not set CONFIG_GAMECUBE=y CONFIG_GAMECUBE_WII=y CONFIG_GAMECUBE_RESET=y CONFIG_USBGECKO_EARLY_CONSOLE=y # CONFIG_MPIC is not set # CONFIG_MPIC_WEIRD is not set # CONFIG_PPC_I8259 is not set # CONFIG_PPC_RTAS is not set # CONFIG_MMIO_NVRAM is not set # CONFIG_PPC_MPC106 is not set # CONFIG_PPC_970_NAP is not set # CONFIG_PPC_INDIRECT_IO is not set # CONFIG_GENERIC_IOMAP is not set # CONFIG_CPU_FREQ is not set # CONFIG_TAU is not set # CONFIG_CPM2 is not set # CONFIG_FSL_ULI1575 is not set # # Kernel options # # CONFIG_HIGHMEM is not set # CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set CONFIG_GENERIC_CLOCKEVENTS_BUILD=y # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=250 # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_BKL=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_KEXEC=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_RESOURCES_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_PROC_DEVICETREE=y # CONFIG_CMDLINE_BOOL is not set # CONFIG_PM is not set CONFIG_SUSPEND_UP_POSSIBLE=y CONFIG_HIBERNATION_UP_POSSIBLE=y # CONFIG_SECCOMP is not set CONFIG_WANT_DEVICE_TREE=y CONFIG_DEVICE_TREE="wii.dts" CONFIG_ISA_DMA_API=y # # Bus options # CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y # CONFIG_PCI is not set # CONFIG_PCI_DOMAINS is not set # CONFIG_PCI_SYSCALL is not set # CONFIG_ARCH_SUPPORTS_MSI is not set # CONFIG_PCCARD is not set # # Advanced setup # CONFIG_ADVANCED_OPTIONS=y CONFIG_HIGHMEM_START=0xfe000000 CONFIG_LOWMEM_SIZE_BOOL=y CONFIG_LOWMEM_SIZE=0x01800000 # CONFIG_KERNEL_START_BOOL is not set CONFIG_KERNEL_START=0xc0000000 CONFIG_TASK_SIZE_BOOL=y CONFIG_TASK_SIZE=0x80000000 # CONFIG_CONSISTENT_START_BOOL is not set CONFIG_CONSISTENT_START=0xff100000 # CONFIG_CONSISTENT_SIZE_BOOL is not set CONFIG_CONSISTENT_SIZE=0x00200000 CONFIG_BOOT_LOAD=0x00800000 # # Networking # CONFIG_NET=y # # Networking options # CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_UNIX=y # CONFIG_NET_KEY is not set CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_FIB_HASH=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_ARPD is not set # CONFIG_SYN_COOKIES is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_TUNNEL is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_BEET is not set # CONFIG_INET_LRO is not set # CONFIG_INET_DIAG is not set # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETFILTER is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_NET_SCHED is not set # # Network testing # # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set # # Wireless # # CONFIG_CFG80211 is not set # CONFIG_WIRELESS_EXT is not set # CONFIG_MAC80211 is not set # CONFIG_IEEE80211 is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set # # Device Drivers # # # Generic Driver Options # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" # CONFIG_STANDALONE is not set CONFIG_PREVENT_FIRMWARE_BUILD=y # CONFIG_FW_LOADER is not set # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set CONFIG_OF_DEVICE=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_FD is not set CONFIG_GAMECUBE_SD=y CONFIG_WII_MEM2=y # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=2 CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set CONFIG_MISC_DEVICES=y CONFIG_GAMECUBE_GQR=y CONFIG_GAMECUBE_MI=m # CONFIG_EEPROM_93CX6 is not set # CONFIG_IDE is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set # CONFIG_SCSI is not set # CONFIG_SCSI_DMA is not set # CONFIG_SCSI_NETLINK is not set # CONFIG_ATA is not set # CONFIG_MD is not set # CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=y # CONFIG_NETDEVICES_MULTIQUEUE is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_VETH is not set # CONFIG_PHYLIB is not set CONFIG_NET_ETHERNET=y # CONFIG_MII is not set # CONFIG_IBM_NEW_EMAC_ZMII is not set # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set # CONFIG_B44 is not set # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set # # Wireless LAN # # CONFIG_WLAN_PRE80211 is not set # CONFIG_WLAN_80211 is not set # CONFIG_WAN is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set # CONFIG_ISDN is not set # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y # CONFIG_INPUT_FF_MEMLESS is not set # CONFIG_INPUT_POLLDEV is not set # # Userland interfaces # # CONFIG_INPUT_MOUSEDEV is not set CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_INPUT_MOUSE is not set CONFIG_INPUT_JOYSTICK=y # CONFIG_JOYSTICK_ANALOG is not set # CONFIG_JOYSTICK_A3D is not set # CONFIG_JOYSTICK_ADI is not set # CONFIG_JOYSTICK_COBRA is not set # CONFIG_JOYSTICK_GF2K is not set # CONFIG_JOYSTICK_GRIP is not set # CONFIG_JOYSTICK_GRIP_MP is not set # CONFIG_JOYSTICK_GUILLEMOT is not set # CONFIG_JOYSTICK_INTERACT is not set # CONFIG_JOYSTICK_SIDEWINDER is not set # CONFIG_JOYSTICK_TMDC is not set # CONFIG_JOYSTICK_IFORCE is not set # CONFIG_JOYSTICK_WARRIOR is not set # CONFIG_JOYSTICK_MAGELLAN is not set # CONFIG_JOYSTICK_SPACEORB is not set # CONFIG_JOYSTICK_SPACEBALL is not set # CONFIG_JOYSTICK_STINGER is not set # CONFIG_JOYSTICK_TWIDJOY is not set # CONFIG_JOYSTICK_JOYDUMP is not set # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_MISC is not set # # Hardware I/O ports # CONFIG_SERIO=y # CONFIG_SERIO_I8042 is not set # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_LIBPS2 is not set # CONFIG_SERIO_RAW is not set # CONFIG_GAMEPORT is not set CONFIG_GAMECUBE_SI=y # # Character devices # CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set # CONFIG_SERIAL_NONSTANDARD is not set # # Serial drivers # # CONFIG_SERIAL_8250 is not set # # Non-8250 serial port support # # CONFIG_SERIAL_UARTLITE is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_USBGECKO=y CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 # CONFIG_IPMI_HANDLER is not set # CONFIG_HW_RANDOM is not set CONFIG_NVRAM=y CONFIG_GEN_RTC=y # CONFIG_GEN_RTC_X is not set # CONFIG_R3964 is not set # CONFIG_RAW_DRIVER is not set # CONFIG_TCG_TPM is not set # CONFIG_I2C is not set # # EXI (Expansion Interface) support # CONFIG_GAMECUBE_EXI=y CONFIG_GAMECUBE_RTC=y # # SPI support # # CONFIG_SPI is not set # CONFIG_SPI_MASTER is not set # CONFIG_W1 is not set # CONFIG_POWER_SUPPLY is not set # CONFIG_HWMON is not set # CONFIG_WATCHDOG is not set # # Sonics Silicon Backplane # CONFIG_SSB_POSSIBLE=y # CONFIG_SSB is not set # # Multifunction device drivers # # CONFIG_MFD_SM501 is not set # # Multimedia devices # # CONFIG_VIDEO_DEV is not set # CONFIG_DVB_CORE is not set # CONFIG_DAB is not set # # Graphics support # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set # CONFIG_FB_SYS_FILLRECT is not set # CONFIG_FB_SYS_COPYAREA is not set # CONFIG_FB_SYS_IMAGEBLIT is not set # CONFIG_FB_SYS_FOPS is not set CONFIG_FB_DEFERRED_IO=y # CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set # CONFIG_FB_BACKLIGHT is not set # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set # # Frame buffer hardware drivers # # CONFIG_FB_OF is not set # CONFIG_FB_VGA16 is not set # CONFIG_FB_S1D13XXX is not set CONFIG_FB_GAMECUBE=y CONFIG_FB_GAMECUBE_GX=y # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Display device support # # CONFIG_DISPLAY_SUPPORT is not set # # Console display driver support # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set CONFIG_LOGO_GAMECUBE_CLUT224=y # # Sound # CONFIG_SOUND=y # # Advanced Linux Sound Architecture # CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_SEQUENCER=y # CONFIG_SND_SEQ_DUMMY is not set CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=y CONFIG_SND_PCM_OSS=y CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y # CONFIG_SND_DYNAMIC_MINORS is not set CONFIG_SND_SUPPORT_OLD_API=y # CONFIG_SND_VERBOSE_PROCFS is not set # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set # # Generic devices # # CONFIG_SND_DUMMY is not set # CONFIG_SND_VIRMIDI is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set # # ALSA PowerMac devices # # # ALSA PowerMac requires I2C # # # ALSA PowerPC devices # CONFIG_SND_GAMECUBE=y CONFIG_SND_GAMECUBE_MIC=y # # System on Chip audio support # # CONFIG_SND_SOC is not set # # SoC Audio support for SuperH # # # Open Sound System # # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y # CONFIG_HID_DEBUG is not set # CONFIG_HIDRAW is not set # CONFIG_USB_SUPPORT is not set # CONFIG_MMC is not set # CONFIG_NEW_LEDS is not set # CONFIG_EDAC is not set # CONFIG_RTC_CLASS is not set # # Userspace I/O # # CONFIG_UIO is not set # # File systems # CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y # CONFIG_EXT3_FS_POSIX_ACL is not set # CONFIG_EXT3_FS_SECURITY is not set # CONFIG_EXT4DEV_FS is not set CONFIG_JBD=y CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set # CONFIG_DNOTIFY is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set # CONFIG_FUSE_FS is not set # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=y CONFIG_JOLIET=y # CONFIG_ZISOFS is not set # CONFIG_UDF_FS is not set # CONFIG_GCDVD_FS is not set # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set # CONFIG_HUGETLB_PAGE is not set # CONFIG_CONFIGFS_FS is not set # # Miscellaneous filesystems # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set CONFIG_HFS_FS=m # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_NFS_V3_ACL is not set # CONFIG_NFS_V4 is not set # CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_ROOT_NFS=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y # CONFIG_SUNRPC_BIND34 is not set # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set CONFIG_CIFS=y # CONFIG_CIFS_STATS is not set # CONFIG_CIFS_WEAK_PW_HASH is not set # CONFIG_CIFS_XATTR is not set # CONFIG_CIFS_DEBUG2 is not set # CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set # CONFIG_NLS_CODEPAGE_850 is not set # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ASCII is not set CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_UTF8 is not set # CONFIG_DLM is not set # CONFIG_UCC_SLOW is not set # # Library routines # CONFIG_BITREVERSE=y CONFIG_CRC_CCITT=y # CONFIG_CRC16 is not set # CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC7 is not set # CONFIG_LIBCRC32C is not set CONFIG_ZLIB_INFLATE=y CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_INSTRUMENTATION=y # CONFIG_PROFILING is not set # CONFIG_MARKERS is not set # # Kernel hacking # # CONFIG_PRINTK_TIME is not set CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set # CONFIG_TIMER_STATS is not set # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_MUTEXES=y # CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_SG is not set CONFIG_FORCED_INLINING=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_SAMPLES is not set # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUGGER is not set # CONFIG_BDI_SWITCH is not set # CONFIG_BOOTX_TEXT is not set # CONFIG_PPC_EARLY_DEBUG is not set # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set # CONFIG_SECURITY_FILE_CAPABILITIES is not set # CONFIG_CRYPTO is not set # CONFIG_PPC_CLOCK is not set --- NEW FILE: gamecube_defconfig --- # # Automatically generated make config: don't edit # Linux kernel version: 2.6.24 # Tue Mar 4 06:45:23 2008 # # CONFIG_PPC64 is not set # # Processor support # CONFIG_6xx=y # CONFIG_PPC_85xx is not set # CONFIG_PPC_8xx is not set # CONFIG_40x is not set # CONFIG_44x is not set # CONFIG_E200 is not set CONFIG_PPC_FPU=y # CONFIG_ALTIVEC is not set CONFIG_PPC_STD_MMU=y CONFIG_PPC_STD_MMU_32=y # CONFIG_PPC_MM_SLICES is not set # CONFIG_SMP is not set CONFIG_NOT_COHERENT_CACHE=y CONFIG_PPC32=y CONFIG_WORD_SIZE=32 CONFIG_PPC_MERGE=y CONFIG_MMU=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_HARDIRQS=y CONFIG_IRQ_PER_CPU=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_ILOG2_U32=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_FIND_NEXT_BIT=y # CONFIG_ARCH_NO_VIRT_TO_BUS is not set CONFIG_PPC=y CONFIG_EARLY_PRINTK=y CONFIG_GENERIC_NVRAM=y CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_PPC_OF=y CONFIG_OF=y # CONFIG_PPC_UDBG_16550 is not set # CONFIG_GENERIC_TBSYNC is not set CONFIG_AUDIT_ARCH=y CONFIG_GENERIC_BUG=y # CONFIG_DEFAULT_UIMAGE is not set # CONFIG_PPC_DCR_NATIVE is not set # CONFIG_PPC_DCR_MMIO is not set CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="-isobel-gcn" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y # CONFIG_POSIX_MQUEUE is not set # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_USER_NS is not set # CONFIG_PID_NS is not set # CONFIG_AUDIT is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_CGROUPS is not set CONFIG_FAIR_GROUP_SCHED=y CONFIG_FAIR_USER_SCHED=y # CONFIG_FAIR_CGROUP_SCHED is not set CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_EMBEDDED=y CONFIG_SYSCTL_SYSCALL=y # CONFIG_KALLSYMS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y # CONFIG_ELF_CORE is not set CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_KMOD=y CONFIG_BLOCK=y CONFIG_LBD=y # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_LSF is not set # CONFIG_BLK_DEV_BSG is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y CONFIG_DEFAULT_AS=y # CONFIG_DEFAULT_DEADLINE is not set # CONFIG_DEFAULT_CFQ is not set # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="anticipatory" # # Platform support # CONFIG_PPC_MULTIPLATFORM=y # CONFIG_PPC_82xx is not set # CONFIG_PPC_83xx is not set # CONFIG_PPC_86xx is not set CONFIG_CLASSIC32=y # CONFIG_PPC_CHRP is not set # CONFIG_PPC_MPC52xx is not set # CONFIG_PPC_MPC5200 is not set # CONFIG_PPC_EFIKA is not set # CONFIG_PPC_LITE5200 is not set # CONFIG_PPC_PMAC is not set # CONFIG_PPC_CELL is not set # CONFIG_PPC_CELL_NATIVE is not set # CONFIG_PQ2ADS is not set CONFIG_EMBEDDED6xx=y # CONFIG_LINKSTATION is not set # CONFIG_MPC7448HPC2 is not set # CONFIG_PPC_HOLLY is not set # CONFIG_PPC_PRPMC2800 is not set CONFIG_GAMECUBE=y # CONFIG_GAMECUBE_WII is not set CONFIG_GAMECUBE_RESET=y CONFIG_USBGECKO_EARLY_CONSOLE=y # CONFIG_MPIC is not set # CONFIG_MPIC_WEIRD is not set # CONFIG_PPC_I8259 is not set # CONFIG_PPC_RTAS is not set # CONFIG_MMIO_NVRAM is not set # CONFIG_PPC_MPC106 is not set # CONFIG_PPC_970_NAP is not set # CONFIG_PPC_INDIRECT_IO is not set # CONFIG_GENERIC_IOMAP is not set # CONFIG_CPU_FREQ is not set # CONFIG_TAU is not set # CONFIG_CPM2 is not set # CONFIG_FSL_ULI1575 is not set # # Kernel options # # CONFIG_HIGHMEM is not set # CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set CONFIG_GENERIC_CLOCKEVENTS_BUILD=y # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=250 # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_BKL=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_KEXEC=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y # CONFIG_SPARSEMEM_STATIC is not set # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_RESOURCES_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_PROC_DEVICETREE=y # CONFIG_CMDLINE_BOOL is not set # CONFIG_PM is not set CONFIG_SUSPEND_UP_POSSIBLE=y CONFIG_HIBERNATION_UP_POSSIBLE=y # CONFIG_SECCOMP is not set CONFIG_WANT_DEVICE_TREE=y CONFIG_DEVICE_TREE="gamecube.dts" CONFIG_ISA_DMA_API=y # # Bus options # CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y # CONFIG_PCI is not set # CONFIG_PCI_DOMAINS is not set # CONFIG_PCI_SYSCALL is not set # CONFIG_ARCH_SUPPORTS_MSI is not set # CONFIG_PCCARD is not set # # Advanced setup # CONFIG_ADVANCED_OPTIONS=y CONFIG_HIGHMEM_START=0xfe000000 CONFIG_LOWMEM_SIZE_BOOL=y CONFIG_LOWMEM_SIZE=0x01800000 # CONFIG_KERNEL_START_BOOL is not set CONFIG_KERNEL_START=0xc0000000 CONFIG_TASK_SIZE_BOOL=y CONFIG_TASK_SIZE=0x80000000 # CONFIG_CONSISTENT_START_BOOL is not set CONFIG_CONSISTENT_START=0xff100000 # CONFIG_CONSISTENT_SIZE_BOOL is not set CONFIG_CONSISTENT_SIZE=0x00200000 CONFIG_BOOT_LOAD=0x00800000 # # Networking # CONFIG_NET=y # # Networking options # CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_UNIX=y # CONFIG_NET_KEY is not set CONFIG_INET=y # CONFIG_IP_MULTICAST is not set # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_FIB_HASH=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_ARPD is not set # CONFIG_SYN_COOKIES is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_TUNNEL is not set # CONFIG_INET_XFRM_MODE_TRANSPORT is not set # CONFIG_INET_XFRM_MODE_TUNNEL is not set # CONFIG_INET_XFRM_MODE_BEET is not set # CONFIG_INET_LRO is not set # CONFIG_INET_DIAG is not set # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set # CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETFILTER is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_NET_SCHED is not set # # Network testing # # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set # # Wireless # # CONFIG_CFG80211 is not set # CONFIG_WIRELESS_EXT is not set # CONFIG_MAC80211 is not set # CONFIG_IEEE80211 is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set # # Device Drivers # # # Generic Driver Options # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" # CONFIG_STANDALONE is not set CONFIG_PREVENT_FIRMWARE_BUILD=y # CONFIG_FW_LOADER is not set # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set CONFIG_OF_DEVICE=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_FD is not set CONFIG_GAMECUBE_DI=y CONFIG_GAMECUBE_ARAM=y CONFIG_GAMECUBE_SD=y # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=2 CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set CONFIG_MISC_DEVICES=y CONFIG_GAMECUBE_GQR=y CONFIG_GAMECUBE_MI=m # CONFIG_EEPROM_93CX6 is not set # CONFIG_IDE is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set # CONFIG_SCSI is not set # CONFIG_SCSI_DMA is not set # CONFIG_SCSI_NETLINK is not set # CONFIG_ATA is not set # CONFIG_MD is not set # CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=y # CONFIG_NETDEVICES_MULTIQUEUE is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_VETH is not set # CONFIG_PHYLIB is not set CONFIG_NET_ETHERNET=y # CONFIG_MII is not set CONFIG_GAMECUBE_BBA=y # CONFIG_IBM_NEW_EMAC_ZMII is not set # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set # CONFIG_B44 is not set # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set # # Wireless LAN # # CONFIG_WLAN_PRE80211 is not set # CONFIG_WLAN_80211 is not set # CONFIG_WAN is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set # CONFIG_ISDN is not set # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y # CONFIG_INPUT_FF_MEMLESS is not set # CONFIG_INPUT_POLLDEV is not set # # Userland interfaces # # CONFIG_INPUT_MOUSEDEV is not set CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_INPUT_MOUSE is not set CONFIG_INPUT_JOYSTICK=y # CONFIG_JOYSTICK_ANALOG is not set # CONFIG_JOYSTICK_A3D is not set # CONFIG_JOYSTICK_ADI is not set # CONFIG_JOYSTICK_COBRA is not set # CONFIG_JOYSTICK_GF2K is not set # CONFIG_JOYSTICK_GRIP is not set # CONFIG_JOYSTICK_GRIP_MP is not set # CONFIG_JOYSTICK_GUILLEMOT is not set # CONFIG_JOYSTICK_INTERACT is not set # CONFIG_JOYSTICK_SIDEWINDER is not set # CONFIG_JOYSTICK_TMDC is not set # CONFIG_JOYSTICK_IFORCE is not set # CONFIG_JOYSTICK_WARRIOR is not set # CONFIG_JOYSTICK_MAGELLAN is not set # CONFIG_JOYSTICK_SPACEORB is not set # CONFIG_JOYSTICK_SPACEBALL is not set # CONFIG_JOYSTICK_STINGER is not set # CONFIG_JOYSTICK_TWIDJOY is not set # CONFIG_JOYSTICK_JOYDUMP is not set # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_MISC is not set # # Hardware I/O ports # CONFIG_SERIO=y # CONFIG_SERIO_I8042 is not set # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_LIBPS2 is not set # CONFIG_SERIO_RAW is not set # CONFIG_GAMEPORT is not set CONFIG_GAMECUBE_SI=y # # Character devices # CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set # CONFIG_SERIAL_NONSTANDARD is not set # # Serial drivers # # CONFIG_SERIAL_8250 is not set # # Non-8250 serial port support # # CONFIG_SERIAL_UARTLITE is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_USBGECKO=y CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 # CONFIG_IPMI_HANDLER is not set # CONFIG_HW_RANDOM is not set CONFIG_NVRAM=y CONFIG_GEN_RTC=y # CONFIG_GEN_RTC_X is not set # CONFIG_R3964 is not set # CONFIG_RAW_DRIVER is not set # CONFIG_TCG_TPM is not set # CONFIG_I2C is not set # # EXI (Expansion Interface) support # CONFIG_GAMECUBE_EXI=y CONFIG_GAMECUBE_RTC=y # # SPI support # # CONFIG_SPI is not set # CONFIG_SPI_MASTER is not set # CONFIG_W1 is not set # CONFIG_POWER_SUPPLY is not set # CONFIG_HWMON is not set # CONFIG_WATCHDOG is not set # # Sonics Silicon Backplane # CONFIG_SSB_POSSIBLE=y # CONFIG_SSB is not set # # Multifunction device drivers # # CONFIG_MFD_SM501 is not set # # Multimedia devices # # CONFIG_VIDEO_DEV is not set # CONFIG_DVB_CORE is not set # CONFIG_DAB is not set # # Graphics support # # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set # CONFIG_FB_SYS_FILLRECT is not set # CONFIG_FB_SYS_COPYAREA is not set # CONFIG_FB_SYS_IMAGEBLIT is not set # CONFIG_FB_SYS_FOPS is not set CONFIG_FB_DEFERRED_IO=y # CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set # CONFIG_FB_BACKLIGHT is not set # CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set # # Frame buffer hardware drivers # # CONFIG_FB_OF is not set # CONFIG_FB_VGA16 is not set # CONFIG_FB_S1D13XXX is not set CONFIG_FB_GAMECUBE=y CONFIG_FB_GAMECUBE_GX=y # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Display device support # # CONFIG_DISPLAY_SUPPORT is not set # # Console display driver support # # CONFIG_VGA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_CLUT224 is not set CONFIG_LOGO_GAMECUBE_CLUT224=y # # Sound # CONFIG_SOUND=y # # Advanced Linux Sound Architecture # CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_SEQUENCER=y # CONFIG_SND_SEQ_DUMMY is not set CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=y CONFIG_SND_PCM_OSS=y CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y # CONFIG_SND_DYNAMIC_MINORS is not set CONFIG_SND_SUPPORT_OLD_API=y # CONFIG_SND_VERBOSE_PROCFS is not set # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set # # Generic devices # # CONFIG_SND_DUMMY is not set # CONFIG_SND_VIRMIDI is not set # CONFIG_SND_MTPAV is not set # CONFIG_SND_SERIAL_U16550 is not set # CONFIG_SND_MPU401 is not set # # ALSA PowerMac devices # # # ALSA PowerMac requires I2C # # # ALSA PowerPC devices # CONFIG_SND_GAMECUBE=y CONFIG_SND_GAMECUBE_MIC=y # # System on Chip audio support # # CONFIG_SND_SOC is not set # # SoC Audio support for SuperH # # # Open Sound System # # CONFIG_SOUND_PRIME is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y # CONFIG_HID_DEBUG is not set # CONFIG_HIDRAW is not set # CONFIG_USB_SUPPORT is not set # CONFIG_MMC is not set # CONFIG_NEW_LEDS is not set # CONFIG_EDAC is not set # CONFIG_RTC_CLASS is not set # # Userspace I/O # # CONFIG_UIO is not set # # File systems # CONFIG_EXT2_FS=y # CONFIG_EXT2_FS_XATTR is not set # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y # CONFIG_EXT3_FS_POSIX_ACL is not set # CONFIG_EXT3_FS_SECURITY is not set # CONFIG_EXT4DEV_FS is not set CONFIG_JBD=y CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set # CONFIG_DNOTIFY is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set # CONFIG_FUSE_FS is not set # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=y CONFIG_JOLIET=y # CONFIG_ZISOFS is not set # CONFIG_UDF_FS is not set # CONFIG_GCDVD_FS is not set # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set # CONFIG_HUGETLB_PAGE is not set # CONFIG_CONFIGFS_FS is not set # # Miscellaneous filesystems # # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set CONFIG_HFS_FS=m # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set CONFIG_CRAMFS=y # CONFIG_VXFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y # CONFIG_NFS_V3_ACL is not set # CONFIG_NFS_V4 is not set # CONFIG_NFS_DIRECTIO is not set # CONFIG_NFSD is not set CONFIG_ROOT_NFS=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y # CONFIG_SUNRPC_BIND34 is not set # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set CONFIG_CIFS=y # CONFIG_CIFS_STATS is not set # CONFIG_CIFS_WEAK_PW_HASH is not set # CONFIG_CIFS_XATTR is not set # CONFIG_CIFS_DEBUG2 is not set # CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set # CONFIG_NLS_CODEPAGE_850 is not set # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set # CONFIG_NLS_CODEPAGE_932 is not set # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ASCII is not set CONFIG_NLS_ISO8859_1=y # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_UTF8 is not set # CONFIG_DLM is not set # CONFIG_UCC_SLOW is not set # # Library routines # CONFIG_BITREVERSE=y CONFIG_CRC_CCITT=y # CONFIG_CRC16 is not set # CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC7 is not set # CONFIG_LIBCRC32C is not set CONFIG_ZLIB_INFLATE=y CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_INSTRUMENTATION=y # CONFIG_PROFILING is not set # CONFIG_MARKERS is not set # # Kernel hacking # # CONFIG_PRINTK_TIME is not set CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set # CONFIG_TIMER_STATS is not set # CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_MUTEXES=y # CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_SG is not set CONFIG_FORCED_INLINING=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_SAMPLES is not set # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUGGER is not set # CONFIG_BDI_SWITCH is not set # CONFIG_BOOTX_TEXT is not set # CONFIG_PPC_EARLY_DEBUG is not set # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set # CONFIG_SECURITY_FILE_CAPABILITIES is not set # CONFIG_CRYPTO is not set # CONFIG_PPC_CLOCK is not set |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/boot/dts In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/powerpc/boot/dts Added Files: gamecube.dts wii.dts Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: gamecube.dts --- /* * * */ /* /memreserve/ 01654000-017fffff; */ / { model = "NintendoGameCube"; compatible = "nintendo,gamecube"; #address-cells = <1>; #size-cells = <1>; chosen { bootargs = "root=/dev/ram0 video=gcnfb:tv=auto ip=192.168.001.047:192.168.001.253:192.168.001.251 force_keyboard_port=4"; }; memory { device_type = "memory"; /* 24M - framebuffer - fifo - kexec, 00000000-01653fff */ reg = <00000000 01654000>; }; cpus { #cpus = <1>; #address-cells = <1>; #size-cells = <0>; PowerPC,gekko@0 { device_type = "cpu"; reg = <0>; clock-frequency = <1cf7c580>; /* 486MHz */ bus-frequency = <9a7ec80>; /* 162MHz core-to-bus 3x */ timebase-frequency = <269fb20>; /* 162MHz / 4 */ /* Following required by dtc but not used */ i-cache-line-size = <20>; d-cache-line-size = <20>; i-cache-size = <8000>; d-cache-size = <8000>; }; }; }; --- NEW FILE: wii.dts --- /* * * */ /* /memreserve/ 01654000-017fffff; */ / { model = "NintendoWii"; compatible = "nintendo,gamecube"; #address-cells = <1>; #size-cells = <1>; chosen { bootargs = "root=/dev/ram0 video=gcnfb:tv=auto ip=192.168.001.047:192.168.001.253:192.168.001.251 force_keyboard_port=4"; }; memory { device_type = "memory"; /* 24M - framebuffer - fifo - kexec, 00000000-01653fff */ reg = <00000000 01654000>; }; cpus { #cpus = <1>; #address-cells = <1>; #size-cells = <0>; PowerPC,gekko@0 { device_type = "cpu"; reg = <0>; clock-frequency = <2b73a840>; /* 729MHz */ bus-frequency = <e7be2c0>; /* 243MHz core-to-bus 3x */ timebase-frequency = <39ef8b0>; /* 243MHz / 4 */ /* Following required by dtc but not used */ i-cache-line-size = <20>; d-cache-line-size = <20>; i-cache-size = <8000>; d-cache-size = <8000>; }; }; }; |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/powerpc/platforms/embedded6xx Added Files: Kconfig Makefile gamecube.c gamecube.h gcn-rsw.c ugecon.c ugecon.h Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: gamecube.h --- /* * arch/powerpc/platforms/embedded6xx/gamecube.h * * Nintendo GameCube board-specific definitions * Copyright (C) 2004-2008 The GameCube Linux Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #ifndef __MACH_GAMECUBE_H #define __MACH_GAMECUBE_H #define GCN_IO1_PHYS_BASE 0x0c000000 #ifdef CONFIG_GAMECUBE_WII #define GCN_IO2_PHYS_BASE 0x0d000000 #else #define GCN_IO2_PHYS_BASE 0x0c000000 #endif #define GCN_IO1_BASE (0xc0000000 | GCN_IO1_PHYS_BASE) #define GCN_IO2_BASE (0xc0000000 | GCN_IO2_PHYS_BASE) /* * There are 14 IRQs in total. Each has a corresponding bit in both * the Interrupt Cause (ICR) and Interrupt Mask (IMR) registers. * * Enabling/disabling an interrupt line involves asserting/clearing * the corresponding bit in IMR. ACK'ing a request simply involves * asserting the corresponding bit in ICR. */ #define FLIPPER_NR_IRQS (14) #define FLIPPER_ICR ((void __iomem *)(GCN_IO1_BASE+0x3000)) #define FLIPPER_IMR ((void __iomem *)(GCN_IO1_BASE+0x3004)) /* * Anything written here automagically puts us through reset. */ #define FLIPPER_RESET ((void __iomem *)(GCN_IO1_BASE+0x3024)) /* * This is the current memory layout for the GameCube Linux port. * * +------------------------------+ * | framebuffer 640x576x2 bytes | GCN_XFB_END * . . * . . * | framebuffer 640x576x2 bytes | Second buffer * . . * . . * +------------------------------+ GCN_XFB_START * | GX FIFO reserved 256k | GCN_GX_FIFO_END * . . * +------------------------------+ GCN_GX_FIFO_START * | kexec reserved 4x4096 bytes | GCN_KXC_END * . . * +------------------------------+ GCN_KXC_START * | memory remaining bytes | GCN_MEM_END * . . * . . * . . * +- - - - - - - - - - - - - - - + * | Dolphin OS 12544 bytes | * | globals, pre-kernel | * | | * | | * +------------------------------+ GCN_MEM_START * */ /* * XXX * It seems not a good idea to hot change the memory map by simply * changing a video register. * Be conservative here, and assume we're using (or will use) the bigger * of the two framebuffer sizes supported. */ //#define GCN_VIDEO_REG (*((volatile u16*)0xCC002002)) //#define GCN_VIDEO_LINES (((GCN_VIDEO_REG >> 8) & 3) ? 576 : 480) #define GCN_VIDEO_LINES 576 /* * Total amount of RAM found in the system */ #define GCN_RAM_SIZE (24*1024*1024) /* 24 MB */ /* * Size of reserved memory for the video subsystem */ #ifdef CONFIG_FB_GAMECUBE #define GCN_XFB_SIZE (2*640*GCN_VIDEO_LINES*2) /* framebuffer */ #else #define GCN_XFB_SIZE (0) #endif #ifdef CONFIG_FB_GAMECUBE_GX #define GCN_GX_FIFO_SIZE (256*1024) #else #define GCN_GX_FIFO_SIZE (0) #endif /* * Size of reserved memory for kexec compatibility with some homebrew DOLs */ #ifdef CONFIG_KEXEC #define GCN_KXC_SIZE (4*4096) /* PAGE_ALIGN(GCN_PRESERVE_SIZE) */ #else #define GCN_KXC_SIZE (0) #endif /* * Amount of useable memory */ #define GCN_MEM_SIZE (GCN_MEM_END+1) /* * Start and end of several regions */ #define GCN_XFB_END (GCN_RAM_SIZE-1) #define GCN_XFB_START (GCN_XFB_END-GCN_XFB_SIZE+1) #define GCN_GX_FIFO_END (GCN_XFB_START-1) #define GCN_GX_FIFO_START (GCN_GX_FIFO_END-GCN_GX_FIFO_SIZE+1) #define GCN_KXC_END (GCN_GX_FIFO_START-1) #define GCN_KXC_START (GCN_KXC_END-GCN_KXC_SIZE+1) #define GCN_MEM_END (GCN_KXC_START-1) #define GCN_MEM_START (0x00000000) /* * Some memory regions will be preserved across kexec reboots, if enabled. */ #define GCN_PRESERVE_START (0x00000000) #define GCN_PRESERVE_END (0x000030ff) #define GCN_PRESERVE_FROM (GCN_PRESERVE_START) #define GCN_PRESERVE_TO (GCN_KXC_START) #define GCN_PRESERVE_SIZE (GCN_PRESERVE_END+1) /* * These registers control where the visible framebuffer is located. */ #define GCN_VI_TFBL ((void __iomem *)(GCN_IO1_BASE+0x201c)) #define GCN_VI_BFBL ((void __iomem *)(GCN_IO1_BASE+0x2024)) /* arch/ppc/platforms/gcn-time.c */ extern long gcn_time_init(void); extern unsigned long gcn_get_rtc_time(void); extern int gcn_set_rtc_time(unsigned long nowtime); /* arch/ppc/platforms/gcn-con.c */ extern void gcn_con_init(void); #endif /* !__MACH_GAMECUBE_H */ --- NEW FILE: gcn-rsw.c --- /* * arch/powerpc/platforms/embedded6xx/gcn-rsw.c * * Nintendo GameCube reset switch driver * Copyright (C) 2004-2008 The GameCube Linux Team * Copyright (C) 2004 Stefan Esser * Copyright (C) 2004,2005,2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/interrupt.h> #include <linux/spinlock.h> #include <linux/delay.h> #include <linux/reboot.h> #ifdef CONFIG_KEXEC #include <linux/kexec.h> #endif #define RSW_IRQ 1 #define RSW_NORMAL_TIMEOUT 3 /* seconds */ #define RSW_EMERGENCY_PUSHES 10 typedef enum { IDLE = 0, /* nothing to do */ NORMAL_RESET, /* reboot requested */ EMERGENCY_RESET, /* try emergency reboot */ } gcn_rsw_state_t; struct gcn_rsw_private { gcn_rsw_state_t state; struct timer_list timer; unsigned long jiffies; int pushes; int timeout; spinlock_t lock; }; #define DRV_MODULE_NAME "gcn-rsw" #define DRV_DESCRIPTION "Nintendo GameCube reset switch driver" #define DRV_AUTHOR "Stefan Esser <se...@no...>" MODULE_DESCRIPTION(DRV_DESCRIPTION); MODULE_AUTHOR(DRV_AUTHOR); MODULE_LICENSE("GPL"); #define PFX DRV_MODULE_NAME ": " #define rsw_printk(level, format, arg...) \ printk(level PFX format , ## arg) /* from kernel/sys.c */ extern void ctrl_alt_del(void); static struct gcn_rsw_private gcn_rsw_private = { .state = IDLE, .timeout = RSW_NORMAL_TIMEOUT, }; /** * */ static void gcn_rsw_normal_reset(unsigned long dummy) { ctrl_alt_del(); } /** * */ static void gcn_rsw_emergency_reset(void) { #ifdef CONFIG_KEXEC struct kimage *image; image = xchg(&kexec_image, 0); if (image) { machine_kexec(image); } #endif machine_restart(NULL); } /** * */ static irqreturn_t gcn_rsw_handler(int this_irq, void *data) { struct gcn_rsw_private *priv = (struct gcn_rsw_private *)data; unsigned long flags; spin_lock_irqsave(&priv->lock, flags); /* someone pushed the reset button */ switch (priv->state) { case IDLE: priv->state = NORMAL_RESET; printk(KERN_EMERG "Rebooting in %d seconds...\n", priv->timeout); printk(KERN_WARNING "Push the Reset button again to cancel reboot!\n"); /* schedule a reboot in a few seconds */ init_timer(&priv->timer); priv->timer.expires = jiffies + priv->timeout * HZ; priv->timer.function = (void (*)(unsigned long))gcn_rsw_normal_reset; add_timer(&priv->timer); priv->jiffies = jiffies; break; case NORMAL_RESET: if (time_before(jiffies, priv->jiffies + priv->timeout * HZ)) { /* the reset button was hit again before deadline */ del_timer(&priv->timer); priv->state = IDLE; printk(KERN_EMERG "Reboot cancelled!\n"); } else { /* * Time expired. System should be now restarting. * Go to emergency mode in case something goes bad. */ priv->state = EMERGENCY_RESET; priv->pushes = 0; printk(KERN_WARNING "SWITCHED TO EMERGENCY RESET MODE!\n" "Push %d times the Reset button to force" " a hard reset!\n" "NOTE THAT THIS COULD CAUSE DATA LOSS!\n", RSW_EMERGENCY_PUSHES); } break; case EMERGENCY_RESET: /* force a hard reset if the user insists ... */ if (++priv->pushes >= RSW_EMERGENCY_PUSHES) { spin_unlock_irqrestore(&priv->lock, flags); gcn_rsw_emergency_reset(); return IRQ_HANDLED; } else { printk(KERN_INFO "%d/%d\n", priv->pushes, RSW_EMERGENCY_PUSHES); } break; } spin_unlock_irqrestore(&priv->lock, flags); return IRQ_HANDLED; } /** * */ static int gcn_rsw_init(void) { int err; spin_lock_init(&gcn_rsw_private.lock); err = request_irq(RSW_IRQ, gcn_rsw_handler, 0, DRV_MODULE_NAME, (void *)&gcn_rsw_private); if (err) { rsw_printk(KERN_ERR, "request of irq%d failed\n", RSW_IRQ); } return err; } /** * */ static void gcn_rsw_exit(void) { free_irq(RSW_IRQ, &gcn_rsw_private); } module_init(gcn_rsw_init); module_exit(gcn_rsw_exit); --- NEW FILE: Kconfig --- config EMBEDDED6xx bool "Embedded 6xx/7xx/7xxx-based boards" depends on PPC32 && BROKEN_ON_SMP && PPC_MULTIPLATFORM config LINKSTATION bool "Linkstation / Kurobox(HG) from Buffalo" depends on EMBEDDED6xx select MPIC select FSL_SOC select PPC_UDBG_16550 if SERIAL_8250 select DEFAULT_UIMAGE help Select LINKSTATION if configuring for one of PPC- (MPC8241) based NAS systems from Buffalo Technology. So far only KuroboxHG has been tested. In the future classical Kurobox, Linkstation-I HD-HLAN and HD-HGLAN versions, and PPC-based Terastation systems should be supported too. config MPC7448HPC2 bool "Freescale MPC7448HPC2(Taiga)" depends on EMBEDDED6xx select TSI108_BRIDGE select DEFAULT_UIMAGE select PPC_UDBG_16550 select WANT_DEVICE_TREE help Select MPC7448HPC2 if configuring for Freescale MPC7448HPC2 (Taiga) platform config PPC_HOLLY bool "PPC750GX/CL with TSI10x bridge (Hickory/Holly)" depends on EMBEDDED6xx select TSI108_BRIDGE select PPC_UDBG_16550 select WANT_DEVICE_TREE help Select PPC_HOLLY if configuring for an IBM 750GX/CL Eval Board with TSI108/9 bridge (Hickory/Holly) config PPC_PRPMC2800 bool "Motorola-PrPMC2800" depends on EMBEDDED6xx select MV64X60 select NOT_COHERENT_CACHE select WANT_DEVICE_TREE help This option enables support for the Motorola PrPMC2800 board config GAMECUBE bool "Nintendo-GameCube" depends on EMBEDDED6xx select NOT_COHERENT_CACHE select WANT_DEVICE_TREE help Select GAMECUBE if configuring for the Nintendo GameCube. More information at: <http://gc-linux.sourceforge.net/> config GAMECUBE_WII bool "Nintendo-Wii" depends on GAMECUBE help Select GAMECUBE_WII if configuring for the Nintendo Wii. More information at: <http://gc-linux.sourceforge.net/> config TSI108_BRIDGE config TSI108_BRIDGE bool depends on MPC7448HPC2 || PPC_HOLLY select PCI select MPIC select MPIC_WEIRD default y config MPC10X_BRIDGE bool depends on LINKSTATION select PPC_INDIRECT_PCI default y config MV64X60 bool select PPC_INDIRECT_PCI select CHECK_CACHE_COHERENCY config MPC10X_OPENPIC bool depends on LINKSTATION default y config MPC10X_STORE_GATHERING bool "Enable MPC10x store gathering" depends on MPC10X_BRIDGE config GAMECUBE_RESET bool "Nintendo GameCube reset button" depends on GAMECUBE default y help If you say yes to this option, support will be included for the reset button of the Nintendo GameCube. If in doubt, say Y here. config USBGECKO_EARLY_CONSOLE bool "Enable USB Gecko early console" depends on GAMECUBE default n help If you say yes to this option, support will be included for the USB Gecko adapter as an early console. If in doubt, say N here. --- NEW FILE: gamecube.c --- /* * arch/powerpc/platforms/embedded6xx/gamecube.c * * Nintendo GameCube board-specific support * Copyright (C) 2004-2008 The GameCube Linux Team * Copyright (C) 2007,2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #include <linux/kernel.h> #include <linux/init.h> #include <linux/irq.h> #include <linux/initrd.h> #include <linux/seq_file.h> #include <linux/kexec.h> #include <asm/io.h> #include <asm/time.h> #include <asm/bitops.h> #include <asm/machdep.h> #include <asm/pgtable.h> #include <asm/prom.h> #include <asm/lmb.h> #include "gamecube.h" #include "ugecon.h" /* * These are used in setup_arch. * */ #define CSR_REG ((void __iomem *)(GCN_IO1_BASE+0x500A)) #define DSP_CSR_PIINT (1<<1) #define DSP_CSR_AIDINT (1<<3) #define DSP_CSR_ARINT (1<<5) #define DSP_CSR_DSPINT (1<<7) #define AUDIO_DMA_LENGTH ((void __iomem *)(GCN_IO1_BASE+0x5036)) #define AI_DCL_PLAY (1<<15) static void __init gamecube_progress(char *s, unsigned short hex) { #ifdef CONFIG_USBGECKO_EARLY_CONSOLE if (s) ug_early_puts(s); ug_early_puts("\n"); #endif } /* * FIXME * We have to get rid of these mappings and move to ioremap. */ extern int map_page(unsigned long va, phys_addr_t pa, int flags); static void dirty_io_block_mapping(unsigned long va, phys_addr_t pa, unsigned int size, int flags) { int i; for (i = 0; i < size; i += PAGE_SIZE) map_page(va + i, pa + i, flags); } static void gamecube_setup_io_mappings(void) { #ifdef CONFIG_GAMECUBE_DEBUG_CONSOLE /* mapping for the debug console framebuffer */ dirty_io_block_mapping(0xd0000000, 0, 0x02000000, _PAGE_IO); #endif /* access to hardware registers */ #ifdef CONFIG_GAMECUBE_WII dirty_io_block_mapping(0xcd000000, 0x0d000000, 0x00010000, _PAGE_IO); #endif dirty_io_block_mapping(0xcc000000, 0x0c000000, 0x00010000, _PAGE_IO); } static void gamecube_restart(char *cmd) { local_irq_disable(); out_8(FLIPPER_RESET, 0x00); } static void gamecube_power_off(void) { local_irq_disable(); for (;;); /* spin until power button pressed */ } static void gamecube_halt(void) { gamecube_restart(NULL); } static unsigned int gamecube_get_irq(void) { int irq; u32 irq_status; irq_status = in_be32(FLIPPER_ICR) & in_be32(FLIPPER_IMR); if (irq_status == 0) return -1; /* no more IRQs pending */ __asm __volatile ("cntlzw %0,%1": "=r"(irq) : "r"(irq_status)); return (31 - irq); } static void flipper_mask_and_ack_irq(unsigned int irq) { clear_bit(irq, FLIPPER_IMR); set_bit(irq, FLIPPER_ICR); } static void flipper_mask_irq(unsigned int irq) { clear_bit(irq, FLIPPER_IMR); } static void flipper_unmask_irq(unsigned int irq) { set_bit(irq, FLIPPER_IMR); } static void flipper_end_irq(unsigned int irq) { if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)) && irq_desc[irq].action) flipper_unmask_irq(irq); } static struct hw_interrupt_type flipper_pic = { .typename = "flipper-pic", .enable = flipper_unmask_irq, .disable = flipper_mask_irq, .ack = flipper_mask_and_ack_irq, .end = flipper_end_irq, }; static void gamecube_init_irq(void) { int i; /* mask and ack all IRQs */ out_be32(FLIPPER_IMR, 0x00000000); out_be32(FLIPPER_ICR, 0xffffffff); for (i = 0; i < FLIPPER_NR_IRQS; i++) irq_desc[i].chip = &flipper_pic; ppc_md.get_irq = gamecube_get_irq; } static void gamecube_show_cpuinfo(struct seq_file *m) { seq_printf(m, "vendor\t\t: IBM\n"); seq_printf(m, "machine\t\t: Nintendo GameCube\n"); } static void gamecube_setup_arch(void) { #ifdef CONFIG_GAMECUBE_DEBUG_CONSOLE gcn_con_init(); #endif #ifdef CONFIG_USBGECKO_EARLY_CONSOLE ug_early_con_init(); #endif #if 0 /* ack and clear the interrupts for the AI line */ out_be16(CSR_REG, DSP_CSR_PIINT|DSP_CSR_AIDINT|DSP_CSR_ARINT|DSP_CSR_DSPINT); /* stop any audio */ out_be16(AUDIO_DMA_LENGTH, in_be16(AUDIO_DMA_LENGTH) & ~AI_DCL_PLAY); #endif } static int __init gamecube_probe(void) { unsigned long dt_root; dt_root = of_get_flat_dt_root(); if (!of_flat_dt_is_compatible(dt_root, "nintendo,gamecube")) return 0; return 1; } #ifdef CONFIG_KEXEC static void gamecube_shutdown(void) { /* currently not used */ } static int gamecube_kexec_prepare(struct kimage *image) { return 0; } #endif /* CONFIG_KEXEC */ define_machine(gamecube) { .name = "gamecube", .probe = gamecube_probe, .setup_arch = gamecube_setup_arch, .setup_io_mappings = gamecube_setup_io_mappings, .show_cpuinfo = gamecube_show_cpuinfo, .init_IRQ = gamecube_init_irq, .calibrate_decr = generic_calibrate_decr, .restart = gamecube_restart, .power_off = gamecube_power_off, .halt = gamecube_halt, .progress = gamecube_progress, #ifdef CONFIG_KEXEC .machine_shutdown = gamecube_shutdown, .machine_kexec_prepare = gamecube_kexec_prepare, .machine_kexec = default_machine_kexec, #endif }; --- NEW FILE: Makefile --- # # Makefile for the 6xx/7xx/7xxxx linux kernel. # obj-$(CONFIG_MPC7448HPC2) += mpc7448_hpc2.o obj-$(CONFIG_LINKSTATION) += linkstation.o ls_uart.o obj-$(CONFIG_PPC_HOLLY) += holly.o obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o obj-$(CONFIG_GAMECUBE) += gamecube.o obj-$(CONFIG_GAMECUBE_RESET) += gcn-rsw.o obj-$(CONFIG_USBGECKO_EARLY_CONSOLE) += ugecon.o --- NEW FILE: ugecon.h --- /* * arch/powerpc/platforms/embedded6xx/ugecon.h * * USB Gecko early console on memcard slot B. * Copyright (C) 2008 The GameCube Linux Team * Copyright (C) 2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #ifndef __UGECON_H #define __UGECON_H #ifdef CONFIG_USBGECKO_EARLY_CONSOLE extern void ug_early_putc(char ch); extern void ug_early_puts(char *s); extern void ug_early_con_init(void); #endif /* CONFIG_USBGECKO_EARLY_CONSOLE */ #endif /* __UGECON_H */ --- NEW FILE: ugecon.c --- /* * arch/powerpc/platforms/embedded6xx/ugecon.c * * USB Gecko early console on memcard slot B. * Copyright (C) 2008 The GameCube Linux Team * Copyright (C) 2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #include <linux/kernel.h> #include <linux/io.h> #include <linux/string.h> #include <linux/console.h> #include <asm/processor.h> #include "gamecube.h" #define EXI_BASE (GCN_IO2_BASE+0x6800) #define EXI_CHANNEL_SPACING 0x14 #define EXI_IO_BASE(c) ((void __iomem *)(EXI_BASE + ((c)*EXI_CHANNEL_SPACING))) #define EXI_CLK_32MHZ 5 #define EXI_CSR 0x00 #define EXI_CSR_CLKMASK (0x7<<4) #define EXI_CSR_CLK_32MHZ (EXI_CLK_32MHZ<<4) #define EXI_CSR_CSMASK (0x7<<7) #define EXI_CSR_CS_0 (0x1<<7) /* Chip Select 001 */ #define EXI_CR 0x0c #define EXI_CR_TSTART (1<<0) #define EXI_CR_WRITE (1<<2) #define EXI_CR_READ_WRITE (2<<2) #define EXI_CR_TLEN(len) (((len)-1)<<4) #define EXI_DATA 0x10 /* * */ static int ug_check_adapter(void) { u32 __iomem *csr_reg = EXI_IO_BASE(1) + EXI_CSR; u32 __iomem *data_reg = EXI_IO_BASE(1) + EXI_DATA; u32 __iomem *cr_reg = EXI_IO_BASE(1) + EXI_CR; u32 csr, data, cr; /* select */ csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0; out_be32(csr_reg, csr); /* read/write */ data = 0x90000000; out_be32(data_reg, data); cr = EXI_CR_TLEN(2) | EXI_CR_READ_WRITE | EXI_CR_TSTART; out_be32(cr_reg, cr); while(in_be32(cr_reg) & EXI_CR_TSTART) barrier(); /* deselect */ out_be32(csr_reg, 0); data = in_be32(data_reg); return (data == 0x04700000); } /* * */ static int ug_is_txfifo_empty(void) { u32 __iomem *csr_reg = EXI_IO_BASE(1) + EXI_CSR; u32 __iomem *data_reg = EXI_IO_BASE(1) + EXI_DATA; u32 __iomem *cr_reg = EXI_IO_BASE(1) + EXI_CR; u32 csr, data, cr; /* select */ csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0; out_be32(csr_reg, csr); /* read/write */ data = 0xC0000000; out_be32(data_reg, data); cr = EXI_CR_TLEN(2) | EXI_CR_READ_WRITE | EXI_CR_TSTART; out_be32(cr_reg, cr); while(in_be32(cr_reg) & EXI_CR_TSTART) barrier(); /* deselect */ out_be32(csr_reg, 0); data = in_be32(data_reg); return (data & 0x04000000); } /* * */ static void ug_putc(char ch) { u32 __iomem *csr_reg = EXI_IO_BASE(1) + EXI_CSR; u32 __iomem *data_reg = EXI_IO_BASE(1) + EXI_DATA; u32 __iomem *cr_reg = EXI_IO_BASE(1) + EXI_CR; u32 csr, data, cr; /* select */ csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0; out_be32(csr_reg, csr); /* write */ data = 0xb0000000 | (ch << 20); out_be32(data_reg, data); cr = EXI_CR_TLEN(2) | EXI_CR_WRITE | EXI_CR_TSTART; out_be32(cr_reg, cr); while(in_be32(cr_reg) & EXI_CR_TSTART) barrier(); /* deselect */ out_be32(csr_reg, 0); } /* * */ void ug_early_putc(char ch) { int count = 10; while(!ug_is_txfifo_empty() && count--) barrier(); ug_putc(ch); } /* * */ void ug_early_puts(char *s) { while(*s) { if (*s == '\n') ug_early_putc('\r'); ug_early_putc(*s++); } } /* * */ static void ug_early_con_write(struct console *co, const char *buf, unsigned int count) { char *b = (char *)buf; while (count--) { if (*b == '\n') ug_early_putc('\r'); ug_early_putc(*b++); } } static struct console ug_early_con = { .name = "ugecon", .flags = CON_PRINTBUFFER | CON_BOOT, .index = -1, }; /* * */ void ug_early_con_init(void) { if (ug_check_adapter()) { ug_early_puts("ugecon: early console initialized.\n"); ug_early_con.write = ug_early_con_write; register_console(&ug_early_con); } } |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/powerpc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/powerpc Added Files: Kconfig Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: Kconfig --- # For a description of the syntax of this configuration file, # see Documentation/kbuild/kconfig-language.txt. # mainmenu "Linux/PowerPC Kernel Configuration" source "arch/powerpc/platforms/Kconfig.cputype" config PPC32 bool default y if !PPC64 config 64BIT bool default y if PPC64 config WORD_SIZE int default 64 if PPC64 default 32 if !PPC64 config PPC_MERGE def_bool y config MMU bool default y config GENERIC_CMOS_UPDATE def_bool y config GENERIC_TIME def_bool y config GENERIC_TIME_VSYSCALL def_bool y config GENERIC_CLOCKEVENTS def_bool y config GENERIC_HARDIRQS bool default y config IRQ_PER_CPU bool default y config RWSEM_GENERIC_SPINLOCK bool config RWSEM_XCHGADD_ALGORITHM bool default y config ARCH_HAS_ILOG2_U32 bool default y config ARCH_HAS_ILOG2_U64 bool default y if 64BIT config GENERIC_HWEIGHT bool default y config GENERIC_CALIBRATE_DELAY bool default y config GENERIC_FIND_NEXT_BIT bool default y config ARCH_NO_VIRT_TO_BUS def_bool PPC64 config PPC bool default y config EARLY_PRINTK bool default y config COMPAT bool default y if PPC64 config SYSVIPC_COMPAT bool depends on COMPAT && SYSVIPC default y # All PPC32s use generic nvram driver through ppc_md config GENERIC_NVRAM bool default y if PPC32 config SCHED_NO_NO_OMIT_FRAME_POINTER bool default y config ARCH_MAY_HAVE_PC_FDC bool default !PPC_PSERIES || PCI config PPC_OF def_bool y config OF def_bool y config PPC_UDBG_16550 bool default n config GENERIC_TBSYNC bool default y if PPC32 && SMP default n config AUDIT_ARCH bool default y config GENERIC_BUG bool default y depends on BUG config SYS_SUPPORTS_APM_EMULATION default y if PMAC_APM_EMU bool config DEFAULT_UIMAGE bool help Used to allow a board to specify it wants a uImage built by default default n config PPC64_SWSUSP bool depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL)) default y config PPC_DCR_NATIVE bool default n config PPC_DCR_MMIO bool default n config PPC_DCR bool depends on PPC_DCR_NATIVE || PPC_DCR_MMIO default y config PPC_OF_PLATFORM_PCI bool depends on PPC64 # not supported on 32 bits yet default n source "init/Kconfig" source "arch/powerpc/platforms/Kconfig" menu "Kernel options" config HIGHMEM bool "High memory support" depends on PPC32 source kernel/time/Kconfig source kernel/Kconfig.hz source kernel/Kconfig.preempt source "fs/Kconfig.binfmt" # We optimistically allocate largepages from the VM, so make the limit # large enough (16MB). This badly named config option is actually # max order + 1 config FORCE_MAX_ZONEORDER int depends on PPC64 default "9" if PPC_64K_PAGES default "13" config HUGETLB_PAGE_SIZE_VARIABLE bool depends on HUGETLB_PAGE default y config MATH_EMULATION bool "Math emulation" depends on 4xx || 8xx || E200 || PPC_MPC832x || E500 ---help--- Some PowerPC chips designed for embedded applications do not have a floating-point unit and therefore do not implement the floating-point instructions in the PowerPC instruction set. If you say Y here, the kernel will include code to emulate a floating-point unit, which will allow programs that use floating-point instructions to run. config 8XX_MINIMAL_FPEMU bool "Minimal math emulation for 8xx" depends on 8xx && !MATH_EMULATION help Older arch/ppc kernels still emulated a few floating point instructions such as load and store, even when full math emulation is disabled. Say "Y" here if you want to preserve this behavior. It is recommended that you build a soft-float userspace instead. config IOMMU_VMERGE bool "Enable IOMMU virtual merging" depends on PPC64 default y help Cause IO segments sent to a device for DMA to be merged virtually by the IOMMU when they happen to have been allocated contiguously. This doesn't add pressure to the IOMMU allocator. However, some drivers don't support getting large merged segments coming back from *_map_sg(). Most drivers don't have this problem; it is safe to say Y here. config HOTPLUG_CPU bool "Support for enabling/disabling CPUs" depends on SMP && HOTPLUG && EXPERIMENTAL && (PPC_PSERIES || PPC_PMAC) ---help--- Say Y here to be able to disable and re-enable individual CPUs at runtime on SMP machines. Say N if you are unsure. config ARCH_ENABLE_MEMORY_HOTPLUG def_bool y config KEXEC bool "kexec system call (EXPERIMENTAL)" depends on (PPC_PRPMC2800 || PPC_MULTIPLATFORM) && EXPERIMENTAL help kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot but it is independent of the system firmware. And like a reboot you can start any kernel with it, not just Linux. The name comes from the similarity to the exec system call. It is an ongoing process to be certain the hardware in a machine is properly shutdown, so do not be surprised if this code does not initially work for you. It may help to enable device hotplugging support. As of this writing the exact hardware interface is strongly in flux, so no good recommendation can be made. config CRASH_DUMP bool "Build a kdump crash kernel (EXPERIMENTAL)" depends on PPC_MULTIPLATFORM && PPC64 && EXPERIMENTAL help Build a kernel suitable for use as a kdump capture kernel. The kernel will be linked at a different address than normal, and so can only be used for Kdump. Don't change this unless you know what you are doing. config PPCBUG_NVRAM bool "Enable reading PPCBUG NVRAM during boot" if PPLUS || LOPEC default y if PPC_PREP config IRQ_ALL_CPUS bool "Distribute interrupts on all CPUs by default" depends on SMP && !MV64360 help This option gives the kernel permission to distribute IRQs across multiple CPUs. Saying N here will route all IRQs to the first CPU. Generally saying Y is safe, although some problems have been reported with SMP Power Macintoshes with this option enabled. config NUMA bool "NUMA support" depends on PPC64 default y if SMP && PPC_PSERIES config NODES_SHIFT int default "4" depends on NEED_MULTIPLE_NODES config ARCH_SELECT_MEMORY_MODEL def_bool y depends on PPC64 config ARCH_FLATMEM_ENABLE def_bool y depends on (PPC64 && !NUMA) || PPC32 config ARCH_SPARSEMEM_ENABLE def_bool y depends on PPC64 select SPARSEMEM_VMEMMAP_ENABLE config ARCH_SPARSEMEM_DEFAULT def_bool y depends on (SMP && PPC_PSERIES) || PPC_PS3 config ARCH_POPULATES_NODE_MAP def_bool y source "mm/Kconfig" config ARCH_MEMORY_PROBE def_bool y depends on MEMORY_HOTPLUG # Some NUMA nodes have memory ranges that span # other nodes. Even though a pfn is valid and # between a node's start and end pfns, it may not # reside on that node. See memmap_init_zone() # for details. config NODES_SPAN_OTHER_NODES def_bool y depends on NEED_MULTIPLE_NODES config PPC_HAS_HASH_64K bool depends on PPC64 default n config PPC_64K_PAGES bool "64k page size" depends on PPC64 select PPC_HAS_HASH_64K help This option changes the kernel logical page size to 64k. On machines without processor support for 64k pages, the kernel will simulate them by loading each individual 4k page on demand transparently, while on hardware with such support, it will be used to map normal application pages. config SCHED_SMT bool "SMT (Hyperthreading) scheduler support" depends on PPC64 && SMP help SMT scheduler support improves the CPU scheduler's decision making when dealing with POWER5 cpus at a cost of slightly increased overhead in some places. If unsure say N here. config PROC_DEVICETREE bool "Support for device tree in /proc" depends on PROC_FS help This option adds a device-tree directory under /proc which contains an image of the device tree that the kernel copies from Open Firmware or other boot firmware. If unsure, say Y here. config CMDLINE_BOOL bool "Default bootloader kernel arguments" config CMDLINE string "Initial kernel command string" depends on CMDLINE_BOOL default "console=ttyS0,9600 console=tty0 root=/dev/sda2" help On some platforms, there is currently no way for the boot loader to pass arguments to the kernel. For these platforms, you can supply some command-line options at build time by entering them here. In most cases you will need to specify the root device here. if !44x || BROKEN source kernel/power/Kconfig endif config SECCOMP bool "Enable seccomp to safely compute untrusted bytecode" depends on PROC_FS default y help This kernel feature is useful for number crunching applications that may need to compute untrusted bytecode during their execution. By using pipes or other transports made available to the process as file descriptors supporting the read/write syscalls, it's possible to isolate those applications in their own address space using seccomp. Once seccomp is enabled via /proc/<pid>/seccomp, it cannot be disabled and the task is only allowed to execute a few safe syscalls defined by each seccomp mode. If unsure, say Y. Only embedded should say N here. config WANT_DEVICE_TREE bool default n config DEVICE_TREE string "Static device tree source file" depends on WANT_DEVICE_TREE help This specifies the device tree source (.dts) file to be compiled and included when building the bootwrapper. If a relative filename is given, then it will be relative to arch/powerpc/boot/dts. If you are not using the bootwrapper, or do not need to build a dts into the bootwrapper, this field is ignored. For example, this is required when building a cuImage target for an older U-Boot, which cannot pass a device tree itself. Such a kernel will not work with a newer U-Boot that tries to pass a device tree (unless you tell it not to). If your U-Boot does not mention a device tree in "help bootm", then use the cuImage target and specify a device tree here. Otherwise, use the uImage target and leave this field blank. endmenu config ISA_DMA_API bool default y menu "Bus options" config ISA bool "Support for ISA-bus hardware" depends on PPC_PREP || PPC_CHRP select PPC_I8259 help Find out whether you have ISA slots on your motherboard. ISA is the name of a bus system, i.e. the way the CPU talks to the other stuff inside your box. If you have an Apple machine, say N here; if you have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If you have an embedded board, consult your board documentation. config ZONE_DMA bool default y config GENERIC_ISA_DMA bool depends on PPC64 || POWER4 || 6xx && !CPM2 default y config PPC_INDIRECT_PCI bool depends on PCI default y if 40x || 44x default n config EISA bool config SBUS bool config FSL_SOC bool config FSL_PCI bool select PPC_INDIRECT_PCI # Yes MCA RS/6000s exist but Linux-PPC does not currently support any config MCA bool config PCI bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \ || PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \ || PPC_PS3 default y if !40x && !CPM2 && !8xx && !PPC_83xx \ && !PPC_85xx && !PPC_86xx && !GAMECUBE default PCI_PERMEDIA if !4xx && !CPM2 && !8xx default PCI_QSPAN if !4xx && !CPM2 && 8xx select ARCH_SUPPORTS_MSI help Find out whether your system includes a PCI bus. PCI is the name of a bus system, i.e. the way the CPU talks to the other stuff inside your box. If you say Y here, the kernel will include drivers and infrastructure code to support PCI bus devices. config PCI_DOMAINS def_bool PCI config PCI_SYSCALL def_bool PCI config PCI_QSPAN bool "QSpan PCI" depends on !4xx && !CPM2 && 8xx select PPC_I8259 help Say Y here if you have a system based on a Motorola 8xx-series embedded processor with a QSPAN PCI interface, otherwise say N. config PCI_8260 bool depends on PCI && 8260 select PPC_INDIRECT_PCI default y config 8260_PCI9 bool "Enable workaround for MPC826x erratum PCI 9" depends on PCI_8260 && !8272 default y choice prompt "IDMA channel for PCI 9 workaround" depends on 8260_PCI9 config 8260_PCI9_IDMA1 bool "IDMA1" config 8260_PCI9_IDMA2 bool "IDMA2" config 8260_PCI9_IDMA3 bool "IDMA3" config 8260_PCI9_IDMA4 bool "IDMA4" endchoice source "drivers/pci/pcie/Kconfig" source "drivers/pci/Kconfig" source "drivers/pcmcia/Kconfig" source "drivers/pci/hotplug/Kconfig" endmenu menu "Advanced setup" depends on PPC32 config ADVANCED_OPTIONS bool "Prompt for advanced kernel configuration options" help This option will enable prompting for a variety of advanced kernel configuration options. These options can cause the kernel to not work if they are set incorrectly, but can be used to optimize certain aspects of kernel memory management. Unless you know what you are doing, say N here. comment "Default settings for advanced configuration options are used" depends on !ADVANCED_OPTIONS config HIGHMEM_START_BOOL bool "Set high memory pool address" depends on ADVANCED_OPTIONS && HIGHMEM help This option allows you to set the base address of the kernel virtual area used to map high memory pages. This can be useful in optimizing the layout of kernel virtual memory. Say N here unless you know what you are doing. config HIGHMEM_START hex "Virtual start address of high memory pool" if HIGHMEM_START_BOOL default "0xfe000000" config LOWMEM_SIZE_BOOL bool "Set maximum low memory" depends on ADVANCED_OPTIONS help This option allows you to set the maximum amount of memory which will be used as "low memory", that is, memory which the kernel can access directly, without having to set up a kernel virtual mapping. This can be useful in optimizing the layout of kernel virtual memory. Say N here unless you know what you are doing. config LOWMEM_SIZE hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL default "0x30000000" config KERNEL_START_BOOL bool "Set custom kernel base address" depends on ADVANCED_OPTIONS help This option allows you to set the kernel virtual address at which the kernel will map low memory (the kernel image will be linked at this address). This can be useful in optimizing the virtual memory layout of the system. Say N here unless you know what you are doing. config KERNEL_START hex "Virtual address of kernel base" if KERNEL_START_BOOL default "0xc0000000" config TASK_SIZE_BOOL bool "Set custom user task size" depends on ADVANCED_OPTIONS help This option allows you to set the amount of virtual address space allocated to user tasks. This can be useful in optimizing the virtual memory layout of the system. Say N here unless you know what you are doing. config TASK_SIZE hex "Size of user task space" if TASK_SIZE_BOOL default "0x80000000" if PPC_PREP || PPC_8xx default "0xc0000000" config CONSISTENT_START_BOOL bool "Set custom consistent memory pool address" depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE help This option allows you to set the base virtual address of the consistent memory pool. This pool of virtual memory is used to make consistent memory allocations. config CONSISTENT_START hex "Base virtual address of consistent memory pool" if CONSISTENT_START_BOOL default "0xfd000000" if (NOT_COHERENT_CACHE && 8xx) default "0xff100000" if NOT_COHERENT_CACHE config CONSISTENT_SIZE_BOOL bool "Set custom consistent memory pool size" depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE help This option allows you to set the size of the consistent memory pool. This pool of virtual memory is used to make consistent memory allocations. config CONSISTENT_SIZE hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL default "0x00200000" if NOT_COHERENT_CACHE config BOOT_LOAD_BOOL bool "Set the boot link/load address" depends on ADVANCED_OPTIONS && !PPC_MULTIPLATFORM help This option allows you to set the initial load address of the zImage or zImage.initrd file. This can be useful if you are on a board which has a small amount of memory. Say N here unless you know what you are doing. config BOOT_LOAD hex "Link/load address for booting" if BOOT_LOAD_BOOL default "0x00400000" if 40x || 8xx || 8260 default "0x01000000" if 44x default "0x00800000" config PIN_TLB bool "Pinned Kernel TLBs (860 ONLY)" depends on ADVANCED_OPTIONS && 8xx endmenu if PPC64 config KERNEL_START hex default "0xc000000000000000" endif source "net/Kconfig" source "drivers/Kconfig" source "fs/Kconfig" # XXX source "arch/ppc/8xx_io/Kconfig" # XXX source "arch/ppc/8260_io/Kconfig" source "arch/powerpc/sysdev/qe_lib/Kconfig" source "lib/Kconfig" source "kernel/Kconfig.instrumentation" source "arch/powerpc/Kconfig.debug" source "security/Kconfig" config KEYS_COMPAT bool depends on COMPAT && KEYS default y source "crypto/Kconfig" config PPC_CLOCK bool default n config PPC_LIB_RHEAP bool |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/boot In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/powerpc/boot Added Files: Makefile gamecube.c Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: gamecube.c --- /* * arch/powerpc/boot/gamecube.c * * Nintendo GameCube boot * Copyright (C) 2004-2008 The GameCube Linux Team * Copyright (C) 2008 Albert Herranz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #include <stddef.h> #include "stdio.h" #include "types.h" #include "io.h" #include "ops.h" /* * Note that CONFIG_* defines are not available at this stage, except: * - CONFIG_USBGECKO_EARLY_CONSOLE * - CONFIG_GAMECUBE_WII */ BSS_STACK(4096); /* * We enter with the MMU enabled and some legacy memory mappings active. * * We leave the MMU enabled, but we switch to an identity mapped memory * scheme as expected by the start code. * */ asm ("\n\ .text\n\ .globl _zimage_start\n\ _zimage_start:\n\ \n\ isync\n\ /* IBAT3,DBAT3 for first 16Mbytes */\n\ li 8, 0x01ff /* 16MB */\n\ li 9, 0x0002 /* rw */\n\ mtspr 0x216, 8 /* IBAT3U */\n\ mtspr 0x217, 9 /* IBAT3L */\n\ mtspr 0x21e, 8 /* DBAT3U */\n\ mtspr 0x21f, 9 /* DBAT3L */\n\ \n\ sync\n\ isync\n\ \n\ li 3, 0\n\ li 4, 0\n\ li 5, 0\n\ \n\ bcl- 20,4*cr7+so,1f\n\ 1:\n\ mflr 8\n\ clrlwi 8, 8, 3\n\ addi 8, 8, 2f - 1b\n\ mtlr 8\n\ blr\n\ 2:\n\ b _zimage_start_lib\n\ "); #ifdef CONFIG_USBGECKO_EARLY_CONSOLE #ifdef CONFIG_GAMECUBE_WII #define EXI_BASE (0xcd006800) #else #define EXI_BASE (0xcc006800) #endif #define EXI_CHANNEL_SPACING 0x14 #define EXI_IO_BASE(c) ((void *)(EXI_BASE + ((c)*EXI_CHANNEL_SPACING))) #define EXI_CLK_32MHZ 5 #define EXI_CSR 0x00 #define EXI_CSR_CLKMASK (0x7<<4) #define EXI_CSR_CLK_32MHZ (EXI_CLK_32MHZ<<4) #define EXI_CSR_CSMASK (0x7<<7) #define EXI_CSR_CS_0 (0x1<<7) /* Chip Select 001 */ #define EXI_CR 0x0c #define EXI_CR_TSTART (1<<0) #define EXI_CR_WRITE (1<<2) #define EXI_CR_READ_WRITE (2<<2) #define EXI_CR_TLEN(len) (((len)-1)<<4) #define EXI_DATA 0x10 /* * */ static int ug_check_adapter(void) { u32 *csr_reg = EXI_IO_BASE(1) + EXI_CSR; u32 *data_reg = EXI_IO_BASE(1) + EXI_DATA; u32 *cr_reg = EXI_IO_BASE(1) + EXI_CR; u32 csr, data, cr; /* select */ csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0; out_be32(csr_reg, csr); /* read/write */ data = 0x90000000; out_be32(data_reg, data); cr = EXI_CR_TLEN(2) | EXI_CR_READ_WRITE | EXI_CR_TSTART; out_be32(cr_reg, cr); while(in_be32(cr_reg) & EXI_CR_TSTART) barrier(); /* deselect */ out_be32(csr_reg, 0); data = in_be32(data_reg); return (data == 0x04700000); } /* * */ static int ug_is_txfifo_empty(void) { u32 *csr_reg = EXI_IO_BASE(1) + EXI_CSR; u32 *data_reg = EXI_IO_BASE(1) + EXI_DATA; u32 *cr_reg = EXI_IO_BASE(1) + EXI_CR; u32 csr, data, cr; /* select */ csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0; out_be32(csr_reg, csr); /* read/write */ data = 0xC0000000; out_be32(data_reg, data); cr = EXI_CR_TLEN(2) | EXI_CR_READ_WRITE | EXI_CR_TSTART; out_be32(cr_reg, cr); while(in_be32(cr_reg) & EXI_CR_TSTART) barrier(); /* deselect */ out_be32(csr_reg, 0); data = in_be32(data_reg); return (data & 0x04000000); } /* * */ static void ug_putc(char ch) { u32 *csr_reg = EXI_IO_BASE(1) + EXI_CSR; u32 *data_reg = EXI_IO_BASE(1) + EXI_DATA; u32 *cr_reg = EXI_IO_BASE(1) + EXI_CR; u32 csr, data, cr; /* select */ csr = EXI_CSR_CLK_32MHZ | EXI_CSR_CS_0; out_be32(csr_reg, csr); /* write */ data = 0xb0000000 | (ch << 20); out_be32(data_reg, data); cr = EXI_CR_TLEN(2) | EXI_CR_WRITE | EXI_CR_TSTART; out_be32(cr_reg, cr); while(in_be32(cr_reg) & EXI_CR_TSTART) barrier(); /* deselect */ out_be32(csr_reg, 0); } /* * */ void ug_early_putc(char ch) { int tries = 10; while(!ug_is_txfifo_empty() && tries--) barrier(); ug_putc(ch); } static void gamecube_console_write(const char *buf, int len) { char *b = (char *)buf; while(len--) { if (*b == '\n') ug_early_putc('\r'); ug_early_putc(*b++); } } #endif /* CONFIG_USBGECKO_EARLY_CONSOLE */ void platform_init(unsigned long r3, unsigned long r4, unsigned long r5) { u32 heapsize = 0x01654000 - (u32)_end; #ifdef CONFIG_USBGECKO_EARLY_CONSOLE if (ug_check_adapter()) console_ops.write = gamecube_console_write; #endif simple_alloc_init(_end, heapsize, 32, 64); ft_init(_dtb_start, 0, 4); } --- NEW FILE: Makefile --- # Makefile for making ELF bootable images for booting on CHRP # using Open Firmware. # # Geert Uytterhoeven September 1997 # # Based on coffboot by Paul Mackerras # Simplified for ppc64 by Todd Inglett # # NOTE: this code is built for 32 bit in ELF32 format even though # it packages a 64 bit kernel. We do this to simplify the # bootloader and increase compatibility with OpenFirmware. # # To this end we need to define BOOTCC, etc, as the tools # needed to build the 32 bit image. That's normally the same # compiler for the rest of the kernel, with the -m32 flag added. # To make it easier to setup a cross compiler, # CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE # in the toplevel makefile. all: $(obj)/zImage BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -Os -msoft-float -pipe \ -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \ -isystem $(shell $(CROSS32CC) -print-file-name=include) BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc ifdef CONFIG_DEBUG_INFO BOOTCFLAGS += -g endif ifeq ($(call cc-option-yn, -fstack-protector),y) BOOTCFLAGS += -fno-stack-protector endif BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) extra-defs-$(CONFIG_GAMECUBE) += -DCONFIG_GAMECUBE extra-defs-$(CONFIG_GAMECUBE_WII) += -DCONFIG_GAMECUBE_WII extra-defs-$(CONFIG_USBGECKO_EARLY_CONSOLE) += -DCONFIG_USBGECKO_EARLY_CONSOLE BOOTCFLAGS += $(extra-defs-y) BOOTAFLAGS += $(extra-defs-y) $(obj)/4xx.o: BOOTCFLAGS += -mcpu=440 $(obj)/ebony.o: BOOTCFLAGS += -mcpu=440 $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 zlib := inffast.c inflate.c inftrees.c zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h zliblinuxheader := zlib.h zconf.h zutil.h $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \ $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader)) src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \ ns16550.c serial.c simple_alloc.c div64.S util.S \ gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.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-83xx.c cuboot-85xx.c holly.c \ cuboot-ebony.c treeboot-ebony.c prpmc2800.c \ treeboot-bamboo.c cuboot-8xx.c \ cuboot-pq2.c cuboot-sequoia.c cuboot-bamboo.c \ fixed-head.S ep88xc.c cuboot-hpc2.c src-plat-$(CONFIG_GAMECUBE) += gamecube.c src-plat += $(src-plat-y) src-boot := $(src-wlib) $(src-plat) empty.c src-boot := $(addprefix $(obj)/, $(src-boot)) obj-boot := $(addsuffix .o, $(basename $(src-boot))) obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib)))) obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat)))) quiet_cmd_copy_zlib = COPY $@ cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@ quiet_cmd_copy_zlibheader = COPY $@ cmd_copy_zlibheader = sed "s@<linux/\([^>]*\).*@\"\1\"@" $< > $@ # stddef.h for NULL quiet_cmd_copy_zliblinuxheader = COPY $@ cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@ $(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/% $(call cmd,copy_zlib) $(addprefix $(obj)/,$(zlibheader)): $(obj)/%: $(srctree)/lib/zlib_inflate/% $(call cmd,copy_zlibheader) $(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/% $(call cmd,copy_zliblinuxheader) $(obj)/empty.c: @touch $@ $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds: $(obj)/%: $(srctree)/$(src)/%.S @cp $< $@ clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ empty.c zImage zImage.coff.lds zImage.ps3.lds zImage.lds quiet_cmd_bootcc = BOOTCC $@ cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< quiet_cmd_bootas = BOOTAS $@ cmd_bootas = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $< quiet_cmd_bootar = BOOTAR $@ cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@ $(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE $(call if_changed_dep,bootcc) $(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE $(call if_changed_dep,bootas) $(obj)/wrapper.a: $(obj-wlib) FORCE $(call if_changed,bootar) hostprogs-y := addnote addRamDisk hack-coff mktree targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a) extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \ $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds wrapper :=$(srctree)/$(src)/wrapper wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \ $(wrapper) FORCE ############# # Bits for building various flavours of zImage ifneq ($(CROSS32_COMPILE),) CROSSWRAP := -C "$(CROSS32_COMPILE)" else ifneq ($(CROSS_COMPILE),) CROSSWRAP := -C "$(CROSS_COMPILE)" endif endif # args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd quiet_cmd_wrap = WRAP $@ cmd_wrap =$(CONFIG_SHELL) $(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \ $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) vmlinux image-$(CONFIG_PPC_PSERIES) += zImage.pseries image-$(CONFIG_PPC_MAPLE) += zImage.pseries image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries image-$(CONFIG_PPC_PS3) += zImage.ps3 image-$(CONFIG_PPC_CELLEB) += zImage.pseries image-$(CONFIG_PPC_CHRP) += zImage.chrp image-$(CONFIG_PPC_EFIKA) += zImage.chrp image-$(CONFIG_PPC_PMAC) += zImage.pmac image-$(CONFIG_PPC_HOLLY) += zImage.holly image-$(CONFIG_PPC_PRPMC2800) += zImage.prpmc2800 image-$(CONFIG_PPC_ISERIES) += zImage.iseries image-$(CONFIG_GAMECUBE) += zImage.gamecube image-$(CONFIG_DEFAULT_UIMAGE) += uImage ifneq ($(CONFIG_DEVICE_TREE),"") image-$(CONFIG_PPC_8xx) += cuImage.8xx image-$(CONFIG_PPC_EP88XC) += zImage.ep88xc image-$(CONFIG_8260) += cuImage.pq2 image-$(CONFIG_PPC_MPC52xx) += cuImage.52xx image-$(CONFIG_PPC_83xx) += cuImage.83xx image-$(CONFIG_PPC_85xx) += cuImage.85xx image-$(CONFIG_MPC7448HPC2) += cuImage.hpc2 image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony image-$(CONFIG_BAMBOO) += treeImage.bamboo cuImage.bamboo image-$(CONFIG_SEQUOIA) += cuImage.sequoia image-$(CONFIG_WALNUT) += treeImage.walnut endif # For 32-bit powermacs, build the COFF and miboot images # as well as the ELF images. ifeq ($(CONFIG_PPC32),y) image-$(CONFIG_PPC_PMAC) += zImage.coff zImage.miboot endif initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) initrd-y := $(patsubst zImage%, zImage.initrd%, \ $(patsubst treeImage%, treeImage.initrd%, $(image-y))) initrd-y := $(filter-out $(image-y), $(initrd-y)) targets += $(image-y) $(initrd-y) $(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz # If CONFIG_WANT_DEVICE_TREE is set and CONFIG_DEVICE_TREE isn't an # empty string, define 'dts' to be path to the dts # CONFIG_DEVICE_TREE will have "" around it, make sure to strip them ifeq ($(CONFIG_WANT_DEVICE_TREE),y) ifneq ($(CONFIG_DEVICE_TREE),"") dts = $(if $(shell echo $(CONFIG_DEVICE_TREE) | grep '^/'),\ ,$(srctree)/$(src)/dts/)$(CONFIG_DEVICE_TREE:"%"=%) endif endif # Don't put the ramdisk on the pattern rule; when its missing make will try # the pattern rule with less dependencies that also matches (even with the # hard dependency listed). $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) $(dts) $(call if_changed,wrap,$*,$(dts),,$(obj)/ramdisk.image.gz) $(obj)/zImage.%: vmlinux $(wrapperbits) $(dts) $(call if_changed,wrap,$*,$(dts)) # This cannot be in the root of $(src) as the zImage rule always adds a $(obj) # prefix $(obj)/vmlinux.strip: vmlinux $(STRIP) -s -R .comment $< -o $@ $(obj)/zImage.iseries: vmlinux $(STRIP) -s -R .comment $< -o $@ $(obj)/zImage.ps3: vmlinux $(wrapper) $(wrapperbits) $(srctree)/$(src)/dts/ps3.dts $(STRIP) -s -R .comment $< -o vmlinux.strip $(call cmd,wrap,ps3,$(srctree)/$(src)/dts/ps3.dts,,) $(obj)/zImage.initrd.ps3: vmlinux $(wrapper) $(wrapperbits) $(srctree)/$(src)/dts/ps3.dts $(obj)/ramdisk.image.gz $(call cmd,wrap,ps3,$(srctree)/$(src)/dts/ps3.dts,,$(obj)/ramdisk.image.gz) $(obj)/uImage: vmlinux $(wrapperbits) $(call if_changed,wrap,uboot) $(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits) $(call if_changed,wrap,cuboot-$*,$(dts)) $(obj)/treeImage.initrd.%: vmlinux $(dts) $(wrapperbits) $(call if_changed,wrap,treeboot-$*,$(dts),,$(obj)/ramdisk.image.gz) $(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits) $(call if_changed,wrap,treeboot-$*,$(dts)) # If there isn't a platform selected then just strip the vmlinux. ifeq (,$(image-y)) image-y := vmlinux.strip endif $(obj)/zImage: $(addprefix $(obj)/, $(image-y)) @rm -f $@; ln $< $@ $(obj)/zImage.initrd: $(addprefix $(obj)/, $(initrd-y)) @rm -f $@; ln $< $@ install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $< # anything not in $(targets) clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* treeImage.* \ otheros.bld # clean up files cached by wrapper clean-kernel := vmlinux.strip vmlinux.bin clean-kernel += $(addsuffix .gz,$(clean-kernel)) # If not absolute clean-files are relative to $(obj). clean-files += $(addprefix $(objtree)/, $(clean-kernel)) |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/drivers In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/drivers Added Files: Kconfig Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: Kconfig --- # drivers/Kconfig menu "Device Drivers" source "drivers/base/Kconfig" source "drivers/connector/Kconfig" source "drivers/mtd/Kconfig" source "drivers/of/Kconfig" source "drivers/parport/Kconfig" source "drivers/pnp/Kconfig" source "drivers/block/Kconfig" # misc before ide - BLK_DEV_SGIIOC4 depends on SGI_IOC4 source "drivers/misc/Kconfig" source "drivers/ide/Kconfig" source "drivers/scsi/Kconfig" source "drivers/ata/Kconfig" source "drivers/md/Kconfig" source "drivers/message/fusion/Kconfig" source "drivers/ieee1394/Kconfig" source "drivers/message/i2o/Kconfig" source "drivers/macintosh/Kconfig" source "drivers/net/Kconfig" source "drivers/isdn/Kconfig" source "drivers/telephony/Kconfig" # input before char - char/joystick depends on it. As does USB. source "drivers/input/Kconfig" source "drivers/char/Kconfig" source "drivers/i2c/Kconfig" source "drivers/exi/Kconfig" source "drivers/spi/Kconfig" source "drivers/w1/Kconfig" source "drivers/power/Kconfig" source "drivers/hwmon/Kconfig" source "drivers/watchdog/Kconfig" source "drivers/ssb/Kconfig" source "drivers/mfd/Kconfig" source "drivers/media/Kconfig" source "drivers/video/Kconfig" source "sound/Kconfig" source "drivers/hid/Kconfig" source "drivers/usb/Kconfig" source "drivers/mmc/Kconfig" source "drivers/leds/Kconfig" source "drivers/infiniband/Kconfig" source "drivers/edac/Kconfig" source "drivers/rtc/Kconfig" source "drivers/dma/Kconfig" source "drivers/dca/Kconfig" source "drivers/auxdisplay/Kconfig" source "drivers/kvm/Kconfig" source "drivers/uio/Kconfig" source "drivers/virtio/Kconfig" endmenu |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/drivers/block Modified Files: gcn-sd.c Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. Index: gcn-sd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/gcn-sd.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- gcn-sd.c 24 Feb 2008 18:05:31 -0000 1.11 +++ gcn-sd.c 4 Mar 2008 06:20:55 -0000 1.12 @@ -182,7 +182,6 @@ enum { __SD_MEDIA_CHANGED = 0, __SD_BAD_CARD, - __SD_QUEUE_SUSPENDED, }; @@ -208,7 +207,6 @@ unsigned long flags; #define SD_MEDIA_CHANGED (1<<__SD_MEDIA_CHANGED) #define SD_BAD_CARD (1<<__SD_BAD_CARD) -#define SD_QUEUE_SUSPENDED (1<<__SD_QUEUE_SUSPENDED) /* card related info */ struct mmc_card card; @@ -250,7 +248,7 @@ set_bit(__SD_BAD_CARD, &host->flags); } -static int sd_card_bad(struct sd_host *host) +static int sd_card_is_bad(struct sd_host *host) { return test_bit(__SD_BAD_CARD, &host->flags); } @@ -503,6 +501,9 @@ /* */ static inline void spi_read(struct sd_host *host, void *data, size_t len) { +#ifdef CONFIG_GAMECUBE_WII + exi_dev_read(host->exi_device, data, len); +#else /* * Houston, we have a problem. * @@ -533,6 +534,7 @@ * */ exi_dev_transfer(host->exi_device, data, len, EXI_OP_READ, EXI_CMD_IDI); +#endif } /* cycles are expressed in 8 clock cycles */ @@ -1014,7 +1016,7 @@ } /* - * + * */ static int sd_welcome_card(struct sd_host *host) { @@ -1022,7 +1024,7 @@ /* soft reset the card */ retval = sd_reset_sequence(host); - if (retval < 0 || sd_card_bad(host)) + if (retval < 0 || sd_card_is_bad(host)) goto out; /* read Operating Conditions Register */ @@ -1054,11 +1056,13 @@ goto err_bad_card; mmc_decode_cid(&host->card); - sd_printk(KERN_INFO, "slot%d: descr \"%s\", size %luk, serial %08x\n", + sd_printk(KERN_INFO, "slot%d: descr \"%s\", size %luk, block %ub," + " serial %08x\n", to_channel(exi_get_exi_channel(host->exi_device)), host->card.cid.prod_name, (unsigned long)((host->card.csd.capacity * (1 << host->card.csd.read_blkbits)) / 1024), + 1 << host->card.csd.read_blkbits, host->card.cid.serial); retval = 0; @@ -1076,7 +1080,7 @@ */ /* - * + * Performs a read request. */ static int sd_read_request(struct sd_host *host, struct request *req) { @@ -1087,10 +1091,21 @@ void *buf = req->buffer; int retval; + /* + * It seems that some cards do not accept single block reads for the + * read block length reported by the card. + * For now, we perform only 512 byte single block reads. + */ + start = req->sector << KERNEL_SECTOR_SHIFT; +#if 0 nr_blocks = req->current_nr_sectors >> (host->card.csd.read_blkbits - KERNEL_SECTOR_SHIFT); block_len = 1 << host->card.csd.read_blkbits; +#else + nr_blocks = req->current_nr_sectors; + block_len = 1 << KERNEL_SECTOR_SHIFT; +#endif for (i = 0; i < nr_blocks; i++) { retval = sd_read_single_block(host, start, buf, block_len); @@ -1102,13 +1117,17 @@ } /* number of kernel sectors transferred */ +#if 0 retval = i << (host->card.csd.read_blkbits - KERNEL_SECTOR_SHIFT); +#else + retval = i; +#endif return retval; } /* - * + * Performs a write request. */ static int sd_write_request(struct sd_host *host, struct request *req) { @@ -1119,7 +1138,7 @@ void *buf = req->buffer; int retval; - /* FIXME, should use 2^WRITE_BL_LEN blocks */ + /* FIXME?, maybe should use 2^WRITE_BL_LEN blocks */ /* kernel sectors and card write blocks are both 512 bytes long */ start = req->sector << KERNEL_SECTOR_SHIFT; @@ -1142,6 +1161,8 @@ } /* + * Verifies if a request should be dispatched or not. + * * Returns: * <0 in case of error. * 0 if request passes the checks @@ -1174,7 +1195,7 @@ } /* - * + * Request dispatcher. */ static int sd_do_request(struct sd_host *host, struct request *req) { @@ -1207,12 +1228,14 @@ unsigned long flags; int retval; +#if 0 /* * We are going to perfom badly due to the read problem explained * above. At least, be nice with other processes trying to use the * cpu. */ -// set_user_nice(current, 0); + set_user_nice(current, 0); +#endif current->flags |= PF_NOFREEZE|PF_MEMALLOC; @@ -1250,7 +1273,8 @@ } /* - * + * Block layer request function. + * Wakes up the IO thread. */ static void sd_request_func(struct request_queue *q) { @@ -1380,14 +1404,15 @@ /* get the card into a known status */ retval = sd_welcome_card(host); - if (retval < 0 || sd_card_bad(host)) { + if (retval < 0 || sd_card_is_bad(host)) { retval = -ENOMEDIUM; goto out; } /* inform the block layer about various sizes */ - blk_queue_hardsect_size(host->queue, 1 << host->card.csd.read_blkbits); - set_capacity(host->disk, host->card.csd.capacity); + 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)); clear_bit(__SD_MEDIA_CHANGED, &host->flags); @@ -1602,6 +1627,12 @@ kfree(host); } + +/* + * EXI layer interface. + * + */ + /* * Checks if the given EXI device is a MMC/SD card and makes it available * if true. @@ -1670,6 +1701,15 @@ .remove = sd_remove, }; + +/* + * Kernel module interface. + * + */ + +/* + * + */ static int __init sd_init_module(void) { int retval = 0; @@ -1689,6 +1729,9 @@ return retval; } +/* + * + */ static void __exit sd_exit_module(void) { unregister_blkdev(SD_MAJOR, DRV_MODULE_NAME); |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/powerpc/platforms Added Files: Kconfig.cputype Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: Kconfig.cputype --- config PPC64 bool "64-bit kernel" default n help This option selects whether a 32-bit or a 64-bit kernel will be built. menu "Processor support" choice prompt "Processor Type" depends on PPC32 default 6xx help There are five families of 32 bit PowerPC chips supported. The most common ones are the desktop and server CPUs (601, 603, 604, 740, 750, 74xx) CPUs from Freescale and IBM, with their embedded 52xx/82xx/83xx/86xx counterparts. The other embeeded parts, namely 4xx, 8xx, e200 (55xx) and e500 (85xx) each form a family of their own that is not compatible with the others. If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx. config 6xx bool "52xx/6xx/7xx/74xx/82xx/83xx/86xx" select PPC_FPU config PPC_85xx bool "Freescale 85xx" select E500 select FSL_SOC select 85xx select WANT_DEVICE_TREE config PPC_8xx bool "Freescale 8xx" select FSL_SOC select 8xx select WANT_DEVICE_TREE select PPC_LIB_RHEAP config 40x bool "AMCC 40x" select PPC_DCR_NATIVE select WANT_DEVICE_TREE config 44x bool "AMCC 44x" select PPC_DCR_NATIVE select WANT_DEVICE_TREE select PPC_UDBG_16550 config E200 bool "Freescale e200" endchoice config POWER4_ONLY bool "Optimize for POWER4" depends on PPC64 default n ---help--- Cause the compiler to optimize for POWER4/POWER5/PPC970 processors. The resulting binary will not work on POWER3 or RS64 processors when compiled with binutils 2.15 or later. config POWER3 bool depends on PPC64 default y if !POWER4_ONLY config POWER4 depends on PPC64 def_bool y config TUNE_CELL bool "Optimize for Cell Broadband Engine" depends on PPC64 help Cause the compiler to optimize for the PPE of the Cell Broadband Engine. This will make the code run considerably faster on Cell but somewhat slower on other machines. This option only changes the scheduling of instructions, not the selection of instructions itself, so the resulting kernel will keep running on all other machines. When building a kernel that is supposed to run only on Cell, you should also select the POWER4_ONLY option. config 6xx bool # this is temp to handle compat with arch=ppc config 8xx bool # this is temp to handle compat with arch=ppc config 83xx bool # this is temp to handle compat with arch=ppc config 85xx bool config E500 bool config PPC_FPU bool default y if PPC64 config 4xx bool depends on 40x || 44x default y config BOOKE bool depends on E200 || E500 || 44x default y config FSL_BOOKE bool depends on E200 || E500 default y config PTE_64BIT bool depends on 44x || E500 default y if 44x default y if E500 && PHYS_64BIT config PHYS_64BIT bool 'Large physical address support' if E500 depends on 44x || E500 select RESOURCES_64BIT default y if 44x ---help--- This option enables kernel support for larger than 32-bit physical addresses. This features is not be available on all e500 cores. If in doubt, say N here. config ALTIVEC bool "AltiVec Support" depends on CLASSIC32 || POWER4 ---help--- This option enables kernel support for the Altivec extensions to the PowerPC processor. The kernel currently supports saving and restoring altivec registers, and turning on the 'altivec enable' bit so user processes can execute altivec instructions. This option is only usefully if you have a processor that supports altivec (G4, otherwise known as 74xx series), but does not have any affect on a non-altivec cpu (it does, however add code to the kernel). If in doubt, say Y here. config SPE bool "SPE Support" depends on E200 || E500 default y ---help--- This option enables kernel support for the Signal Processing Extensions (SPE) to the PowerPC processor. The kernel currently supports saving and restoring SPE registers, and turning on the 'spe enable' bit so user processes can execute SPE instructions. This option is only useful if you have a processor that supports SPE (e500, otherwise known as 85xx series), but does not have any effect on a non-spe cpu (it does, however add code to the kernel). If in doubt, say Y here. config PPC_STD_MMU bool depends on 6xx || POWER3 || POWER4 || PPC64 default y config PPC_STD_MMU_32 def_bool y depends on PPC_STD_MMU && PPC32 config PPC_MM_SLICES bool default y if HUGETLB_PAGE default n config VIRT_CPU_ACCOUNTING bool "Deterministic task and CPU time accounting" depends on PPC64 default y help Select this option to enable more accurate task and CPU time accounting. This is done by reading a CPU counter on each kernel entry and exit and on transitions within the kernel between system, softirq and hardirq state, so there is a small performance impact. This also enables accounting of stolen time on logically-partitioned systems running on IBM POWER5-based machines. If in doubt, say Y here. config SMP depends on PPC_STD_MMU bool "Symmetric multi-processing support" ---help--- This enables support for systems with more than one CPU. If you have a system with only one CPU, say N. If you have a system with more than one CPU, say Y. Note that the kernel does not currently support SMP machines with 603/603e/603ev or PPC750 ("G3") processors since they have inadequate hardware support for multiprocessor operation. If you say N here, the kernel will run on single and multiprocessor machines, but will use only one CPU of a multiprocessor machine. If you say Y here, the kernel will run on single-processor machines. On a single-processor machine, the kernel will run faster if you say N here. If you don't know what to do here, say N. config NR_CPUS int "Maximum number of CPUs (2-128)" range 2 128 depends on SMP default "32" if PPC64 default "4" # Although 750CXe (Gekko) seems to be cache coherent capable, the GAMECUBE # does not maintain cache coherency with respect to dma enabled devices # like the BBA, DI, ARAM, etc. # We need Y here if we want a working kernel dma api. config NOT_COHERENT_CACHE bool depends on 4xx || 8xx || E200 || GAMECUBE default y config CHECK_CACHE_COHERENCY bool endmenu |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/drivers/exi In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/drivers/exi Modified Files: exi-hw.c exi-hw.h Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. Index: exi-hw.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/exi/exi-hw.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- exi-hw.h 24 Feb 2008 18:05:31 -0000 1.9 +++ exi-hw.h 4 Mar 2008 06:20:56 -0000 1.10 @@ -20,7 +20,12 @@ #include <asm/atomic.h> #include <linux/exi.h> + +#ifdef CONFIG_PPC_MERGE +#include <platforms/embedded6xx/gamecube.h> +#else #include <platforms/gamecube.h> +#endif #define exi_printk(level, format, arg...) \ printk(level "exi: " format , ## arg) @@ -130,6 +135,10 @@ unsigned long csr; struct tasklet_struct tasklet; + unsigned long stats_idi_xfers; + unsigned long stats_dma_xfers; + unsigned long stats_xfers; + struct exi_event events[EXI_MAX_EVENTS]; }; Index: exi-hw.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/exi/exi-hw.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- exi-hw.c 24 Feb 2008 18:05:31 -0000 1.16 +++ exi-hw.c 4 Mar 2008 06:20:56 -0000 1.17 @@ -236,6 +236,7 @@ { while(len >= 4) { __exi_transfer_raw_u32(exi_channel, data, mode); + exi_channel->stats_xfers++; data += 4; len -= 4; } @@ -243,14 +244,18 @@ switch(len) { case 1: __exi_transfer_raw_u8(exi_channel, data, mode); + exi_channel->stats_xfers++; break; case 2: __exi_transfer_raw_u16(exi_channel, data, mode); + exi_channel->stats_xfers++; break; case 3: /* XXX optimize this case */ __exi_transfer_raw_u16(exi_channel, data, mode); + exi_channel->stats_xfers++; __exi_transfer_raw_u8(exi_channel, data+2, mode); + exi_channel->stats_xfers++; break; default: break; @@ -270,6 +275,9 @@ BUG_ON(len < 1 || len > 4); + exi_channel->stats_idi_xfers++; + exi_channel->stats_xfers++; + if ((mode & EXI_OP_WRITE)) { switch(len) { case 1: @@ -347,6 +355,9 @@ BUG_ON((data & EXI_DMA_ALIGN) != 0 || (len & EXI_DMA_ALIGN) != 0); + exi_channel->stats_dma_xfers++; + exi_channel->stats_xfers++; + /* * We clear the DATA register here to avoid confusing some * special hardware, like SD cards. |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/ppc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/ppc Modified Files: Kconfig Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/Kconfig,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- Kconfig 24 Feb 2008 18:05:29 -0000 1.42 +++ Kconfig 4 Mar 2008 06:20:55 -0000 1.43 @@ -1190,8 +1190,6 @@ source "drivers/rapidio/Kconfig" -source "drivers/exi/Kconfig" - endmenu menu "Advanced setup" |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/kernel In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/arch/powerpc/kernel Added Files: cputable.c head_32.S machine_kexec.c Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. --- NEW FILE: machine_kexec.c --- /* * Code to handle transition of Linux booting another kernel. * * Copyright (C) 2002-2003 Eric Biederman <ebi...@xm...> * GameCube/ppc32 port Copyright (C) 2004 Albert Herranz * Copyright (C) 2005 IBM Corporation. * * This source code is licensed under the GNU General Public License, * Version 2. See the file COPYING for more details. */ #include <linux/kexec.h> #include <linux/reboot.h> #include <linux/threads.h> #include <asm/machdep.h> #include <asm/lmb.h> void machine_crash_shutdown(struct pt_regs *regs) { if (ppc_md.machine_crash_shutdown) ppc_md.machine_crash_shutdown(regs); } /* * Do what every setup is needed on image and the * reboot code buffer to allow us to avoid allocations * later. */ int machine_kexec_prepare(struct kimage *image) { if (ppc_md.machine_kexec_prepare) return ppc_md.machine_kexec_prepare(image); /* * Fail if platform doesn't provide its own machine_kexec_prepare * implementation. */ return -ENOSYS; } void machine_kexec_cleanup(struct kimage *image) { if (ppc_md.machine_kexec_cleanup) ppc_md.machine_kexec_cleanup(image); } /* * Do not allocate memory (or fail in any way) in machine_kexec(). * We are past the point of no return, committed to rebooting now. */ NORET_TYPE void machine_kexec(struct kimage *image) { if (ppc_md.machine_kexec) ppc_md.machine_kexec(image); else { /* * Fall back to normal restart if platform doesn't provide * its own kexec function, and user insist to kexec... */ machine_restart(NULL); } for(;;); } void __init reserve_crashkernel(void) { #ifndef CONFIG_GAMECUBE unsigned long long crash_size, crash_base; int ret; /* this is necessary because of lmb_phys_mem_size() */ lmb_analyze(); /* use common parsing */ ret = parse_crashkernel(boot_command_line, lmb_phys_mem_size(), &crash_size, &crash_base); if (ret == 0 && crash_size > 0) { if (crash_base == 0) crash_base = KDUMP_KERNELBASE; crashk_res.start = crash_base; } else { /* handle the device tree */ crash_size = crashk_res.end - crashk_res.start + 1; } if (crash_size == 0) return; /* We might have got these values via the command line or the * device tree, either way sanitise them now. */ if (crashk_res.start != KDUMP_KERNELBASE) printk("Crash kernel location must be 0x%x\n", KDUMP_KERNELBASE); crashk_res.start = KDUMP_KERNELBASE; crash_size = PAGE_ALIGN(crash_size); crashk_res.end = crashk_res.start + crash_size - 1; /* Crash kernel trumps memory limit */ if (memory_limit && memory_limit <= crashk_res.end) { memory_limit = crashk_res.end + 1; printk("Adjusted memory limit for crashkernel, now 0x%lx\n", memory_limit); } printk(KERN_INFO "Reserving %ldMB of memory at %ldMB " "for crashkernel (System RAM: %ldMB)\n", (unsigned long)(crash_size >> 20), (unsigned long)(crashk_res.start >> 20), (unsigned long)(lmb_phys_mem_size() >> 20)); lmb_reserve(crashk_res.start, crash_size); #endif } int overlaps_crashkernel(unsigned long start, unsigned long size) { return (start + size) > crashk_res.start && start <= crashk_res.end; } --- NEW FILE: cputable.c --- /* * Copyright (C) 2001 Ben. Herrenschmidt (be...@ke...) * * Modifications for ppc64: * Copyright (C) 2003 Dave Engebretsen <eng...@us...> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <linux/string.h> #include <linux/sched.h> #include <linux/threads.h> #include <linux/init.h> #include <linux/module.h> #include <asm/oprofile_impl.h> [...1389 lines suppressed...] if ((value & fcur->mask) == fcur->value) continue; /* These PTRRELOCs will disappear once the new scheme for * modules and vdso is implemented */ pstart = ((unsigned int *)fcur) + (fcur->start_off / 4); pend = ((unsigned int *)fcur) + (fcur->end_off / 4); for (p = pstart; p < pend; p++) { *p = 0x60000000u; asm volatile ("dcbst 0, %0" : : "r" (p)); } asm volatile ("sync" : : : "memory"); for (p = pstart; p < pend; p++) asm volatile ("icbi 0,%0" : : "r" (p)); asm volatile ("sync; isync" : : : "memory"); } } --- NEW FILE: head_32.S --- /* * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gd...@li...) * * Rewritten by Cort Dougan (co...@cs...) for PReP * Copyright (C) 1996 Cort Dougan <co...@cs...> * Adapted for Power Macintosh by Paul Mackerras. * Low-level exception handlers and MMU support * rewritten by Paul Mackerras. * Copyright (C) 1996 Paul Mackerras. * MPC8xx modifications Copyright (C) 1997 Dan Malek (dm...@jl...). * * This file contains the low-level support and setup for the * PowerPC platform, including trap and interrupt dispatch. * (The PPC 8xx embedded CPUs use head_8xx.S instead.) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version [...1316 lines suppressed...] .space 4096 .globl swapper_pg_dir swapper_pg_dir: .space PGD_TABLE_SIZE .globl intercept_table intercept_table: .long 0, 0, i0x200, i0x300, i0x400, 0, i0x600, i0x700 .long i0x800, 0, 0, 0, 0, i0xd00, 0, 0 .long 0, 0, 0, i0x1300, 0, 0, 0, 0 .long 0, 0, 0, 0, 0, 0, 0, 0 .long 0, 0, 0, 0, 0, 0, 0, 0 .long 0, 0, 0, 0, 0, 0, 0, 0 /* Room for two PTE pointers, usually the kernel and current user pointers * to their respective root page table. */ abatron_pteptrs: .space 8 |
From: Albert H. <he...@us...> - 2008-03-04 06:20:53
|
Update of /cvsroot/gc-linux/linux/sound/ppc In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv7117/sound/ppc Modified Files: gcn-ai.c Log Message: Added powerpc arch. Tweaked some driver for wii compatibility. Index: gcn-ai.c =================================================================== RCS file: /cvsroot/gc-linux/linux/sound/ppc/gcn-ai.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- gcn-ai.c 14 Nov 2007 23:08:58 -0000 1.9 +++ gcn-ai.c 4 Mar 2008 06:20:56 -0000 1.10 @@ -28,6 +28,12 @@ #define SNDRV_GET_ID #include <sound/initval.h> +#ifdef CONFIG_PPC_MERGE +#include <platforms/embedded6xx/gamecube.h> +#else +#include <platforms/gamecube.h> +#endif + #ifdef AI_DEBUG # define DPRINTK(fmt, args...) \ printk(KERN_ERR "%s: " fmt, __FUNCTION__ , ## args) @@ -47,6 +53,8 @@ #define ai_printk(level, format, arg...) \ printk(level PFX format , ## arg) +#define DSP_BASE (GCN_IO1_BASE + 0x5000) +#define AI_BASE (GCN_IO2_BASE + 0x6c00) #define DSP_IRQ 6 @@ -71,7 +79,8 @@ #define AI_DCL_PLAY (1<<15) #define AUDIO_DMA_LEFT *(volatile u_int16_t *)(0xCC00503A) -#define AUDIO_STREAM_STATUS *(volatile u_int32_t *)(0xCC006C00) + +#define AUDIO_STREAM_STATUS *(volatile u_int32_t *)(GCN_IO2_BASE+0x6C00) #define AI_AICR_RATE (1<<6) #define LoadSample(addr, len) \ |
From: Albert H. <he...@us...> - 2008-03-04 06:11:20
|
Update of /cvsroot/gc-linux/linux/drivers/serial In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv3705 Modified Files: usbgecko.c Log Message: Added informer to detect remove-while-in-use condition. Index: usbgecko.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/serial/usbgecko.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- usbgecko.c 24 Feb 2008 18:08:15 -0000 1.1 +++ usbgecko.c 4 Mar 2008 06:11:22 -0000 1.2 @@ -261,8 +261,11 @@ struct ug_adapter *adapter = co->data; char *b = (char *)buf; - while(count--) + while(count--) { + if (*b == '\n') + ug_safe_putc(adapter, '\r'); ug_safe_putc(adapter, *b++); + } } /* @@ -320,9 +323,9 @@ static int ug_tty_poller(void *tty_) { - struct tty_struct *tty = tty_; - struct ug_adapter *adapter = tty->driver_data; struct sched_param param = { .sched_priority = 1 }; + struct tty_struct *tty = tty_; + struct ug_adapter *adapter; int count; char ch; @@ -330,13 +333,15 @@ set_task_state(current, TASK_RUNNING); while(!kthread_should_stop()) { - count = ug_safe_getc(adapter, &ch); + count = 0; + adapter = tty->driver_data; + if (adapter) + count = ug_safe_getc(adapter, &ch); set_task_state(current, TASK_INTERRUPTIBLE); if (count) { tty_insert_flip_char(tty, ch, TTY_NORMAL); tty_flip_buffer_push(tty); } - schedule_timeout(1); set_task_state(current, TASK_RUNNING); } @@ -527,6 +532,10 @@ console = &ug_consoles[slot]; adapter = console->data; + if (adapter->refcnt) { + ug_printk(KERN_ERR, "adapter removed while in use!\n"); + } + ug_tty_exit(); unregister_console(console); |
From: Albert H. <he...@us...> - 2008-03-04 06:08:05
|
Update of /cvsroot/gc-linux/linux/drivers/net In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv2384 Modified Files: Kconfig Log Message: Made BBA driver gamecube-only. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/Kconfig,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- Kconfig 24 Feb 2008 18:05:32 -0000 1.29 +++ Kconfig 4 Mar 2008 06:08:06 -0000 1.30 @@ -275,7 +275,7 @@ config GAMECUBE_BBA tristate "Nintendo GameCube BroadBand Adapter (ethernet) support" - depends on GAMECUBE && GAMECUBE_EXI + depends on GAMECUBE && GAMECUBE_EXI && !GAMECUBE_WII help Say Y here to add ethernet support for the Broadband Adapter (BBA). |
From: Albert H. <he...@us...> - 2008-03-04 06:06:03
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv1565 Modified Files: Kconfig Makefile Added Files: rvl-mem2.c Log Message: Added new block driver rvl-mem2 to access MEM2 (52MB) as a block device. Made ARAM and DI drivers gamecube-only. --- NEW FILE: rvl-mem2.c --- /* * drivers/block/rvl-mem2.c * * Nintendo Wii MEM2 block driver * Copyright (C) 2008 The GameCube Linux Team * Copyright (C) 2008 Albert Herranz * * Based on gcn-aram.c. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * */ #include <linux/module.h> #include <linux/major.h> #include <linux/platform_device.h> #include <linux/blkdev.h> #include <linux/fcntl.h> /* O_ACCMODE */ #include <linux/hdreg.h> /* HDIO_GETGEO */ #include <asm/io.h> #define DRV_MODULE_NAME "rvl-mem2" #define DRV_DESCRIPTION "Nintendo Wii MEM2 block driver" #define DRV_AUTHOR "Albert Herranz" static char mem2_driver_version[] = "0.1"; #define mem2_printk(level, format, arg...) \ printk(level DRV_MODULE_NAME ": " format , ## arg) #ifdef MEM2_DEBUG # define DBG(fmt, args...) \ printk(KERN_ERR "%s: " fmt, __FUNCTION__ , ## args) #else # define DBG(fmt, args...) #endif /* * Hardware. */ #define MEM2_START 0x10000000 #define MEM2_SIZE (52*1024*1024) /* 52MB */ #define MEM2_END (MEM2_START + MEM2_SIZE - 1) /* * Driver settings */ #define MEM2_NAME "rvlmem2" #define MEM2_MAJOR Z2RAM_MAJOR #define MEM2_SECTOR_SIZE PAGE_SIZE struct mem2_device { spinlock_t lock; void __iomem *io_base; struct block_device_operations fops; struct gendisk *disk; struct request_queue *queue; int ref_count; struct platform_device pdev; /* must be last member */ }; /* get the mem2 device given the platform device of a mem2 device */ #define to_mem2_device(n) container_of(n,struct mem2_device,pdev) /* * */ /* * Performs block layer requests. */ static void mem2_do_request(struct request_queue *q) { struct mem2_device *adev = q->queuedata; struct request *req; unsigned long mem2_addr; size_t len; int uptodate; 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 > MEM2_SIZE) { mem2_printk(KERN_ERR, "bad access: block=%lu," " size=%u\n", (unsigned long)req->sector, len); uptodate = 0; } else { switch(rq_data_dir(req)) { case READ: memcpy(req->buffer, adev->io_base + mem2_addr, len); break; case WRITE: memcpy(adev->io_base + mem2_addr, req->buffer, len); break; } uptodate = 1; } } else { uptodate = 0; } end_queued_request(req, uptodate); req = elv_next_request(q); } } /* * Opens the MEM2 device. */ static int mem2_open(struct inode *inode, struct file *filp) { struct mem2_device *adev = inode->i_bdev->bd_disk->private_data; unsigned long flags; int retval = 0; spin_lock_irqsave(&adev->lock, flags); /* only allow a minor of 0 to be opened */ if (iminor(inode)) { retval = -ENODEV; goto out; } /* honor exclusive open mode */ if (adev->ref_count == -1 || (adev->ref_count && (filp->f_flags & O_EXCL))) { retval = -EBUSY; goto out; } if ((filp->f_flags & O_EXCL)) adev->ref_count = -1; else adev->ref_count++; out: spin_unlock_irqrestore(&adev->lock, flags); return retval; } /* * Closes the MEM2 device. */ static int mem2_release(struct inode *inode, struct file *filp) { struct mem2_device *adev = inode->i_bdev->bd_disk->private_data; unsigned long flags; spin_lock_irqsave(&adev->lock, flags); if (adev->ref_count > 0) adev->ref_count--; else adev->ref_count = 0; spin_unlock_irqrestore(&adev->lock, flags); return 0; } /* * Minimal ioctl for the MEM2 device. */ static int mem2_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { struct hd_geometry geo; switch (cmd) { case BLKRAGET: case BLKFRAGET: case BLKROGET: case BLKBSZGET: case BLKSSZGET: case BLKSECTGET: case BLKGETSIZE: case BLKGETSIZE64: case BLKFLSBUF: return ioctl_by_bdev(inode->i_bdev,cmd,arg); case HDIO_GETGEO: /* fake the entries */ geo.heads = 16; geo.sectors = 32; geo.start = 0; geo.cylinders = MEM2_SIZE / (geo.heads * geo.sectors); if (copy_to_user((void __user*)arg,&geo,sizeof(geo))) return -EFAULT; return 0; default: return -ENOTTY; } } static struct block_device_operations mem2_fops = { .owner = THIS_MODULE, .open = mem2_open, .release = mem2_release, .ioctl = mem2_ioctl, }; /* * */ static int mem2_init_blk_dev(struct mem2_device *adev) { struct gendisk *disk; struct request_queue *queue; int retval; adev->ref_count = 0; retval = register_blkdev(MEM2_MAJOR, MEM2_NAME); if (retval) goto err_register_blkdev; retval = -ENOMEM; spin_lock_init(&adev->lock); queue = blk_init_queue(mem2_do_request, &adev->lock); if (!queue) 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); queue->queuedata = adev; adev->queue = queue; disk = alloc_disk(1); if (!disk) goto err_alloc_disk; disk->major = MEM2_MAJOR; disk->first_minor = 0; disk->fops = &mem2_fops; strcpy(disk->disk_name, MEM2_NAME); disk->queue = adev->queue; set_capacity(disk, MEM2_SIZE >> 9); disk->private_data = adev; adev->disk = disk; add_disk(adev->disk); retval = 0; goto out; err_alloc_disk: blk_cleanup_queue(adev->queue); err_blk_init_queue: unregister_blkdev(MEM2_MAJOR, MEM2_NAME); err_register_blkdev: out: return retval; } /* * */ static void mem2_exit_blk_dev(struct mem2_device *adev) { if (adev->disk) { del_gendisk(adev->disk); put_disk(adev->disk); } if (adev->queue) blk_cleanup_queue(adev->queue); unregister_blkdev(MEM2_MAJOR, MEM2_NAME); } /* * */ static int mem2_init(struct mem2_device *adev, struct resource *mem) { memset(adev, 0, sizeof(*adev) - sizeof(adev->pdev)); adev->io_base = ioremap(MEM2_START, MEM2_SIZE); if (!adev->io_base) { mem2_printk(KERN_ERR, "unable to ioremap MEM2\n"); return -EIO; } return mem2_init_blk_dev(adev); } /* * */ static void mem2_exit(struct mem2_device *adev) { if (adev->io_base) iounmap(adev->io_base); mem2_exit_blk_dev(adev); } /* * Needed for platform devices. */ static void mem2_dev_release(struct device *dev) { } static struct resource mem2_resources[] = { [0] = { .start = MEM2_START, .end = MEM2_END, .flags = IORESOURCE_MEM, }, }; static struct mem2_device mem2_device = { .pdev = { .name = MEM2_NAME, .id = 0, .num_resources = ARRAY_SIZE(mem2_resources), .resource = mem2_resources, .dev = { .release = mem2_dev_release, }, }, }; /* * */ static int mem2_probe(struct device *device) { struct platform_device *pdev = to_platform_device(device); struct mem2_device *adev = to_mem2_device(pdev); struct resource *mem; int retval; retval = -ENODEV; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (mem) { retval = mem2_init(adev, mem); } return retval; } /* * */ static int mem2_remove(struct device *device) { struct platform_device *pdev = to_platform_device(device); struct mem2_device *adev = to_mem2_device(pdev); mem2_exit(adev); return 0; } static struct device_driver mem2_driver = { .name = MEM2_NAME, .bus = &platform_bus_type, .probe = mem2_probe, .remove = mem2_remove, }; /* * */ static int __init mem2_init_module(void) { int retval = 0; mem2_printk(KERN_INFO, "%s - version %s\n", DRV_DESCRIPTION, mem2_driver_version); retval = driver_register(&mem2_driver); if (!retval) { retval = platform_device_register(&mem2_device.pdev); } return retval; } /* * */ static void __exit mem2_exit_module(void) { platform_device_unregister(&mem2_device.pdev); driver_unregister(&mem2_driver); } module_init(mem2_init_module); module_exit(mem2_exit_module); MODULE_DESCRIPTION(DRV_DESCRIPTION); MODULE_AUTHOR(DRV_AUTHOR); MODULE_LICENSE("GPL"); Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Makefile,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- Makefile 24 Feb 2008 18:05:31 -0000 1.17 +++ Makefile 4 Mar 2008 06:06:07 -0000 1.18 @@ -16,6 +16,7 @@ obj-$(CONFIG_GAMECUBE_ARAM) += gcn-aram.o obj-$(CONFIG_GAMECUBE_MEMCARD) += gcn-memcard.o obj-$(CONFIG_GAMECUBE_SD) += gcn-sd.o +obj-$(CONFIG_WII_MEM2) += rvl-mem2.o obj-$(CONFIG_BLK_DEV_RAM) += rd.o obj-$(CONFIG_BLK_DEV_LOOP) += loop.o obj-$(CONFIG_BLK_DEV_PS2) += ps2esdi.o Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Kconfig,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- Kconfig 24 Feb 2008 18:05:31 -0000 1.29 +++ Kconfig 4 Mar 2008 06:06:07 -0000 1.30 @@ -67,7 +67,7 @@ config GAMECUBE_DI tristate "Nintendo Gamecube (alternate) DVD support" - depends on GAMECUBE && EXPERIMENTAL + depends on GAMECUBE && !GAMECUBE_WII help This enables support for using DVD-R media on the Nintendo GameCube DVD drive. @@ -89,7 +89,7 @@ config GAMECUBE_ARAM tristate "Nintendo GameCube ARAM" - depends on GAMECUBE + depends on GAMECUBE && !GAMECUBE_WII help This enables support for using the 16MB of ARAM found in the Nintendo GameCube as a ramdisk or as a swap partition. @@ -127,6 +127,17 @@ To compile this driver as a module, choose M here: the module will be called gcn-sd. +config WII_MEM2 + tristate "Nintendo Wii MEM2" + depends on GAMECUBE_WII + help + This enables support for using the MEM2 found in the + Nintendo Wii as a ramdisk or as a swap partition. + 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 BLK_DEV_XD tristate "XT hard disk support" depends on ISA && ISA_DMA_API |
From: Albert H. <he...@us...> - 2008-03-04 06:01:45
|
Update of /cvsroot/gc-linux/linux/drivers/input/si In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv32021 Modified Files: gcn-si.c Log Message: s/0xcc/0xcd/ thanks to mth. Index: gcn-si.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/si/gcn-si.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gcn-si.c 14 Nov 2007 23:08:49 -0000 1.7 +++ gcn-si.c 4 Mar 2008 06:01:49 -0000 1.8 @@ -2,7 +2,7 @@ * drivers/input/gcn-si.c * * Nintendo GameCube Serial Interface driver - * Copyright (C) 2004 The GameCube Linux Team + * Copyright (C) 2004-2008 The GameCube Linux Team * Copyright (C) 2004 Steven Looman * Copyright (C) 2005 Albert Herranz * @@ -24,6 +24,12 @@ #include <asm/io.h> +#ifdef CONFIG_PPC_MERGE +#include <platforms/embedded6xx/gamecube.h> +#else +#include <platforms/gamecube.h> +#endif + #ifdef SI_DEBUG # define DPRINTK(fmt, args...) \ printk(KERN_ERR "%s: " fmt, __FUNCTION__ , ## args) @@ -61,14 +67,16 @@ #define REFRESH_TIME HZ/100 -#define SICOUTBUF(x) ((void __iomem *)(0xcc006400 + (x)*12)) -#define SICINBUFH(x) ((void __iomem *)(0xcc006404 + (x)*12)) -#define SICINBUFL(x) ((void __iomem *)(0xcc006408 + (x)*12)) +#define SI_BASE (GCN_IO2_BASE | 0x00006400) -#define SIPOLL ((void __iomem *)0xcc006430) -#define SICOMCSR ((void __iomem *)0xcc006434) -#define SISR ((void __iomem *)0xcc006438) -#define SIEXILK ((void __iomem *)0xcc00643c) +#define SICOUTBUF(x) ((void __iomem *)(SI_BASE + 0 + (x)*12)) +#define SICINBUFH(x) ((void __iomem *)(SI_BASE + 4 + (x)*12)) +#define SICINBUFL(x) ((void __iomem *)(SI_BASE + 8 + (x)*12)) + +#define SIPOLL ((void __iomem *)(SI_BASE + 0x30)) +#define SICOMCSR ((void __iomem *)(SI_BASE + 0x34)) +#define SISR ((void __iomem *)(SI_BASE + 0x38)) +#define SIEXILK ((void __iomem *)(SI_BASE + 0x3c)) #define ID_PAD 0x0900 #define ID_KEYBOARD 0x0820 @@ -90,8 +98,8 @@ static struct resource gcn_si_resources = { - .start = 0xcc006400, - .end = 0xcc006500, + .start = SI_BASE, + .end = SI_BASE + 0x0100, .name = DRV_MODULE_NAME, .flags = IORESOURCE_MEM | IORESOURCE_BUSY }; @@ -166,20 +174,20 @@ out_be32(SICOMCSR, 0); out_be32(SISR, 0); - out_be32((void __iomem *)0xcc006480, 0); - out_be32((void __iomem *)0xcc006484, 0); - out_be32((void __iomem *)0xcc006488, 0); - out_be32((void __iomem *)0xcc00648c, 0); + out_be32((void __iomem *)(SI_BASE + 0x80), 0); + out_be32((void __iomem *)(SI_BASE + 0x84), 0); + out_be32((void __iomem *)(SI_BASE + 0x88), 0); + out_be32((void __iomem *)(SI_BASE + 0x8c), 0); - out_be32((void __iomem *)0xcc006490, 0); - out_be32((void __iomem *)0xcc006494, 0); - out_be32((void __iomem *)0xcc006498, 0); - out_be32((void __iomem *)0xcc00649c, 0); + out_be32((void __iomem *)(SI_BASE + 0x90), 0); + out_be32((void __iomem *)(SI_BASE + 0x94), 0); + out_be32((void __iomem *)(SI_BASE + 0x98), 0); + out_be32((void __iomem *)(SI_BASE + 0x9c), 0); - out_be32((void __iomem *)0xcc0064a0, 0); - out_be32((void __iomem *)0xcc0064a4, 0); - out_be32((void __iomem *)0xcc0064a8, 0); - out_be32((void __iomem *)0xcc0064ac, 0); + out_be32((void __iomem *)(SI_BASE + 0xa0), 0); + out_be32((void __iomem *)(SI_BASE + 0xa4), 0); + out_be32((void __iomem *)(SI_BASE + 0xa8), 0); + out_be32((void __iomem *)(SI_BASE + 0xac), 0); } /** @@ -210,7 +218,7 @@ gcn_si_wait_transfer_done(); - return in_be32((void __iomem *)0xcc006480); + return in_be32((void __iomem *)(SI_BASE + 0x80)); } /** |
From: Albert H. <he...@us...> - 2008-03-04 06:00:19
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/configs In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv31972/configs Log Message: Directory /cvsroot/gc-linux/linux/arch/powerpc/configs added to the repository |
From: Albert H. <he...@us...> - 2008-03-02 21:06:51
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv26137/embedded6xx Log Message: Directory /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx added to the repository |