This list is closed, nobody may subscribe to it.
2004 |
Jan
(53) |
Feb
(78) |
Mar
(34) |
Apr
(26) |
May
(25) |
Jun
(34) |
Jul
(16) |
Aug
(16) |
Sep
(2) |
Oct
(58) |
Nov
(13) |
Dec
(32) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(62) |
Feb
(4) |
Mar
(40) |
Apr
(9) |
May
(13) |
Jun
(26) |
Jul
(32) |
Aug
(24) |
Sep
(18) |
Oct
(18) |
Nov
(14) |
Dec
|
2006 |
Jan
(15) |
Feb
(2) |
Mar
(23) |
Apr
(2) |
May
(2) |
Jun
(13) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2007 |
Jan
(1) |
Feb
(45) |
Mar
|
Apr
(13) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(31) |
Dec
(5) |
2008 |
Jan
(6) |
Feb
(34) |
Mar
(113) |
Apr
(40) |
May
(19) |
Jun
(5) |
Jul
(41) |
Aug
(13) |
Sep
(53) |
Oct
(4) |
Nov
(53) |
Dec
|
2009 |
Jan
(1) |
Feb
(29) |
Mar
(66) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(163) |
Nov
|
Dec
(91) |
From: Albert H. <he...@us...> - 2009-12-09 18:53:37
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv25227/arch/powerpc/platforms/embedded6xx Removed Files: hollywood-pic.c hollywood-pic.h starlet-gpio.c Log Message: Remove old files for gc-linux-2.6.32. --- hollywood-pic.h DELETED --- --- hollywood-pic.c DELETED --- --- starlet-gpio.c DELETED --- |
From: Albert H. <he...@us...> - 2009-12-09 18:53:37
|
Update of /cvsroot/gc-linux/linux/drivers/usb/host In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv25227/drivers/usb/host Removed Files: ehci-mipc.c ohci-mipc.c Log Message: Remove old files for gc-linux-2.6.32. --- ohci-mipc.c DELETED --- --- ehci-mipc.c DELETED --- |
From: Albert H. <he...@us...> - 2009-12-09 18:53:35
|
Update of /cvsroot/gc-linux/linux/drivers/mmc/host In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv25227/drivers/mmc/host Removed Files: sdhci-mipc.c Log Message: Remove old files for gc-linux-2.6.32. --- sdhci-mipc.c DELETED --- |
From: Albert H. <he...@us...> - 2009-12-09 18:47:55
|
Update of /cvsroot/gc-linux/linux/drivers/usb/host In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv23815/drivers/usb/host Added Files: ehci-hlwd.c ohci-hlwd.c Log Message: Add new files for gc-linux-2.6.32. --- NEW FILE: ehci-hlwd.c --- /* * drivers/usb/host/ehci-hlwd.c * * Nintendo Wii (Hollywood) USB Enhanced Host Controller Interface. * Copyright (C) 2009 The GameCube Linux Team * Copyright (C) 2009 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. * * Based on ehci-ppc-of.c * * EHCI HCD (Host Controller Driver) for USB. * * Bus Glue for PPC On-Chip EHCI driver on the of_platform bus * Tested on AMCC PPC 440EPx * * Valentine Barshak <vba...@ru...> * * Based on "ehci-ppc-soc.c" by Stefan Roese <sr...@de...> * and "ohci-ppc-of.c" by Sylvain Munaut <tn...@24...> * * This file is licenced under the GPL. */ #include <linux/signal.h> #include <linux/of.h> #include <linux/of_platform.h> #include <asm/starlet.h> #define DRV_MODULE_NAME "ehci-hlwd" #define DRV_DESCRIPTION "Nintendo Wii EHCI Host Controller" #define DRV_AUTHOR "Albert Herranz" #define HLWD_EHCI_CTL 0x0d0400cc #define HLWD_EHCI_CTL_INTE (1<<15) /* called during probe() after chip reset completes */ static int ehci_hlwd_reset(struct usb_hcd *hcd) { struct ehci_hcd *ehci = hcd_to_ehci(hcd); void __iomem *ehci_ctl; int error; dbg_hcs_params(ehci, "reset"); dbg_hcc_params(ehci, "reset"); error = ehci_halt(ehci); if (error) goto out; error = ehci_init(hcd); if (error) goto out; ehci_ctl = ioremap(HLWD_EHCI_CTL, 4); if (!ehci_ctl) { printk(KERN_ERR __FILE__ ": ioremap failed\n"); error = -EBUSY; goto out; } /* enable notification of EHCI interrupts */ out_be32(ehci_ctl, in_be32(ehci_ctl) | HLWD_EHCI_CTL_INTE); iounmap(ehci_ctl); ehci->sbrn = 0x20; error = ehci_reset(ehci); ehci_port_power(ehci, 0); out: return error; } static const struct hc_driver ehci_hlwd_hc_driver = { .description = hcd_name, .product_desc = "Nintendo Wii EHCI Host Controller", .hcd_priv_size = sizeof(struct ehci_hcd), /* * generic hardware linkage */ .irq = ehci_irq, .flags = HCD_USB2 | HCD_BOUNCE_DMA_MEM, /* * basic lifecycle operations */ .reset = ehci_hlwd_reset, .start = ehci_run, .stop = ehci_stop, .shutdown = ehci_shutdown, /* * managing i/o requests and associated device resources */ .urb_enqueue = ehci_urb_enqueue, .urb_dequeue = ehci_urb_dequeue, .endpoint_disable = ehci_endpoint_disable, .endpoint_reset = ehci_endpoint_reset, /* * scheduling support */ .get_frame_number = ehci_get_frame, /* * root hub support */ .hub_status_data = ehci_hub_status_data, .hub_control = ehci_hub_control, #ifdef CONFIG_PM .bus_suspend = ehci_bus_suspend, .bus_resume = ehci_bus_resume, #endif .relinquish_port = ehci_relinquish_port, .port_handed_over = ehci_port_handed_over, .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, }; static int __devinit ehci_hcd_hlwd_probe(struct of_device *op, const struct of_device_id *match) { struct device_node *dn = op->node; struct usb_hcd *hcd; struct ehci_hcd *ehci = NULL; struct resource res; dma_addr_t coherent_mem_addr; size_t coherent_mem_size; int irq; int error = -ENODEV; if (usb_disabled()) goto out; if (starlet_get_ipc_flavour() != STARLET_IPC_MINI) goto out; dev_dbg(&op->dev, "initializing " DRV_MODULE_NAME " USB Controller\n"); error = of_address_to_resource(dn, 0, &res); if (error) goto out; hcd = usb_create_hcd(&ehci_hlwd_hc_driver, &op->dev, DRV_MODULE_NAME); if (!hcd) { error = -ENOMEM; goto out; } hcd->rsrc_start = res.start; hcd->rsrc_len = resource_size(&res); error = of_address_to_resource(dn, 1, &res); if (error) { /* satisfy coherent memory allocations from mem1 or mem2 */ dev_warn(&op->dev, "using normal memory\n"); } else { coherent_mem_addr = res.start; coherent_mem_size = res.end - res.start + 1; if (!dma_declare_coherent_memory(&op->dev, coherent_mem_addr, coherent_mem_addr, coherent_mem_size, DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE)) { dev_err(&op->dev, "error declaring %u bytes of" " coherent memory at 0x%p\n", coherent_mem_size, (void *)coherent_mem_addr); error = -EBUSY; goto err_decl_coherent; } } irq = irq_of_parse_and_map(dn, 0); if (irq == NO_IRQ) { printk(KERN_ERR __FILE__ ": irq_of_parse_and_map failed\n"); error = -EBUSY; goto err_irq; } hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); if (!hcd->regs) { printk(KERN_ERR __FILE__ ": ioremap failed\n"); error = -EBUSY; goto err_ioremap; } ehci = hcd_to_ehci(hcd); ehci->caps = hcd->regs; ehci->regs = hcd->regs + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); /* cache this readonly data; minimize chip reads */ ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); error = usb_add_hcd(hcd, irq, 0); if (error == 0) return 0; iounmap(hcd->regs); err_ioremap: irq_dispose_mapping(irq); err_irq: dma_release_declared_memory(&op->dev); err_decl_coherent: usb_put_hcd(hcd); out: return error; } static int ehci_hcd_hlwd_remove(struct of_device *op) { struct usb_hcd *hcd = dev_get_drvdata(&op->dev); dev_set_drvdata(&op->dev, NULL); dev_dbg(&op->dev, "stopping " DRV_MODULE_NAME " USB Controller\n"); usb_remove_hcd(hcd); iounmap(hcd->regs); irq_dispose_mapping(hcd->irq); dma_release_declared_memory(&op->dev); usb_put_hcd(hcd); return 0; } static int ehci_hcd_hlwd_shutdown(struct of_device *op) { struct usb_hcd *hcd = dev_get_drvdata(&op->dev); if (hcd->driver->shutdown) hcd->driver->shutdown(hcd); return 0; } static struct of_device_id ehci_hcd_hlwd_match[] = { { .compatible = "nintendo,hollywood-ehci", }, {}, }; MODULE_DEVICE_TABLE(of, ehci_hcd_hlwd_match); static struct of_platform_driver ehci_hcd_hlwd_driver = { .name = DRV_MODULE_NAME, .match_table = ehci_hcd_hlwd_match, .probe = ehci_hcd_hlwd_probe, .remove = ehci_hcd_hlwd_remove, .shutdown = ehci_hcd_hlwd_shutdown, .driver = { .name = DRV_MODULE_NAME, .owner = THIS_MODULE, }, }; --- NEW FILE: ohci-hlwd.c --- /* * drivers/usb/host/ohci-hlwd.c * * Nintendo Wii (Hollywood) USB Open Host Controller Interface. * Copyright (C) 2009 The GameCube Linux Team * Copyright (C) 2009 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. * * Based on ohci-ppc-of.c * * OHCI HCD (Host Controller Driver) for USB. * * (C) Copyright 1999 Roman Weissgaerber <we...@vi...> * (C) Copyright 2000-2002 David Brownell <dbr...@us...> * (C) Copyright 2002 Hewlett-Packard Company * (C) Copyright 2006 Sylvain Munaut <tn...@24...> * * Bus glue for OHCI HC on the of_platform bus * * Modified for of_platform bus from ohci-sa1111.c * * This file is licenced under the GPL. */ #include <linux/signal.h> #include <linux/of_platform.h> #include <asm/prom.h> #include <asm/starlet.h> #include <asm/time.h> /* for get_tbl() */ #define DRV_MODULE_NAME "ohci-hlwd" #define DRV_DESCRIPTION "Nintendo Wii OHCI Host Controller" #define DRV_AUTHOR "Albert Herranz" #define HLWD_EHCI_CTL 0x0d0400cc /* vendor control register */ #define HLWD_EHCI_CTL_OH0INTE (1<<11) /* oh0 interrupt enable */ #define HLWD_EHCI_CTL_OH1INTE (1<<12) /* oh1 interrupt enable */ #define __spin_event_timeout(condition, timeout_usecs, result, __end_tbl) \ for (__end_tbl = get_tbl() + tb_ticks_per_usec * timeout_usecs; \ !(result = (condition)) && (int)(__end_tbl - get_tbl()) > 0;) static DEFINE_SPINLOCK(control_quirk_lock); void ohci_hlwd_control_quirk(struct ohci_hcd *ohci) { static struct ed *ed; /* empty ED */ struct td *td; /* dummy TD */ __hc32 head; __hc32 current; unsigned long ctx; int result; unsigned long flags; /* * One time only. * Allocate and keep a special empty ED with just a dummy TD. */ if (!ed) { ed = ed_alloc(ohci, GFP_ATOMIC); if (!ed) return; td = td_alloc(ohci, GFP_ATOMIC); if (!td) { ed_free(ohci, ed); ed = NULL; return; } ed->hwNextED = 0; ed->hwTailP = ed->hwHeadP = cpu_to_hc32(ohci, td->td_dma & ED_MASK); ed->hwINFO |= cpu_to_hc32(ohci, ED_OUT); wmb(); } spin_lock_irqsave(&control_quirk_lock, flags); /* * The OHCI USB host controllers on the Nintendo Wii * video game console stop working when new TDs are * added to a scheduled control ED after a transfer has * has taken place on it. * * Before scheduling any new control TD, we make the * controller happy by always loading a special control ED * with a single dummy TD and letting the controller attempt * the transfer. * The controller won't do anything with it, as the special * ED has no TDs, but it will keep the controller from failing * on the next transfer. */ head = ohci_readl(ohci, &ohci->regs->ed_controlhead); if (head) { /* * Load the special empty ED and tell the controller to * process the control list. */ ohci_writel(ohci, ed->dma, &ohci->regs->ed_controlhead); ohci_writel (ohci, ohci->hc_control | OHCI_CTRL_CLE, &ohci->regs->control); ohci_writel (ohci, OHCI_CLF, &ohci->regs->cmdstatus); /* spin until the controller is done with the control list */ current = ohci_readl(ohci, &ohci->regs->ed_controlcurrent); __spin_event_timeout(!current, 10 /* usecs */, result, ctx) { cpu_relax(); current = ohci_readl(ohci, &ohci->regs->ed_controlcurrent); } /* restore the old control head and control settings */ ohci_writel (ohci, ohci->hc_control, &ohci->regs->control); ohci_writel(ohci, head, &ohci->regs->ed_controlhead); } spin_unlock_irqrestore(&control_quirk_lock, flags); } void ohci_hlwd_bulk_quirk(struct ohci_hcd *ohci) { /* * There seem to be issues too with the bulk list processing on the * OHCI controller found in the Nintendo Wii video game console. * The exact problem remains still unidentified, but adding a small * delay seems to workaround it. * * As an example, without this quirk the wiimote controller stops * responding after a few seconds because one of its bulk endpoint * descriptors gets stuck. */ udelay(250); } static int __devinit ohci_hlwd_start(struct usb_hcd *hcd) { struct ohci_hcd *ohci = hcd_to_ohci(hcd); void __iomem *ehci_ctl; int error; error = ohci_init(ohci); if (error) goto out; ehci_ctl = ioremap(HLWD_EHCI_CTL, 4); if (!ehci_ctl) { printk(KERN_ERR __FILE__ ": ioremap failed\n"); error = -EBUSY; ohci_stop(hcd); goto out; } /* enable notification of OHCI interrupts */ out_be32(ehci_ctl, in_be32(ehci_ctl) | 0xe0000 | HLWD_EHCI_CTL_OH0INTE | HLWD_EHCI_CTL_OH1INTE); iounmap(ehci_ctl); error = ohci_run(ohci); if (error) { err("can't start %s", ohci_to_hcd(ohci)->self.bus_name); ohci_stop(hcd); goto out; } out: return error; } static const struct hc_driver ohci_hlwd_hc_driver = { .description = hcd_name, .product_desc = "Nintendo Wii OHCI Host Controller", .hcd_priv_size = sizeof(struct ohci_hcd), /* * generic hardware linkage */ .irq = ohci_irq, .flags = HCD_USB11 | HCD_BOUNCE_DMA_MEM, /* * basic lifecycle operations */ .start = ohci_hlwd_start, .stop = ohci_stop, .shutdown = ohci_shutdown, /* * managing i/o requests and associated device resources */ .urb_enqueue = ohci_urb_enqueue, .urb_dequeue = ohci_urb_dequeue, .endpoint_disable = ohci_endpoint_disable, /* * scheduling support */ .get_frame_number = ohci_get_frame, /* * root hub support */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, #endif .start_port_reset = ohci_start_port_reset, }; static int __devinit ohci_hcd_hlwd_probe(struct of_device *op, const struct of_device_id *match) { struct device_node *dn = op->node; struct usb_hcd *hcd; struct ohci_hcd *ohci = NULL; struct resource res; dma_addr_t coherent_mem_addr; size_t coherent_mem_size; int irq; int error = -ENODEV; if (usb_disabled()) goto out; if (starlet_get_ipc_flavour() != STARLET_IPC_MINI) goto out; dev_dbg(&op->dev, "initializing " DRV_MODULE_NAME " USB Controller\n"); error = of_address_to_resource(dn, 0, &res); if (error) goto out; hcd = usb_create_hcd(&ohci_hlwd_hc_driver, &op->dev, DRV_MODULE_NAME); if (!hcd) { error = -ENOMEM; goto out; } hcd->rsrc_start = res.start; hcd->rsrc_len = resource_size(&res); error = of_address_to_resource(dn, 1, &res); if (error) { /* satisfy coherent memory allocations from mem1 or mem2 */ dev_warn(&op->dev, "using normal memory\n"); } else { coherent_mem_addr = res.start; coherent_mem_size = res.end - res.start + 1; if (!dma_declare_coherent_memory(&op->dev, coherent_mem_addr, coherent_mem_addr, coherent_mem_size, DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE)) { dev_err(&op->dev, "error declaring %u bytes of" " coherent memory at 0x%p\n", coherent_mem_size, (void *)coherent_mem_addr); error = -EBUSY; goto err_decl_coherent; } } irq = irq_of_parse_and_map(dn, 0); if (irq == NO_IRQ) { printk(KERN_ERR __FILE__ ": irq_of_parse_and_map failed\n"); error = -EBUSY; goto err_irq; } hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); if (!hcd->regs) { printk(KERN_ERR __FILE__ ": ioremap failed\n"); error = -EBUSY; goto err_ioremap; } ohci = hcd_to_ohci(hcd); ohci->flags |= OHCI_QUIRK_WII; ohci_hcd_init(ohci); error = usb_add_hcd(hcd, irq, IRQF_DISABLED); if (error) goto err_add_hcd; return 0; err_add_hcd: iounmap(hcd->regs); err_ioremap: irq_dispose_mapping(irq); err_irq: dma_release_declared_memory(&op->dev); err_decl_coherent: usb_put_hcd(hcd); out: return error; } static int ohci_hcd_hlwd_remove(struct of_device *op) { struct usb_hcd *hcd = dev_get_drvdata(&op->dev); dev_set_drvdata(&op->dev, NULL); dev_dbg(&op->dev, "stopping " DRV_MODULE_NAME " USB Controller\n"); usb_remove_hcd(hcd); iounmap(hcd->regs); irq_dispose_mapping(hcd->irq); dma_release_declared_memory(&op->dev); usb_put_hcd(hcd); return 0; } static int ohci_hcd_hlwd_shutdown(struct of_device *op) { struct usb_hcd *hcd = dev_get_drvdata(&op->dev); if (hcd->driver->shutdown) hcd->driver->shutdown(hcd); return 0; } static struct of_device_id ohci_hcd_hlwd_match[] = { { .compatible = "nintendo,hollywood-ohci", }, {}, }; MODULE_DEVICE_TABLE(of, ohci_hcd_hlwd_match); static struct of_platform_driver ohci_hcd_hlwd_driver = { .name = DRV_MODULE_NAME, .match_table = ohci_hcd_hlwd_match, .probe = ohci_hcd_hlwd_probe, .remove = ohci_hcd_hlwd_remove, .shutdown = ohci_hcd_hlwd_shutdown, .driver = { .name = DRV_MODULE_NAME, .owner = THIS_MODULE, }, }; |
From: Albert H. <he...@us...> - 2009-12-09 18:47:51
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv23815/drivers/block Added Files: rvl-di.c Log Message: Add new files for gc-linux-2.6.32. --- NEW FILE: rvl-di.c --- /* * drivers/block/rvl-di.c * * Nintendo Wii Disk Interface (DI) driver * Copyright (C) 2009 The GameCube Linux Team * Copyright (C) 2009 Albert Herranz * * Based on Nintendo GameCube Disk Interface (DI) driver * Copyright (C) 2005-2009 The GameCube Linux Team * Copyright (C) 2005,2006,2007,2009 Albert Herranz * * Portions based on previous work by Scream|CT. * * 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. * */ [...1836 lines suppressed...] */ static int __init di_init_module(void) { pr_info("%s - version %s\n", DRV_DESCRIPTION, di_driver_version); return of_register_platform_driver(&di_of_driver); } static void __exit di_exit_module(void) { of_unregister_platform_driver(&di_of_driver); } module_init(di_init_module); module_exit(di_exit_module); MODULE_AUTHOR(DRV_AUTHOR); MODULE_DESCRIPTION(DRV_DESCRIPTION); MODULE_LICENSE("GPL"); |
From: Albert H. <he...@us...> - 2009-12-09 18:47:50
|
Update of /cvsroot/gc-linux/linux/drivers/mmc/host In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv23815/drivers/mmc/host Added Files: sdhci-hlwd.c Log Message: Add new files for gc-linux-2.6.32. --- NEW FILE: sdhci-hlwd.c --- /* * drivers/mmc/host/sdhci-hlwd.c * * Nintendo Wii Secure Digital Host Controller Interface. * Copyright (C) 2009 The GameCube Linux Team * Copyright (C) 2009 Albert Herranz * * Based on sdhci-of.c * * Copyright (c) 2007 Freescale Semiconductor, Inc. * Copyright (c) 2009 MontaVista Software, Inc. * * Authors: Xiaobo Xie <X....@fr...> * Anton Vorontsov <avo...@ru...> * * 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/init.h> #include <linux/io.h> #include <linux/interrupt.h> #include <linux/of.h> #include <linux/of_platform.h> #include <linux/mmc/host.h> #include <asm/starlet.h> #include <asm/starlet-mini.h> #include "sdhci.h" #define DRV_MODULE_NAME "sdhci-hlwd" #define DRV_DESCRIPTION "Nintendo Wii Secure Digital Host Controller Interface" #define DRV_AUTHOR "Albert Herranz" static char sdhci_hlwd_driver_version[] = "0.1i"; #define drv_printk(level, format, arg...) \ printk(level DRV_MODULE_NAME ": " format , ## arg) #define DBG(fmt, arg...) drv_printk(KERN_DEBUG, "%s: " fmt, \ __func__, ## arg) struct sdhci_hlwd_data { unsigned int quirks; struct sdhci_ops ops; }; struct sdhci_hlwd_host { u16 xfer_mode_shadow; }; static u32 sdhci_hlwd_readl(struct sdhci_host *host, int reg) { return in_be32(host->ioaddr + reg); } static u16 sdhci_hlwd_readw(struct sdhci_host *host, int reg) { return in_be16(host->ioaddr + (reg ^ 0x2)); } static u8 sdhci_hlwd_readb(struct sdhci_host *host, int reg) { return in_8(host->ioaddr + (reg ^ 0x3)); } static void sdhci_hlwd_writel(struct sdhci_host *host, u32 val, int reg) { out_be32(host->ioaddr + reg, val); udelay(5); } static void sdhci_hlwd_writew(struct sdhci_host *host, u16 val, int reg) { struct sdhci_hlwd_host *hlwd_host = sdhci_priv(host); int base = reg & ~0x3; int shift = (reg & 0x2) * 8; switch (reg) { case SDHCI_TRANSFER_MODE: /* * Postpone this write, we must do it together with a * command write that is down below. */ hlwd_host->xfer_mode_shadow = val; return; case SDHCI_COMMAND: sdhci_hlwd_writel(host, val << 16 | hlwd_host->xfer_mode_shadow, SDHCI_TRANSFER_MODE); return; } clrsetbits_be32(host->ioaddr + base, 0xffff << shift, val << shift); udelay(5); } static void sdhci_hlwd_writeb(struct sdhci_host *host, u8 val, int reg) { int base = reg & ~0x3; int shift = (reg & 0x3) * 8; clrsetbits_be32(host->ioaddr + base , 0xff << shift, val << shift); udelay(5); } static struct sdhci_hlwd_data sdhci_hlwd = { .quirks = SDHCI_QUIRK_32BIT_DMA_ADDR | SDHCI_QUIRK_32BIT_DMA_SIZE, .ops = { .readl = sdhci_hlwd_readl, .readw = sdhci_hlwd_readw, .readb = sdhci_hlwd_readb, .writel = sdhci_hlwd_writel, .writew = sdhci_hlwd_writew, .writeb = sdhci_hlwd_writeb, }, }; #ifdef CONFIG_PM static int sdhci_hlwd_suspend(struct of_device *ofdev, pm_message_t state) { struct sdhci_host *host = dev_get_drvdata(&ofdev->dev); return mmc_suspend_host(host->mmc, state); } static int sdhci_hlwd_resume(struct of_device *ofdev) { struct sdhci_host *host = dev_get_drvdata(&ofdev->dev); return mmc_resume_host(host->mmc); } #else #define sdhci_hlwd_suspend NULL #define sdhci_hlwd_resume NULL #endif static int __devinit sdhci_hlwd_probe(struct of_device *ofdev, const struct of_device_id *match) { struct device_node *np = ofdev->node; struct sdhci_hlwd_data *sdhci_hlwd_data = match->data; struct sdhci_host *host; struct sdhci_hlwd_host *hlwd_host; struct resource res; int error; if (starlet_get_ipc_flavour() != STARLET_IPC_MINI) { error = -ENODEV; goto out; } if (!of_device_is_available(np)) { error = -ENODEV; goto out; } host = sdhci_alloc_host(&ofdev->dev, sizeof(*hlwd_host)); if (!host) { DBG("unable to allocate sdhci_host\n"); error = -ENODEV; goto out; } dev_set_drvdata(&ofdev->dev, host); error = of_address_to_resource(np, 0, &res); if (error) { DBG("of_address_to_resource failed (%d)\n", error); goto err_no_address; } host->ioaddr = ioremap(res.start, resource_size(&res)); if (!host->ioaddr) { DBG("ioremap failed\n"); error = -EINVAL; goto err_ioremap; } host->irq = irq_of_parse_and_map(np, 0); if (!host->irq) { DBG("irq_of_parse_and_map failed\n"); error = -EINVAL; goto err_no_irq; } host->hw_name = dev_name(&ofdev->dev); if (sdhci_hlwd_data) { host->quirks = sdhci_hlwd_data->quirks; host->ops = &sdhci_hlwd_data->ops; } error = sdhci_add_host(host); if (error) { DBG("sdhci_add_host failed\n"); goto err_add_host; } return 0; err_add_host: irq_dispose_mapping(host->irq); err_no_irq: iounmap(host->ioaddr); err_ioremap: err_no_address: sdhci_free_host(host); out: return error; } static int __devexit sdhci_hlwd_remove(struct of_device *ofdev) { struct sdhci_host *host = dev_get_drvdata(&ofdev->dev); sdhci_remove_host(host, 0); irq_dispose_mapping(host->irq); iounmap(host->ioaddr); sdhci_free_host(host); return 0; } static const struct of_device_id sdhci_hlwd_match[] = { { .compatible = "nintendo,hollywood-sdhci", .data = &sdhci_hlwd, }, {}, }; MODULE_DEVICE_TABLE(of, sdhci_hlwd_match); static struct of_platform_driver sdhci_hlwd_driver = { .driver.name = DRV_MODULE_NAME, .match_table = sdhci_hlwd_match, .probe = sdhci_hlwd_probe, .remove = __devexit_p(sdhci_hlwd_remove), .suspend = sdhci_hlwd_suspend, .resume = sdhci_hlwd_resume, }; static int __init sdhci_hlwd_init(void) { drv_printk(KERN_INFO, "%s - version %s\n", DRV_DESCRIPTION, sdhci_hlwd_driver_version); return of_register_platform_driver(&sdhci_hlwd_driver); } module_init(sdhci_hlwd_init); static void __exit sdhci_hlwd_exit(void) { of_unregister_platform_driver(&sdhci_hlwd_driver); } module_exit(sdhci_hlwd_exit); MODULE_AUTHOR(DRV_AUTHOR); MODULE_DESCRIPTION(DRV_DESCRIPTION); MODULE_LICENSE("GPL"); |
From: Albert H. <he...@us...> - 2009-12-09 18:47:50
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv23815/arch/powerpc/platforms/embedded6xx Added Files: hlwd-gpio.c hlwd-pic.c hlwd-pic.h Log Message: Add new files for gc-linux-2.6.32. --- NEW FILE: hlwd-gpio.c --- /* * arch/powerpc/platforms/embedded6xx/hlwd-gpio.c * * Nintendo Wii (Hollywood) GPIO driver * Copyright (C) 2008-2009 The GameCube Linux Team * Copyright (C) 2008,2009 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/io.h> #include <linux/kernel.h> #include <linux/of.h> #include <linux/of_gpio.h> #include <linux/of_platform.h> #define DRV_MODULE_NAME "hlwd-gpio" #define drv_printk(level, format, arg...) \ printk(level DRV_MODULE_NAME ": " format , ## arg) struct hlwd_gpio_chip { struct of_mm_gpio_chip mmchip; spinlock_t lock; }; struct hlwd_gpio_regs { __be32 out, dir, in; }; static inline struct hlwd_gpio_chip * to_hlwd_gpio_chip(struct of_mm_gpio_chip *mm_gc) { return container_of(mm_gc, struct hlwd_gpio_chip, mmchip); } static int hlwd_gpio_get(struct gpio_chip *gc, unsigned int gpio) { struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); struct hlwd_gpio_regs __iomem *regs = mm_gc->regs; u32 pin_mask = 1 << (31 - gpio); unsigned int val; val = !!(in_be32(®s->in) & pin_mask); pr_debug("%s: gpio: %d val: %d\n", __func__, gpio, val); return val; } static void hlwd_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val) { struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); struct hlwd_gpio_chip *st_gc = to_hlwd_gpio_chip(mm_gc); struct hlwd_gpio_regs __iomem *regs = mm_gc->regs; u32 pin_mask = 1 << (31 - gpio); u32 data; unsigned long flags; spin_lock_irqsave(&st_gc->lock, flags); data = in_be32(®s->in) & ~pin_mask; if (val) data |= pin_mask; out_be32(®s->out, data); spin_unlock_irqrestore(&st_gc->lock, flags); pr_debug("%s: gpio: %d val: %d\n", __func__, gpio, val); } static int hlwd_gpio_dir_in(struct gpio_chip *gc, unsigned int gpio) { struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); struct hlwd_gpio_regs __iomem *regs = mm_gc->regs; u32 pin_mask = 1 << (31 - gpio); clrbits32(®s->dir, pin_mask); return 0; } static int hlwd_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) { struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); struct hlwd_gpio_regs __iomem *regs = mm_gc->regs; u32 pin_mask = 1 << (31 - gpio); setbits32(®s->dir, pin_mask); hlwd_gpio_set(gc, gpio, val); return 0; } int hlwd_gpio_add32(struct device_node *np) { struct of_mm_gpio_chip *mm_gc; struct of_gpio_chip *of_gc; struct gpio_chip *gc; struct hlwd_gpio_chip *st_gc; const unsigned long *prop; int error; st_gc = kzalloc(sizeof(*st_gc), GFP_KERNEL); if (!st_gc) return -ENOMEM; spin_lock_init(&st_gc->lock); mm_gc = &st_gc->mmchip; of_gc = &mm_gc->of_gc; gc = &of_gc->gc; prop = of_get_property(np, "#gpio-cells", NULL); if (prop && *prop >= 2) of_gc->gpio_cells = *prop; else of_gc->gpio_cells = 2; /* gpio pin number, flags */ gc->ngpio = 32; gc->direction_input = hlwd_gpio_dir_in; gc->direction_output = hlwd_gpio_dir_out; gc->get = hlwd_gpio_get; gc->set = hlwd_gpio_set; error = of_mm_gpiochip_add(np, mm_gc); if (!error) drv_printk(KERN_INFO, "%s: added %u gpios at %p\n", np->name, gc->ngpio, mm_gc->regs); return error; } static int hlwd_gpio_init(void) { struct device_node *np; int error; for_each_compatible_node(np, NULL, "nintendo,hollywood-gpio") { error = hlwd_gpio_add32(np); if (error < 0) drv_printk(KERN_ERR, "error %d adding gpios" " for %s\n", error, np->full_name); } return 0; /* whatever */ } arch_initcall(hlwd_gpio_init); --- NEW FILE: hlwd-pic.c --- /* * arch/powerpc/platforms/embedded6xx/hlwd-pic.c * * Nintendo Wii "Hollywood" interrupt controller support. * Copyright (C) 2009 The GameCube Linux Team * Copyright (C) 2009 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. * */ #define DRV_MODULE_NAME "hlwd-pic" #define pr_fmt(fmt) DRV_MODULE_NAME ": " fmt #include <linux/kernel.h> #include <linux/init.h> #include <linux/irq.h> #include <linux/of.h> #include <asm/io.h> #include "hlwd-pic.h" #define HLWD_NR_IRQS 32 /* * 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. */ #define HW_BROADWAY_ICR 0x00 #define HW_BROADWAY_IMR 0x04 /* * IRQ chip hooks. * */ static void hlwd_pic_mask_and_ack(unsigned int virq) { int irq = virq_to_hw(virq); void __iomem *io_base = get_irq_chip_data(virq); clear_bit(irq, io_base + HW_BROADWAY_IMR); set_bit(irq, io_base + HW_BROADWAY_ICR); } static void hlwd_pic_ack(unsigned int virq) { int irq = virq_to_hw(virq); void __iomem *io_base = get_irq_chip_data(virq); set_bit(irq, io_base + HW_BROADWAY_ICR); } static void hlwd_pic_mask(unsigned int virq) { int irq = virq_to_hw(virq); void __iomem *io_base = get_irq_chip_data(virq); clear_bit(irq, io_base + HW_BROADWAY_IMR); } static void hlwd_pic_unmask(unsigned int virq) { int irq = virq_to_hw(virq); void __iomem *io_base = get_irq_chip_data(virq); set_bit(irq, io_base + HW_BROADWAY_IMR); } static struct irq_chip hlwd_pic = { .typename = "hlwd-pic", .ack = hlwd_pic_ack, .mask_ack = hlwd_pic_mask_and_ack, .mask = hlwd_pic_mask, .unmask = hlwd_pic_unmask, }; /* * IRQ host hooks. * */ static struct irq_host *hlwd_irq_host; static int hlwd_pic_map(struct irq_host *h, unsigned int virq, irq_hw_number_t hwirq) { set_irq_chip_data(virq, h->host_data); get_irq_desc(virq)->status |= IRQ_LEVEL; set_irq_chip_and_handler(virq, &hlwd_pic, handle_level_irq); return 0; } static void hlwd_pic_unmap(struct irq_host *h, unsigned int irq) { set_irq_chip_data(irq, NULL); set_irq_chip(irq, NULL); } static struct irq_host_ops hlwd_irq_host_ops = { .map = hlwd_pic_map, .unmap = hlwd_pic_unmap, }; static unsigned int __hlwd_pic_get_irq(struct irq_host *h) { void __iomem *io_base = h->host_data; int irq; u32 irq_status; irq_status = in_be32(io_base + HW_BROADWAY_ICR) & in_be32(io_base + HW_BROADWAY_IMR); if (irq_status == 0) return NO_IRQ_IGNORE; /* no more IRQs pending */ __asm__ __volatile__("cntlzw %0,%1" : "=r"(irq) : "r"(irq_status)); return irq_linear_revmap(h, 31 - irq); } static void hlwd_pic_irq_cascade(unsigned int cascade_virq, struct irq_desc *desc) { struct irq_host *irq_host = get_irq_data(cascade_virq); unsigned int virq; spin_lock(&desc->lock); desc->chip->mask(cascade_virq); /* IRQ_LEVEL */ spin_unlock(&desc->lock); virq = __hlwd_pic_get_irq(irq_host); if (virq != NO_IRQ_IGNORE) generic_handle_irq(virq); else pr_err("spurious interrupt!\n"); spin_lock(&desc->lock); desc->chip->ack(cascade_virq); /* IRQ_LEVEL */ if (!(desc->status & IRQ_DISABLED) && desc->chip->unmask) desc->chip->unmask(cascade_virq); spin_unlock(&desc->lock); } /* * Platform hooks. * */ static void __hlwd_quiesce(void __iomem *io_base) { /* mask and ack all IRQs */ out_be32(io_base + HW_BROADWAY_IMR, 0); out_be32(io_base + HW_BROADWAY_ICR, ~0); } struct irq_host *hlwd_pic_init(struct device_node *np) { struct irq_host *irq_host; struct resource res; void __iomem *io_base; int retval; retval = of_address_to_resource(np, 0, &res); if (retval) { pr_err("no io memory range found\n"); return NULL; } io_base = ioremap(res.start, resource_size(&res)); if (!io_base) { pr_err("ioremap failed\n"); return NULL; } pr_info("controller at 0x%08x mapped to 0x%p\n", res.start, io_base); __hlwd_quiesce(io_base); irq_host = irq_alloc_host(np, IRQ_HOST_MAP_LINEAR, HLWD_NR_IRQS, &hlwd_irq_host_ops, NO_IRQ_IGNORE); if (!irq_host) { pr_err("failed to allocate irq_host\n"); return NULL; } irq_host->host_data = io_base; return irq_host; } unsigned int hlwd_pic_get_irq(void) { return __hlwd_pic_get_irq(hlwd_irq_host); } /* * Probe function. * */ void hlwd_pic_probe(void) { struct irq_host *host; struct device_node *np; const u32 *interrupts; int cascade_virq; for_each_compatible_node(np, NULL, "nintendo,hollywood-pic") { interrupts = of_get_property(np, "interrupts", NULL); if (interrupts) { host = hlwd_pic_init(np); BUG_ON(!host); cascade_virq = irq_of_parse_and_map(np, 0); set_irq_data(cascade_virq, host); set_irq_chained_handler(cascade_virq, hlwd_pic_irq_cascade); } } } /** * hlwd_quiesce() - quiesce hollywood irq controller * * Mask and ack all interrupt sources. * */ void hlwd_quiesce(void) { void __iomem *io_base = hlwd_irq_host->host_data; __hlwd_quiesce(io_base); } --- NEW FILE: hlwd-pic.h --- /* * arch/powerpc/platforms/embedded6xx/hlwd-pic.h * * Nintendo Wii "Hollywood" interrupt controller support. * Copyright (C) 2009 The GameCube Linux Team * Copyright (C) 2009 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 __HLWD_PIC_H #define __HLWD_PIC_H extern unsigned int hlwd_pic_get_irq(void); extern void hlwd_pic_probe(void); extern void hlwd_quiesce(void); #endif |
From: Albert H. <he...@us...> - 2009-12-09 18:45:09
|
Update of /cvsroot/gc-linux/linux/drivers/net/wireless/b43 In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/net/wireless/b43 Modified Files: Kconfig main.c Log Message: Merge v2.6.32. Index: main.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/wireless/b43/main.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** main.c 9 Dec 2009 18:42:53 -0000 1.1 --- main.c 9 Dec 2009 18:44:55 -0000 1.2 *************** *** 69,72 **** --- 69,77 ---- MODULE_FIRMWARE(B43_SUPPORTED_FIRMWARE_ID); + #ifdef CONFIG_B43_DEFAULT_QOS_OFF + #define B43_QOS_DEFAULT 0 + #else + #define B43_QOS_DEFAULT 1 + #endif static int modparam_bad_frames_preempt; *************** *** 91,95 **** MODULE_PARM_DESC(hwtkip, "Enable hardware tkip."); ! static int modparam_qos = 1; module_param_named(qos, modparam_qos, int, 0444); MODULE_PARM_DESC(qos, "Enable QOS support (default on)"); --- 96,100 ---- MODULE_PARM_DESC(hwtkip, "Enable hardware tkip."); ! static int modparam_qos = B43_QOS_DEFAULT; module_param_named(qos, modparam_qos, int, 0444); MODULE_PARM_DESC(qos, "Enable QOS support (default on)"); Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/wireless/b43/Kconfig,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Kconfig 9 Dec 2009 18:42:53 -0000 1.1 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.2 *************** *** 147,148 **** --- 147,159 ---- This is only for debugging the PIO engine code. You do _NOT_ want to enable this. + + config B43_DEFAULT_QOS_OFF + bool "Start with QoS disabled" + depends on B43 + ---help--- + This will start the driver with Quality Of Service disabled. + + Say Y if you are using an OpenFWWF firmware without QoS support + and building the b43 driver in-kernel. + Otherwise, say N. + |
From: Albert H. <he...@us...> - 2009-12-09 18:45:06
|
Update of /cvsroot/gc-linux/linux/sound/ppc In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/sound/ppc Modified Files: Kconfig Makefile Log Message: Merge v2.6.32. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/sound/ppc/Makefile,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Makefile 9 Dec 2009 18:18:07 -0000 1.14 --- Makefile 9 Dec 2009 18:44:56 -0000 1.15 *************** *** 5,10 **** --- 5,13 ---- snd-powermac-objs := powermac.o pmac.o awacs.o burgundy.o daca.o tumbler.o keywest.o beep.o + snd-gcn-objs := gcn-ai.o # Toplevel Module Dependency obj-$(CONFIG_SND_POWERMAC) += snd-powermac.o obj-$(CONFIG_SND_PS3) += snd_ps3.o + obj-$(CONFIG_SND_GAMECUBE) += snd-gcn.o + obj-$(CONFIG_SND_GAMECUBE_MIC) += gcn-mic.o Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/sound/ppc/Kconfig,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** Kconfig 9 Dec 2009 18:40:10 -0000 1.24 --- Kconfig 9 Dec 2009 18:44:56 -0000 1.25 *************** *** 50,52 **** --- 50,70 ---- default "2000" + config SND_GAMECUBE + tristate "Nintendo GameCube/Wii" + depends on SND && GAMECUBE_COMMON + help + Say Y here to include support for audio on the Nintendo GameCube/Wii. + + To compile this driver as a module, choose M here: the module + will be called snd-gcn. + + config SND_GAMECUBE_MIC + tristate "Nintendo GameCube Microphone (DOL-022)" + depends on SND && GAMECUBE_EXI && EXPERIMENTAL + help + If you say yes to this option, support will be included for the + Nintendo GameCube Microphone (DOL-022). + + If in doubt, say N here. + endif # SND_PPC |
From: Albert H. <he...@us...> - 2009-12-09 18:45:05
|
Update of /cvsroot/gc-linux/linux/include/linux In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/include/linux Modified Files: fb.h gpio.h i2c-gpio.h kernel.h kexec.h linux_logo.h Log Message: Merge v2.6.32. Index: linux_logo.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/linux_logo.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** linux_logo.h 9 Dec 2009 18:18:07 -0000 1.3 --- linux_logo.h 9 Dec 2009 18:44:55 -0000 1.4 *************** *** 39,42 **** --- 39,43 ---- extern const struct linux_logo logo_blackfin_clut224; extern const struct linux_logo logo_dec_clut224; + extern const struct linux_logo logo_gcn_clut224; extern const struct linux_logo logo_mac_clut224; extern const struct linux_logo logo_parisc_clut224; Index: gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/gpio.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** gpio.h 9 Dec 2009 18:40:10 -0000 1.8 --- gpio.h 9 Dec 2009 18:44:55 -0000 1.9 *************** *** 52,55 **** --- 52,60 ---- } + static inline int gpio_direction_is_output(unsigned gpio) + { + return -EINVAL; + } + static inline int gpio_get_value(unsigned gpio) { Index: i2c-gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/i2c-gpio.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** i2c-gpio.h 9 Dec 2009 18:18:07 -0000 1.7 --- i2c-gpio.h 9 Dec 2009 18:44:55 -0000 1.8 *************** *** 34,37 **** --- 34,38 ---- unsigned int scl_is_open_drain:1; unsigned int scl_is_output_only:1; + unsigned int sda_enforce_dir:1; }; Index: kexec.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/kexec.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** kexec.h 9 Dec 2009 18:18:07 -0000 1.5 --- kexec.h 9 Dec 2009 18:44:55 -0000 1.6 *************** *** 53,60 **** typedef unsigned long kimage_entry_t; ! #define IND_DESTINATION 0x1 ! #define IND_INDIRECTION 0x2 ! #define IND_DONE 0x4 ! #define IND_SOURCE 0x8 #define KEXEC_SEGMENT_MAX 16 --- 53,61 ---- typedef unsigned long kimage_entry_t; ! #define IND_DESTINATION 0x01 ! #define IND_INDIRECTION 0x02 ! #define IND_DONE 0x04 ! #define IND_SOURCE 0x08 ! #define IND_NOALLOC 0x10 /* special case for memory preserving code */ #define KEXEC_SEGMENT_MAX 16 *************** *** 126,129 **** --- 127,132 ---- extern struct page *kimage_alloc_control_pages(struct kimage *image, unsigned int order); + extern int kimage_add_preserved_region(struct kimage *image, unsigned long to, + unsigned long from, int length); extern void crash_kexec(struct pt_regs *); int kexec_should_crash(struct task_struct *); Index: kernel.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/kernel.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** kernel.h 9 Dec 2009 18:42:53 -0000 1.1 --- kernel.h 9 Dec 2009 18:44:55 -0000 1.2 *************** *** 382,386 **** printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) #define pr_cont(fmt, ...) \ ! printk(KERN_CONT fmt, ##__VA_ARGS__) /* pr_devel() should produce zero code unless DEBUG is defined */ --- 382,386 ---- printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) #define pr_cont(fmt, ...) \ ! printk(KERN_CONT pr_fmt(fmt), ##__VA_ARGS__) /* pr_devel() should produce zero code unless DEBUG is defined */ Index: fb.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/fb.h,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** fb.h 9 Dec 2009 18:40:10 -0000 1.40 --- fb.h 9 Dec 2009 18:44:55 -0000 1.41 *************** *** 39,42 **** --- 39,47 ---- #define FBIOGET_DISPINFO 0x4618 + #define FBIOWAITRETRACE 0x4619 + #define FBIOWAITPEFINISH 0x4620 + #define FBIOVIRTTOPHYS 0x4621 + #define FBIOFLIP 0x4622 + #define FBIOFLIPHACK 0x4623 /* libsdl */ #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ *************** *** 908,912 **** #define fb_writeb __raw_writeb #define fb_writew __raw_writew ! #define fb_writel __raw_writel #define fb_writeq __raw_writeq #define fb_memset memset_io --- 913,923 ---- #define fb_writeb __raw_writeb #define fb_writew __raw_writew ! #ifndef CONFIG_FB_GAMECUBE /* XXX Why? O' why? */ ! # define fb_writel __raw_writel ! #else ! extern unsigned int vifb_writel(unsigned int, void *); ! # define fb_writel(b, addr) vifb_writel(b, addr) ! # define fb_writel_real(b, addr) (*(/*volatile*/ u32 __iomem *)(addr) = (b)) ! #endif #define fb_writeq __raw_writeq #define fb_memset memset_io |
From: Albert H. <he...@us...> - 2009-12-09 18:45:05
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/arch/powerpc/platforms/embedded6xx Modified Files: Kconfig Makefile flipper-pic.c starlet-es.c starlet-mipc.c wii.c Log Message: Merge v2.6.32. Index: flipper-pic.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/flipper-pic.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** flipper-pic.c 28 Mar 2009 20:44:19 -0000 1.4 --- flipper-pic.c 9 Dec 2009 18:44:54 -0000 1.5 *************** *** 12,15 **** --- 12,17 ---- * */ + #define DRV_MODULE_NAME "flipper-pic" + #define pr_fmt(fmt) DRV_MODULE_NAME ": " fmt #include <linux/kernel.h> *************** *** 21,31 **** #include "flipper-pic.h" - - #define DRV_MODULE_NAME "flipper-pic" - - #define drv_printk(level, format, arg...) \ - printk(level DRV_MODULE_NAME ": " format , ## arg) - - /* * IRQ chip hooks. --- 23,26 ---- *************** *** 86,89 **** --- 81,85 ---- { set_irq_chip_data(virq, h->host_data); + get_irq_desc(virq)->status |= IRQ_LEVEL; set_irq_chip_and_handler(virq, &flipper_pic, handle_level_irq); return 0; *************** *** 129,139 **** retval = of_address_to_resource(np, 0, &res); if (retval) { ! drv_printk(KERN_ERR, "no io memory range found\n"); return NULL; } io_base = ioremap(res.start, res.end - res.start + 1); ! drv_printk(KERN_INFO, "controller at 0x%08x mapped to 0x%p\n", ! res.start, io_base); __flipper_quiesce(io_base); --- 125,134 ---- retval = of_address_to_resource(np, 0, &res); if (retval) { ! pr_err("no io memory range found\n"); return NULL; } io_base = ioremap(res.start, res.end - res.start + 1); ! pr_info("controller at 0x%08x mapped to 0x%p\n", res.start, io_base); __flipper_quiesce(io_base); *************** *** 142,146 **** &flipper_irq_host_ops, -1); if (!irq_host) { ! drv_printk(KERN_ERR, "failed to allocate irq_host\n"); return NULL; } --- 137,141 ---- &flipper_irq_host_ops, -1); if (!irq_host) { ! pr_err("failed to allocate irq_host\n"); return NULL; } *************** *** 228,232 **** io_base = flipper_irq_host->host_data; icr = in_be32(io_base + FLIPPER_ICR); - drv_printk(KERN_INFO, "%x\n", icr); return !(icr & FLIPPER_ICR_RSS); } --- 223,226 ---- Index: starlet-es.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/starlet-es.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** starlet-es.c 25 Oct 2009 18:50:27 -0000 1.7 --- starlet-es.c 9 Dec 2009 18:44:54 -0000 1.8 *************** *** 319,323 **** { struct starlet_es_ticket_view *views; ! unsigned long count; int error; --- 319,323 ---- { struct starlet_es_ticket_view *views; ! unsigned long count = 0; int error; *************** *** 325,328 **** --- 325,330 ---- if (error) return error; + if (!count) + return -ENOENT; views = starlet_kzalloc(sizeof(*views)*count, GFP_ATOMIC); *************** *** 456,460 **** u64 *titles; u64 candidate; ! unsigned long count; int found, i; int error; --- 458,462 ---- u64 *titles; u64 candidate; ! unsigned long count = 0; int found, i; int error; *************** *** 463,466 **** --- 465,470 ---- if (error) return error; + if (!count) + return -ENOENT; titles = starlet_kzalloc(sizeof(*titles)*count, GFP_KERNEL); *************** *** 498,507 **** u64 ios_min, u64 ios_max) { ! u64 title; int error; error = starlet_es_find_newest_title(es_dev, &title, ios_min, ios_max); if (!error) ! return -EINVAL; if (error > 0) { es_dev->ios_title = title; --- 502,511 ---- u64 ios_min, u64 ios_max) { ! u64 title = 0; int error; error = starlet_es_find_newest_title(es_dev, &title, ios_min, ios_max); if (!error) ! return -ENOENT; if (error > 0) { es_dev->ios_title = title; Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/Makefile,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Makefile 9 Dec 2009 18:18:06 -0000 1.13 --- Makefile 9 Dec 2009 18:44:54 -0000 1.14 *************** *** 8,9 **** --- 8,20 ---- obj-$(CONFIG_PPC_PRPMC2800) += prpmc2800.o obj-$(CONFIG_PPC_C2K) += c2k.o + obj-$(CONFIG_GAMECUBE) += gamecube.o gamecube_dev.o + obj-$(CONFIG_WII) += wii.o wii_dev.o + obj-$(CONFIG_HLWD_GPIO) += hlwd-gpio.o + obj-$(CONFIG_STARLET_MINI) += starlet-mipc.o + obj-$(CONFIG_STARLET_IOS) += starlet-ipc.o starlet-malloc.o \ + starlet-stm.o starlet-es.o + obj-$(CONFIG_FLIPPER_PIC) += flipper-pic.o + obj-$(CONFIG_HLWD_PIC) += hlwd-pic.o + obj-$(CONFIG_USBGECKO_UDBG) += usbgecko_udbg.o + obj-$(CONFIG_GAMECUBE_VIDEO_UDBG) += gcnvi_udbg.o + obj-$(CONFIG_GAMECUBE_RSW) += gcn-rsw.o Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/Kconfig,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Kconfig 9 Dec 2009 18:18:06 -0000 1.13 --- Kconfig 9 Dec 2009 18:44:54 -0000 1.14 *************** *** 91,92 **** --- 91,200 ---- bool "Enable MPC10x store gathering" depends on MPC10X_BRIDGE + + config GAMECUBE + bool "Nintendo-GameCube" + depends on EMBEDDED6xx + select GAMECUBE_COMMON + help + Select GAMECUBE if configuring for the Nintendo GameCube. + More information at: <http://gc-linux.sourceforge.net/> + + config WII + bool "Nintendo-Wii" + depends on EMBEDDED6xx + select GAMECUBE_COMMON + select PPC_LIB_RHEAP if STARLET_IOS + select USB_ARCH_HAS_EHCI if STARLET_MINI + select USB_ARCH_HAS_OHCI if STARLET_MINI + select HAVE_GENERIC_DMA_COHERENT + help + Select WII if configuring for the Nintendo Wii. + More information at: <http://gc-linux.sourceforge.net/> + + config STARLET_IOS + bool "Nintendo Wii Starlet IOS support" + depends on WII + default y + + config STARLET_MINI + bool "Team Twiizers 'mini' firmware support" + depends on WII && EXPERIMENTAL + default y + + config FLIPPER_PIC + bool + depends on GAMECUBE_COMMON + default y + + config HLWD_PIC + bool + depends on STARLET_MINI + default y + + config GAMECUBE_COMMON + bool + select NOT_COHERENT_CACHE + select FLIPPER_PIC + default n + + config GAMECUBE_UDBG + bool "Nintendo GameCube/Wii udbg support" + depends on GAMECUBE_COMMON + default n + help + If you say yes to this option, you will be able to choose between + several udbg drivers available for the Nintendo GameCube/Wii. + + If in doubt, say N here. + + choice + prompt "Nintendo GameCube/Wii udbg drivers" + depends on GAMECUBE_UDBG + + config USBGECKO_UDBG + bool "USB Gecko udbg console for the Nintendo GameCube/Wii" + help + If you say yes to this option, support will be included for the + USB Gecko adapter as an udbg console. + The USB Gecko is a EXI to USB Serial converter that can be plugged + into a memcard slot in the Nintendo GameCube/Wii. + + This driver bypasses the EXI layer completely. + + If in doubt, say N here. + + config GAMECUBE_VIDEO_UDBG + bool "Nintendo GameCube/Wii framebuffer udbg console" + select FONTS + select FONT_8x16 + help + If you say yes to this option, support will be included for a + framebuffer based udbg console for the Nintendo GameCube/Wii. + + If in doubt, say N here. + + endchoice + + config GAMECUBE_RSW + bool "Nintendo GameCube/Wii reset switch/button" + depends on GAMECUBE_COMMON + default y + help + If you say yes to this option, support will be included for the + reset switch/button of the Nintendo GameCube/Wii. + + If in doubt, say Y here. + + config HLWD_GPIO + bool "Nintendo Wii (Hollywood) GPIO support" + depends on GPIOLIB && WII + default y + help + If you say yes to this option, support will be included for the + GPIOs provided by the Hollywood chipset of the Nintendo Wii + video game console. + Those GPIO lines control, for example, the sensor bar IR leds, + the front led, or the eject switch of the disk unit. + + If in doubt, say Y here. + Index: wii.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/wii.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** wii.c 25 Oct 2009 18:50:27 -0000 1.6 --- wii.c 9 Dec 2009 18:44:54 -0000 1.7 *************** *** 51,55 **** /* try first to launch The Homebrew Channel... */ ! starlet_es_reload_ios_and_launch(STARLET_TITLE_HBC); /* ..and if that fails, try an assisted restart */ starlet_stm_restart(); --- 51,56 ---- /* try first to launch The Homebrew Channel... */ ! starlet_es_reload_ios_and_launch(STARLET_TITLE_HBC_JODI); ! starlet_es_reload_ios_and_launch(STARLET_TITLE_HBC_HAXX); /* ..and if that fails, try an assisted restart */ starlet_stm_restart(); *************** *** 88,92 **** #ifdef CONFIG_STARLET_MINI ! static void wii_mipc_restart(char *cmd) { void __iomem *hw_resets; --- 89,93 ---- #ifdef CONFIG_STARLET_MINI ! static void wii_restart(char *cmd) { void __iomem *hw_resets; *************** *** 94,103 **** local_irq_disable(); ! hw_resets = mipc_ioremap(0x0d800194, 4); if (hw_resets) { /* clear the system reset pin to cause a reset */ ! mipc_clear_bit(0, hw_resets); ! mipc_wmb(); ! mipc_iounmap(hw_resets); } --- 95,103 ---- local_irq_disable(); ! hw_resets = ioremap(0x0d800194, 4); if (hw_resets) { /* clear the system reset pin to cause a reset */ ! clear_bit(0, hw_resets); ! iounmap(hw_resets); } *************** *** 106,110 **** } ! static void wii_mipc_power_off(void) { void __iomem *gpio; --- 106,110 ---- } ! static void wii_power_off(void) { void __iomem *gpio; *************** *** 112,124 **** local_irq_disable(); ! gpio = mipc_ioremap(0x0d8000e0, 3*4); if (gpio) { /* make sure that the poweroff GPIO is configured as output */ ! mipc_out_be32(gpio + 4, mipc_in_be32(gpio + 4) | 0x2); /* drive the poweroff GPIO high */ ! mipc_out_be32(gpio + 0, mipc_in_be32(gpio + 0) | 0x2); ! mipc_wmb(); ! mipc_iounmap(gpio); } --- 112,123 ---- local_irq_disable(); ! gpio = ioremap(0x0d8000e0, 3*4); if (gpio) { /* make sure that the poweroff GPIO is configured as output */ ! out_be32(gpio + 4, in_be32(gpio + 4) | 0x2); /* drive the poweroff GPIO high */ ! out_be32(gpio + 0, in_be32(gpio + 0) | 0x2); ! iounmap(gpio); } *************** *** 129,138 **** #else ! static void wii_mipc_restart(char *cmd) { wii_death_loop(); } ! static void wii_mipc_power_off(void) { wii_death_loop(); --- 128,137 ---- #else ! static void wii_restart(char *cmd) { wii_death_loop(); } ! static void wii_power_off(void) { wii_death_loop(); *************** *** 162,167 **** if (!error) { starlet_ipc_flavour = STARLET_IPC_MINI; ! ppc_md.restart = wii_mipc_restart; ! ppc_md.power_off = wii_mipc_power_off; } else { starlet_ipc_flavour = STARLET_IPC_IOS; --- 161,166 ---- if (!error) { starlet_ipc_flavour = STARLET_IPC_MINI; ! ppc_md.restart = wii_restart; ! ppc_md.power_off = wii_power_off; } else { starlet_ipc_flavour = STARLET_IPC_IOS; Index: starlet-mipc.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/starlet-mipc.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** starlet-mipc.c 25 Oct 2009 18:50:27 -0000 1.1 --- starlet-mipc.c 9 Dec 2009 18:44:54 -0000 1.2 *************** *** 12,16 **** * */ ! #include <linux/kernel.h> --- 12,17 ---- * */ ! #define DRV_MODULE_NAME "starlet-mipc" ! #define pr_fmt(fmt) DRV_MODULE_NAME ": " fmt #include <linux/kernel.h> *************** *** 25,42 **** #include <asm/starlet-mini.h> ! #include "hollywood-pic.h" - #define DRV_MODULE_NAME "starlet-mipc" #define DRV_DESCRIPTION "IPC driver for 'mini'" #define DRV_AUTHOR "Albert Herranz" ! static char mipc_driver_version[] = "0.3i"; ! ! #define drv_printk(level, format, arg...) \ ! printk(level DRV_MODULE_NAME ": " format , ## arg) ! ! #define DBG(fmt, arg...) drv_printk(KERN_DEBUG, "%s: " fmt, \ ! __func__, ## arg) --- 26,36 ---- #include <asm/starlet-mini.h> ! #include "hlwd-pic.h" #define DRV_DESCRIPTION "IPC driver for 'mini'" #define DRV_AUTHOR "Albert Herranz" ! static char mipc_driver_version[] = "0.4i"; *************** *** 83,103 **** } __attribute__ ((packed)); - - struct mipc_ops { - unsigned int (*readl)(void __iomem *addr); - unsigned short (*readw)(void __iomem *addr); - unsigned char (*readb)(void __iomem *addr); - void (*writel)(unsigned int val, void __iomem *addr); - void (*writew)(unsigned short val, void __iomem *addr); - void (*writeb)(unsigned char val, void __iomem *addr); - void (*setbitl)(unsigned int val, void __iomem *addr); - void (*clearbitl)(unsigned int val, void __iomem *addr); - void (*clrsetbitsl)(unsigned int clear, unsigned int set, - void __iomem *addr); - void (*_wmb)(void); - void __iomem *(*ioremap)(phys_addr_t addr, unsigned long size); - void (*iounmap)(volatile void __iomem *addr); - }; - /* * --- 77,80 ---- *************** *** 108,112 **** struct device *dev; - struct mipc_ops *ops; spinlock_t call_lock; /* serialize firmware calls */ --- 85,88 ---- *************** *** 202,210 **** int i; ! drv_printk(KERN_INFO, "req %pP = {\n", req); ! drv_printk(KERN_CONT, "code = %08X, tag = %08X\n", req->code, req->tag); for (i = 0; i < MIPC_REQ_MAX_ARGS; i++) ! drv_printk(KERN_CONT, "arg[%d] = %08X\n", i, req->args[i]); ! drv_printk(KERN_CONT, "}\n"); } --- 178,186 ---- int i; ! pr_info("req %pP = {\n", req); ! pr_cont("code = %08X, tag = %08X\n", req->code, req->tag); for (i = 0; i < MIPC_REQ_MAX_ARGS; i++) ! pr_cont("arg[%d] = %08X\n", i, req->args[i]); ! pr_cont("}\n"); } *************** *** 215,219 **** for (i = 0; i < count; i++) ! DBG("%d: %X (%08X)\n", i, req[i].tag, req[i].code); } #endif --- 191,195 ---- for (i = 0; i < count; i++) ! pr_devel("%d: %X (%08X)\n", i, req[i].tag, req[i].code); } #endif *************** *** 226,237 **** out_size = ipc_dev->out_ring_size * sizeof(*ipc_dev->out_ring); ! drv_printk(KERN_INFO, "ppc: intail_idx=%u, outhead_idx=%u\n", ! ipc_dev->intail_idx, ipc_dev->outhead_idx); ! drv_printk(KERN_CONT, "arm: inhead_idx=%u, outtail_idx=%u\n", ! mipc_peek_inhead(ipc_dev->io_base), ! mipc_peek_outtail(ipc_dev->io_base)); ! drv_printk(KERN_CONT, "in_ring=%uK@%p, out_ring=%uK@%p\n", ! in_size / 1024, ipc_dev->in_ring, ! out_size / 1024, ipc_dev->out_ring); } --- 202,213 ---- out_size = ipc_dev->out_ring_size * sizeof(*ipc_dev->out_ring); ! pr_info("ppc: intail_idx=%u, outhead_idx=%u\n", ! ipc_dev->intail_idx, ipc_dev->outhead_idx); ! pr_cont("arm: inhead_idx=%u, outtail_idx=%u\n", ! mipc_peek_inhead(ipc_dev->io_base), ! mipc_peek_outtail(ipc_dev->io_base)); ! pr_cont("in_ring=%uK@%p, out_ring=%uK@%p\n", ! in_size / 1024, ipc_dev->in_ring, ! out_size / 1024, ipc_dev->out_ring); } *************** *** 246,250 **** if (mipc_peek_inhead(io_base) == mipc_get_next_intail(ipc_dev)) { ! DBG("%s queue full\n", "ppc->arm ipc"); __spin_event_timeout(mipc_peek_inhead(io_base) != mipc_get_next_intail(ipc_dev), --- 222,226 ---- if (mipc_peek_inhead(io_base) == mipc_get_next_intail(ipc_dev)) { ! pr_err("%s queue full\n", "ppc->arm ipc"); __spin_event_timeout(mipc_peek_inhead(io_base) != mipc_get_next_intail(ipc_dev), *************** *** 254,258 **** } if (!result) { ! DBG("%s queue drain timed out\n", "ppc->arm ipc"); error = -EIO; goto out; --- 230,234 ---- } if (!result) { ! pr_err("%s queue drain timed out\n", "ppc->arm ipc"); error = -EIO; goto out; *************** *** 267,271 **** out: if (error) ! DBG("exit %d\n", error); return error; } --- 243,247 ---- out: if (error) ! pr_devel("exit %d\n", error); return error; } *************** *** 304,308 **** error = __mipc_recv_req(ipc_dev, timeout, req); if (error) ! DBG("arm->ppc ipc request timed out (%d)\n", error); return error; } --- 280,284 ---- error = __mipc_recv_req(ipc_dev, timeout, req); if (error) ! pr_devel("arm->ppc ipc request timed out (%d)\n", error); return error; } *************** *** 323,334 **** __spin_event_timeout(req->code == code && req->tag == tag, timeout, result, ctx) { ! DBG("expected: code=%08X, tag=%08X\n", code, tag); mipc_print_req(req); ! DBG("+++ status\n"); mipc_print_status(ipc_dev); #ifdef DEBUG_RINGS ! DBG("+++ in_ring\n"); mipc_dump_ring(ipc_dev->in_ring, ipc_dev->in_ring_size); ! DBG("+++ out_ring\n"); mipc_dump_ring(ipc_dev->out_ring, ipc_dev->out_ring_size); #endif --- 299,310 ---- __spin_event_timeout(req->code == code && req->tag == tag, timeout, result, ctx) { ! pr_devel("expected: code=%08X, tag=%08X\n", code, tag); mipc_print_req(req); ! pr_devel("+++ status\n"); mipc_print_status(ipc_dev); #ifdef DEBUG_RINGS ! pr_devel("+++ in_ring\n"); mipc_dump_ring(ipc_dev->in_ring, ipc_dev->in_ring_size); ! pr_devel("+++ out_ring\n"); mipc_dump_ring(ipc_dev->out_ring, ipc_dev->out_ring_size); #endif *************** *** 339,343 **** } if (!result) { ! drv_printk(KERN_ERR, "%s: recv timed out\n", __func__); error = -EIO; goto out; --- 315,319 ---- } if (!result) { ! pr_err("%s: recv timed out\n", __func__); error = -EIO; goto out; *************** *** 347,351 **** out: if (error) ! DBG("exit %d\n", error); return error; } --- 323,327 ---- out: if (error) ! pr_devel("exit %d\n", error); return error; } *************** *** 438,442 **** } if (!result) { ! drv_printk(KERN_ERR, "%s: flush timed out\n", __func__); error = -EIO; goto out; --- 414,418 ---- } if (!result) { ! pr_err("%s: flush timed out\n", __func__); error = -EIO; goto out; *************** *** 444,448 **** out: if (error) ! DBG("exit %d\n", error); return error; } --- 420,424 ---- out: if (error) ! pr_devel("exit %d\n", error); return error; } *************** *** 466,470 **** { if (!mipc_device_instance) ! drv_printk(KERN_ERR, "uninitialized device instance!\n"); return mipc_device_instance; } --- 442,446 ---- { if (!mipc_device_instance) ! pr_err("uninitialized device instance!\n"); return mipc_device_instance; } *************** *** 477,493 **** error = mipc_sendrecv1_call(ipc_dev, timeout, &resp, MIPC_SYS_PING, 0); if (error) ! DBG("exit %d\n", error); return error; } - - /* - * - * Indirect I/O operations. - * - */ - #define __declare_ipc_send2_accessor(_name, _suffix, _size, _call) \ ! void mipc_indirect_##_name##_suffix(_size a, void __iomem *addr) \ { \ struct mipc_device *ipc_dev = mipc_get_device(); \ --- 453,462 ---- error = mipc_sendrecv1_call(ipc_dev, timeout, &resp, MIPC_SYS_PING, 0); if (error) ! pr_devel("exit %d\n", error); return error; } #define __declare_ipc_send2_accessor(_name, _suffix, _size, _call) \ ! void mipc_##_name##_suffix(_size a, void __iomem *addr) \ { \ struct mipc_device *ipc_dev = mipc_get_device(); \ *************** *** 499,508 **** return; \ \ ! DBG(__stringify(_name, _suffix) "(%p,%x)\n", addr, a); \ BUG(); \ } #define __declare_ipc_send3_accessor(_name, _suffix, _size, _call) \ ! void mipc_indirect_##_name##_suffix(_size a, _size b, void __iomem *addr) \ { \ struct mipc_device *ipc_dev = mipc_get_device(); \ --- 468,477 ---- return; \ \ ! pr_devel(__stringify(_name, _suffix) "(%p,%x)\n", addr, a); \ BUG(); \ } #define __declare_ipc_send3_accessor(_name, _suffix, _size, _call) \ ! void mipc_##_name##_suffix(_size a, _size b, void __iomem *addr) \ { \ struct mipc_device *ipc_dev = mipc_get_device(); \ *************** *** 510,523 **** \ error = mipc_send3_call(ipc_dev, MIPC_SYS_IO_TIMEOUT, _call, \ ! (u32)addr, a, b); \ if (!error) \ return; \ \ ! DBG(__stringify(_name, _suffix) "(%p,%x,%x)\n", addr, a, b); \ BUG(); \ } #define __declare_ipc_sendrecv1_accessor(_name, _suffix, _size, _call) \ ! _size mipc_indirect_##_name##_suffix(void __iomem *addr) \ { \ struct mipc_device *ipc_dev = mipc_get_device(); \ --- 479,492 ---- \ error = mipc_send3_call(ipc_dev, MIPC_SYS_IO_TIMEOUT, _call, \ ! (u32)addr, a, b); \ if (!error) \ return; \ \ ! pr_devel(__stringify(_name, _suffix) "(%p,%x,%x)\n", addr, a, b);\ BUG(); \ } #define __declare_ipc_sendrecv1_accessor(_name, _suffix, _size, _call) \ ! _size mipc_##_name##_suffix(void __iomem *addr) \ { \ struct mipc_device *ipc_dev = mipc_get_device(); \ *************** *** 530,534 **** return resp.args[0]; \ \ ! DBG(__stringify(_name, _suffix) "(%p)\n", addr); \ BUG(); \ return 0; \ --- 499,503 ---- return resp.args[0]; \ \ ! pr_devel(__stringify(_name, _suffix) "(%p)\n", addr); \ BUG(); \ return 0; \ *************** *** 547,551 **** __declare_ipc_send3_accessor(clrsetbits, l, unsigned int, MIPC_SYS_MASK32) ! void mipc_indirect_wmb(void) { struct mipc_device *ipc_dev = mipc_get_device(); --- 516,520 ---- __declare_ipc_send3_accessor(clrsetbits, l, unsigned int, MIPC_SYS_MASK32) ! void mipc_wmb(void) { struct mipc_device *ipc_dev = mipc_get_device(); *************** *** 556,716 **** return; ! DBG(__stringify(_name, _suffix) "()\n"); BUG(); } - void __iomem *mipc_indirect_ioremap(phys_addr_t addr, unsigned long size) - { - return (void __iomem *)addr; - } - - void mipc_indirect_iounmap(volatile void __iomem *addr) - { - /* nothing to do */ - } - - /* - * - * Direct I/O operations. - * - */ - - void mipc_direct_writel(unsigned int val, void __iomem *addr) - { - out_be32(addr, val); - } - - void mipc_direct_writew(unsigned short val, void __iomem *addr) - { - out_be16(addr, val); - } - - void mipc_direct_writeb(unsigned char val, void __iomem *addr) - { - out_8(addr, val); - } - - void mipc_direct_setbitl(unsigned int val, void __iomem *addr) - { - out_be32(addr, in_be32(addr) | val); - } - - void mipc_direct_clearbitl(unsigned int val, void __iomem *addr) - { - out_be32(addr, in_be32(addr) & ~val); - } - - void mipc_direct_clrsetbitsl(unsigned int clear, unsigned int set, - void __iomem *addr) - { - out_be32(addr, (in_be32(addr) & ~clear) | set); - } - - unsigned int mipc_direct_readl(void __iomem *addr) - { - return in_be32(addr); - } - - unsigned short mipc_direct_readw(void __iomem *addr) - { - return in_be16(addr); - } - - unsigned char mipc_direct_readb(void __iomem *addr) - { - return in_8(addr); - } - - void mipc_direct_wmb(void) - { - wmb(); - } - - void __iomem *mipc_direct_ioremap(phys_addr_t addr, unsigned long size) - { - return ioremap(addr, size); - } - - void mipc_direct_iounmap(volatile void __iomem *addr) - { - iounmap(addr); - } - - - /* - * - * - */ - - unsigned int mipc_readl(void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - return ipc_dev->ops->readl(addr); - } - - unsigned short mipc_readw(void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - return ipc_dev->ops->readw(addr); - } - - unsigned char mipc_readb(void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - return ipc_dev->ops->readb(addr); - } - - void mipc_writel(unsigned int val, void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - ipc_dev->ops->writel(val, addr); - } - - void mipc_writew(unsigned short val, void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - ipc_dev->ops->writew(val, addr); - } - - void mipc_writeb(unsigned char val, void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - ipc_dev->ops->writeb(val, addr); - } - - void mipc_setbitl(unsigned int val, void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - ipc_dev->ops->setbitl(val, addr); - } - - void mipc_clearbitl(unsigned int val, void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - ipc_dev->ops->clearbitl(val, addr); - } - - void mipc_clrsetbitsl(unsigned int clear, unsigned int set, void __iomem *addr) - { - struct mipc_device *ipc_dev = mipc_get_device(); - ipc_dev->ops->clrsetbitsl(clear, set, addr); - } - - void mipc_wmb(void) - { - struct mipc_device *ipc_dev = mipc_get_device(); - ipc_dev->ops->_wmb(); - } - void __iomem *mipc_ioremap(phys_addr_t addr, unsigned long size) { ! struct mipc_device *ipc_dev = mipc_get_device(); ! return ipc_dev->ops->ioremap(addr, size); } void mipc_iounmap(volatile void __iomem *addr) { ! struct mipc_device *ipc_dev = mipc_get_device(); ! ipc_dev->ops->iounmap(addr); } --- 525,540 ---- return; ! pr_devel(__stringify(_name, _suffix) "()\n"); BUG(); } void __iomem *mipc_ioremap(phys_addr_t addr, unsigned long size) { ! return (void __iomem *)addr; } void mipc_iounmap(volatile void __iomem *addr) { ! /* nothing to do */ } *************** *** 796,800 **** p = ioremap(0x13fffffc, 4); if (!p) { ! drv_printk(KERN_ERR, "unable to ioremap mini ipc header ptr\n"); error = -ENOMEM; goto out; --- 620,624 ---- p = ioremap(0x13fffffc, 4); if (!p) { ! pr_err("unable to ioremap mini ipc header ptr\n"); error = -ENOMEM; goto out; *************** *** 802,806 **** /* check that the header pointer points to MEM2 */ if (mipc_check_address(*p)) { ! DBG("wrong mini ipc header address %pP\n", (void *)*p); error = -ENODEV; goto out_unmap_p; --- 626,630 ---- /* check that the header pointer points to MEM2 */ if (mipc_check_address(*p)) { ! pr_devel("wrong mini ipc header address %pP\n", (void *)*p); error = -ENODEV; goto out_unmap_p; *************** *** 810,814 **** PAGE_KERNEL); if (!hdr) { ! drv_printk(KERN_ERR, "unable to ioremap mini ipc header\n"); error = -ENOMEM; goto out_unmap_p; --- 634,638 ---- PAGE_KERNEL); if (!hdr) { ! pr_err("unable to ioremap mini ipc header\n"); error = -ENOMEM; goto out_unmap_p; *************** *** 819,828 **** magic[3] = 0; if (memcmp(magic, "IPC", 3)) { ! DBG("wrong magic \"%s\"\n", magic); error = -ENODEV; goto out_unmap_hdr; } if (hdr->version < MIPC_MIN_VER && hdr->version > MIPC_MAX_VER) { ! drv_printk(KERN_ERR, "unsupported mini ipc version %d" " (min %d, max %d)\n", hdr->version, MIPC_MIN_VER, MIPC_MAX_VER); --- 643,652 ---- magic[3] = 0; if (memcmp(magic, "IPC", 3)) { ! pr_devel("wrong magic \"%s\"\n", magic); error = -ENODEV; goto out_unmap_hdr; } if (hdr->version < MIPC_MIN_VER && hdr->version > MIPC_MAX_VER) { ! pr_err("unsupported mini ipc version %d" " (min %d, max %d)\n", hdr->version, MIPC_MIN_VER, MIPC_MAX_VER); *************** *** 831,845 **** } if (mipc_check_address(hdr->mem2_boundary)) { ! DBG("invalid mem2_boundary %pP\n", (void *)hdr->mem2_boundary); error = -EINVAL; goto out_unmap_hdr; } if (mipc_check_address(hdr->ipc_in)) { ! DBG("invalid ipc_in %pP\n", (void *)hdr->ipc_in); error = -EINVAL; goto out_unmap_hdr; } if (mipc_check_address(hdr->ipc_out)) { ! DBG("invalid ipc_out %pP\n", (void *)hdr->ipc_out); error = -EINVAL; goto out_unmap_hdr; --- 655,670 ---- } if (mipc_check_address(hdr->mem2_boundary)) { ! pr_err("invalid mem2_boundary %pP\n", ! (void *)hdr->mem2_boundary); error = -EINVAL; goto out_unmap_hdr; } if (mipc_check_address(hdr->ipc_in)) { ! pr_err("invalid ipc_in %pP\n", (void *)hdr->ipc_in); error = -EINVAL; goto out_unmap_hdr; } if (mipc_check_address(hdr->ipc_out)) { ! pr_err("invalid ipc_out %pP\n", (void *)hdr->ipc_out); error = -EINVAL; goto out_unmap_hdr; *************** *** 860,870 **** static void mipc_print_infohdr(struct mipc_infohdr *hdr) { ! drv_printk(KERN_INFO, "magic=%c%c%c, version=%d, mem2_boundary=%pP\n", ! hdr->magic[0], hdr->magic[1], hdr->magic[2], ! hdr->version, ! (void *)hdr->mem2_boundary); ! drv_printk(KERN_CONT, "ipc_in[%u] @ %pP, ipc_out[%u] @ %pP\n", ! hdr->ipc_in_size, (void *)hdr->ipc_in, ! hdr->ipc_out_size, (void *)hdr->ipc_out); } --- 685,695 ---- static void mipc_print_infohdr(struct mipc_infohdr *hdr) { ! pr_info("magic=%c%c%c, version=%d, mem2_boundary=%pP\n", ! hdr->magic[0], hdr->magic[1], hdr->magic[2], ! hdr->version, ! (void *)hdr->mem2_boundary); ! pr_cont("ipc_in[%u] @ %pP, ipc_out[%u] @ %pP\n", ! hdr->ipc_in_size, (void *)hdr->ipc_in, ! hdr->ipc_out_size, (void *)hdr->ipc_out); } *************** *** 899,903 **** gpio = mipc_ioremap(0x0d8000c0, 4); if (!gpio) { ! DBG("ioremap failed\n"); return; } --- 724,728 ---- gpio = mipc_ioremap(0x0d8000c0, 4); if (!gpio) { ! pr_err("ioremap failed\n"); return; } *************** *** 925,937 **** } ! drv_printk(KERN_INFO, "io timings in timebase ticks" ! " (1 usec = %lu ticks)\n", tb_ticks_per_usec); ! drv_printk(KERN_CONT, "mmio: read=%lu (%lu ns), write=%lu (%lu ns)\n", ! t_read, tbl_to_ns(t_read), t_write, tbl_to_ns(t_write)); ! drv_printk(KERN_CONT, "mipc: read=%lu (%lu ns), write=%lu (%lu ns)\n", ! t_mipc_read, tbl_to_ns(t_mipc_read), ! t_mipc_write, tbl_to_ns(t_mipc_write)); ! drv_printk(KERN_CONT, "mipc: ping=%lu (%lu ns)\n", ! t_mipc_ping, tbl_to_ns(t_mipc_ping)); mipc_iounmap(gpio); --- 750,762 ---- } ! pr_info("io timings in timebase ticks" ! " (1 usec = %lu ticks)\n", tb_ticks_per_usec); ! pr_cont("mmio: read=%lu (%lu ns), write=%lu (%lu ns)\n", ! t_read, tbl_to_ns(t_read), t_write, tbl_to_ns(t_write)); ! pr_cont("mipc: read=%lu (%lu ns), write=%lu (%lu ns)\n", ! t_mipc_read, tbl_to_ns(t_mipc_read), ! t_mipc_write, tbl_to_ns(t_mipc_write)); ! pr_cont("mipc: ping=%lu (%lu ns)\n", ! t_mipc_ping, tbl_to_ns(t_mipc_ping)); mipc_iounmap(gpio); *************** *** 946,953 **** _MIPC(_MIPC_SLOW, _MIPC_DEV_SDHC, _MIPC_SDHC_EXIT), 0); ! if (error) { ! drv_printk(KERN_ERR, "unable to shutdown mini SDHC subsystem" ! ", you are DOOMED!\n"); ! } } --- 771,776 ---- _MIPC(_MIPC_SLOW, _MIPC_DEV_SDHC, _MIPC_SDHC_EXIT), 0); ! if (error) ! pr_err("unable to shutdown mini SDHC subsystem\n"); } *************** *** 970,1025 **** } ! struct mipc_ops mipc_indirect_ops = { ! .readl = mipc_indirect_readl, ! .readw = mipc_indirect_readw, ! .readb = mipc_indirect_readb, ! .writel = mipc_indirect_writel, ! .writew = mipc_indirect_writew, ! .writeb = mipc_indirect_writeb, ! .setbitl = mipc_indirect_setbitl, ! .clearbitl = mipc_indirect_clearbitl, ! .clrsetbitsl = mipc_indirect_clrsetbitsl, ! ._wmb = mipc_indirect_wmb, ! .ioremap = mipc_indirect_ioremap, ! .iounmap = mipc_indirect_iounmap, ! }; ! ! struct mipc_ops mipc_direct_ops = { ! .readl = mipc_direct_readl, ! .readw = mipc_direct_readw, ! .readb = mipc_direct_readb, ! .writel = mipc_direct_writel, ! .writew = mipc_direct_writew, ! .writeb = mipc_direct_writeb, ! .setbitl = mipc_direct_setbitl, ! .clearbitl = mipc_direct_clearbitl, ! .clrsetbitsl = mipc_direct_clrsetbitsl, ! ._wmb = mipc_direct_wmb, ! .ioremap = mipc_direct_ioremap, ! .iounmap = mipc_direct_iounmap, ! }; ! ! static void mipc_init_ops(struct mipc_device *ipc_dev) { void __iomem *hw_ahbprot = (void __iomem *)0x0d800064; u32 initial_ahbprot, ahbprot; ! initial_ahbprot = mipc_indirect_readl(hw_ahbprot); if (initial_ahbprot != 0xffffffff) { ! drv_printk(KERN_INFO, "AHBPROT=%08X (before)\n", ! initial_ahbprot); ! mipc_indirect_writel(0xffffffff, hw_ahbprot); } ! ahbprot = mipc_indirect_readl(hw_ahbprot); if (initial_ahbprot != ahbprot) ! drv_printk(KERN_INFO, "AHBPROT=%08X (after)\n", ahbprot); ! if (ahbprot != 0xffffffff) { ! drv_printk(KERN_INFO, "using indirect io via mini\n"); ! ipc_dev->ops = &mipc_indirect_ops; ! } else { ! drv_printk(KERN_INFO, "using direct io\n"); ! ipc_dev->ops = &mipc_direct_ops; ! } } --- 793,812 ---- } ! static void mipc_init_ahbprot(struct mipc_device *ipc_dev) { void __iomem *hw_ahbprot = (void __iomem *)0x0d800064; u32 initial_ahbprot, ahbprot; ! initial_ahbprot = mipc_readl(hw_ahbprot); if (initial_ahbprot != 0xffffffff) { ! pr_debug("AHBPROT=%08X (before)\n", initial_ahbprot); ! mipc_writel(0xffffffff, hw_ahbprot); } ! ahbprot = mipc_readl(hw_ahbprot); if (initial_ahbprot != ahbprot) ! pr_debug("AHBPROT=%08X (after)\n", ahbprot); ! if (ahbprot != 0xffffffff) ! pr_err("failed to set AHBPROT\n"); } *************** *** 1033,1037 **** error = mipc_discover(&hdr); if (error) { ! drv_printk(KERN_ERR, "unable to find mini ipc instance\n"); goto out; } --- 820,824 ---- error = mipc_discover(&hdr); if (error) { ! pr_err("unable to find mini ipc instance\n"); goto out; } *************** *** 1069,1078 **** goto out; ! drv_printk(KERN_INFO, "ping OK\n"); ! ! mipc_init_ops(ipc_dev); if (mipc_do_simple_tests) mipc_simple_tests(ipc_dev); mipc_starlet_fixups(ipc_dev); --- 856,864 ---- goto out; ! pr_info("ping OK\n"); if (mipc_do_simple_tests) mipc_simple_tests(ipc_dev); + mipc_init_ahbprot(ipc_dev); mipc_starlet_fixups(ipc_dev); *************** *** 1102,1106 **** ipc_dev = kzalloc(sizeof(*ipc_dev), GFP_KERNEL); if (!ipc_dev) { ! drv_printk(KERN_ERR, "failed to allocate ipc_dev\n"); error = -ENOMEM; goto out; --- 888,892 ---- ipc_dev = kzalloc(sizeof(*ipc_dev), GFP_KERNEL); if (!ipc_dev) { ! pr_err("failed to allocate ipc_dev\n"); error = -ENOMEM; goto out; *************** *** 1116,1121 **** } ! drv_printk(KERN_INFO, "ready\n"); ! hollywood_pic_probe(); out: --- 902,907 ---- } ! pr_info("ready\n"); ! hlwd_pic_probe(); out: *************** *** 1166,1170 **** error = of_address_to_resource(odev->node, 0, &mem[0]); if (error) { ! drv_printk(KERN_ERR, "no io memory range found (%d)\n", error); goto out; } --- 952,956 ---- error = of_address_to_resource(odev->node, 0, &mem[0]); if (error) { ! pr_err("no io memory range found (%d)\n", error); goto out; } *************** *** 1209,1214 **** static int __init mipc_init_module(void) { ! drv_printk(KERN_INFO, "%s - version %s\n", DRV_DESCRIPTION, ! mipc_driver_version); return of_register_platform_driver(&mipc_of_driver); --- 995,999 ---- static int __init mipc_init_module(void) { ! pr_info("%s - version %s\n", DRV_DESCRIPTION, mipc_driver_version); return of_register_platform_driver(&mipc_of_driver); |
From: Albert H. <he...@us...> - 2009-12-09 18:45:05
|
Update of /cvsroot/gc-linux/linux/drivers/net/usb In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/net/usb Modified Files: usbnet.c Log Message: Merge v2.6.32. Index: usbnet.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/usb/usbnet.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** usbnet.c 9 Dec 2009 18:40:10 -0000 1.11 --- usbnet.c 9 Dec 2009 18:44:55 -0000 1.12 *************** *** 587,591 **** --- 587,593 ---- // during some PM-driven resume scenarios, // these (async) unlinks complete immediately + spin_unlock(&q->lock); retval = usb_unlink_urb (urb); + spin_lock(&q->lock); if (retval != -EINPROGRESS && retval != 0) devdbg (dev, "unlink urb err, %d", retval); |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/drivers/input In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/input Modified Files: Kconfig Log Message: Merge v2.6.32. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/Kconfig,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** Kconfig 9 Dec 2009 18:18:07 -0000 1.17 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.18 *************** *** 181,184 **** --- 181,186 ---- source "drivers/input/gameport/Kconfig" + source "drivers/input/si/Kconfig" + endmenu |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/drivers/usb In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/usb Modified Files: Kconfig Makefile Log Message: Merge v2.6.32. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/Makefile,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Makefile 9 Dec 2009 18:40:10 -0000 1.12 --- Makefile 9 Dec 2009 18:44:55 -0000 1.13 *************** *** 20,23 **** --- 20,24 ---- obj-$(CONFIG_USB_U132_HCD) += host/ obj-$(CONFIG_USB_R8A66597_HCD) += host/ + obj-$(CONFIG_USB_WII_HCD) += host/ obj-$(CONFIG_USB_HWA_HCD) += host/ obj-$(CONFIG_USB_ISP1760_HCD) += host/ Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/Kconfig,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Kconfig 9 Dec 2009 18:40:10 -0000 1.13 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.14 *************** *** 23,26 **** --- 23,28 ---- default y if ARM # SL-811 default y if SUPERH # r8a66597-hcd + default y if WII # rvl-sthcd + default y if STARLET_IOS # rvl-sthcd default PCI |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/arch/powerpc/platforms Modified Files: Kconfig.cputype Log Message: Merge v2.6.32. Index: Kconfig.cputype =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/Kconfig.cputype,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** Kconfig.cputype 9 Dec 2009 18:40:09 -0000 1.15 --- Kconfig.cputype 9 Dec 2009 18:44:54 -0000 1.16 *************** *** 313,317 **** config NOT_COHERENT_CACHE bool ! depends on 4xx || 8xx || E200 || PPC_MPC512x default y --- 313,317 ---- config NOT_COHERENT_CACHE bool ! depends on 4xx || 8xx || E200 || PPC_MPC512x || GAMECUBE_COMMON default y |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/drivers/input/keyboard In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/input/keyboard Modified Files: Kconfig Makefile Log Message: Merge v2.6.32. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/keyboard/Makefile,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Makefile 9 Dec 2009 18:40:09 -0000 1.14 --- Makefile 9 Dec 2009 18:44:55 -0000 1.15 *************** *** 38,39 **** --- 38,40 ---- obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o obj-$(CONFIG_KEYBOARD_W90P910) += w90p910_keypad.o + obj-$(CONFIG_KEYBOARD_WII) += rvl-stkbd.o Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/keyboard/Kconfig,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** Kconfig 9 Dec 2009 18:40:09 -0000 1.18 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.19 *************** *** 352,355 **** --- 352,366 ---- module will be called sunkbd. + config KEYBOARD_WII + tristate "Nintendo Wii USB keyboard IOS glue" + depends on (STARLET_IOS && !USB) + help + Say Y here if you have a Nintendo Wii console running Linux and have + a keyboard attached to one of its USB ports. + This driver uses the IOS interface glue to access the USB keyboard. + + To compile this driver as a module, choose M here: the + module will be called rvl-stkbd. + config KEYBOARD_SH_KEYSC tristate "SuperH KEYSC keypad support" |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/configs In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/arch/powerpc/configs Modified Files: gamecube_defconfig wii_defconfig Log Message: Merge v2.6.32. Index: wii_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/configs/wii_defconfig,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** wii_defconfig 25 Oct 2009 18:59:27 -0000 1.13 --- wii_defconfig 9 Dec 2009 18:44:54 -0000 1.14 *************** *** 1,6 **** # # Automatically generated make config: don't edit ! # Linux kernel version: 2.6.31 ! # Sun Sep 20 17:14:35 2009 # # CONFIG_PPC64 is not set --- 1,6 ---- # # Automatically generated make config: don't edit ! # Linux kernel version: 2.6.32 ! # Sun Dec 6 20:39:03 2009 # # CONFIG_PPC64 is not set *************** *** 37,40 **** --- 37,41 ---- CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set + # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set CONFIG_IRQ_PER_CPU=y CONFIG_STACKTRACE_SUPPORT=y *************** *** 75,79 **** CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="-isobel-wii" ! CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y --- 76,80 ---- CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="-isobel-wii" ! # CONFIG_LOCALVERSION_AUTO is not set CONFIG_SWAP=y CONFIG_SYSVIPC=y *************** *** 87,95 **** # RCU Subsystem # ! CONFIG_CLASSIC_RCU=y ! # CONFIG_TREE_RCU is not set ! # CONFIG_PREEMPT_RCU is not set # CONFIG_TREE_RCU_TRACE is not set - # CONFIG_PREEMPT_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y --- 88,97 ---- # RCU Subsystem # ! CONFIG_TREE_RCU=y ! # CONFIG_TREE_PREEMPT_RCU is not set ! # CONFIG_RCU_TRACE is not set ! CONFIG_RCU_FANOUT=32 ! # CONFIG_RCU_FANOUT_EXACT is not set # CONFIG_TREE_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y *************** *** 130,142 **** CONFIG_SHMEM=y CONFIG_AIO=y ! CONFIG_HAVE_PERF_COUNTERS=y # ! # Performance Counters # ! CONFIG_PERF_COUNTERS=y CONFIG_EVENT_PROFILE=y # CONFIG_VM_EVENT_COUNTERS is not set - # CONFIG_STRIP_ASM_SYMS is not set CONFIG_COMPAT_BRK=y CONFIG_SLAB=y --- 132,145 ---- CONFIG_SHMEM=y CONFIG_AIO=y ! CONFIG_HAVE_PERF_EVENTS=y # ! # Kernel Performance Events And Counters # ! CONFIG_PERF_EVENTS=y CONFIG_EVENT_PROFILE=y + CONFIG_PERF_COUNTERS=y + # CONFIG_DEBUG_PERF_USE_VMALLOC is not set # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_COMPAT_BRK=y CONFIG_SLAB=y *************** *** 145,149 **** # CONFIG_PROFILING is not set CONFIG_TRACEPOINTS=y - CONFIG_MARKERS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set --- 148,151 ---- *************** *** 153,156 **** --- 155,160 ---- CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y + CONFIG_HAVE_DMA_ATTRS=y + CONFIG_HAVE_DMA_API_DEBUG=y # *************** *** 158,162 **** # # CONFIG_GCOV_KERNEL is not set ! # CONFIG_SLOW_WORK is not set CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y --- 162,167 ---- # # CONFIG_GCOV_KERNEL is not set ! CONFIG_SLOW_WORK=y ! # CONFIG_SLOW_WORK_DEBUG is not set CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y *************** *** 214,218 **** CONFIG_STARLET_MINI=y CONFIG_FLIPPER_PIC=y ! CONFIG_HOLLYWOOD_PIC=y CONFIG_GAMECUBE_COMMON=y CONFIG_GAMECUBE_UDBG=y --- 219,223 ---- CONFIG_STARLET_MINI=y CONFIG_FLIPPER_PIC=y ! CONFIG_HLWD_PIC=y CONFIG_GAMECUBE_COMMON=y CONFIG_GAMECUBE_UDBG=y *************** *** 220,224 **** # CONFIG_GAMECUBE_VIDEO_UDBG is not set CONFIG_GAMECUBE_RSW=y ! CONFIG_WII_GPIO=y # CONFIG_AMIGAONE is not set # CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set --- 225,229 ---- # CONFIG_GAMECUBE_VIDEO_UDBG is not set CONFIG_GAMECUBE_RSW=y ! CONFIG_HLWD_GPIO=y # CONFIG_AMIGAONE is not set # CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set *************** *** 259,263 **** # CONFIG_IOMMU_HELPER is not set # CONFIG_SWIOTLB is not set - CONFIG_PPC_NEED_DMA_SYNC_OPS=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_HAS_WALK_MEMORY=y --- 264,267 ---- *************** *** 265,268 **** --- 269,273 ---- CONFIG_KEXEC=y # CONFIG_CRASH_DUMP is not set + CONFIG_MAX_ACTIVE_REGIONS=32 CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_POPULATES_NODE_MAP=y *************** *** 282,285 **** --- 287,291 ---- CONFIG_HAVE_MLOCK=y CONFIG_HAVE_MLOCKED_PAGE_BIT=y + # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_PPC_4K_PAGES=y *************** *** 362,365 **** --- 368,372 ---- # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set + # CONFIG_RDS is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set *************** *** 392,396 **** # CONFIG_BT_SCO is not set CONFIG_BT_RFCOMM=y ! # CONFIG_BT_RFCOMM_TTY is not set CONFIG_BT_BNEP=y CONFIG_BT_BNEP_MC_FILTER=y --- 399,403 ---- # CONFIG_BT_SCO is not set CONFIG_BT_RFCOMM=y ! CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=y CONFIG_BT_BNEP_MC_FILTER=y *************** *** 408,415 **** --- 415,427 ---- # CONFIG_BT_HCIBFUSB is not set # CONFIG_BT_HCIVHCI is not set + # CONFIG_BT_MRVL is not set # CONFIG_AF_RXRPC is not set CONFIG_WIRELESS=y CONFIG_CFG80211=y + # CONFIG_NL80211_TESTMODE is not set + # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set # CONFIG_CFG80211_REG_DEBUG is not set + CONFIG_CFG80211_DEFAULT_PS=y + CONFIG_CFG80211_DEFAULT_PS_VALUE=1 # CONFIG_CFG80211_DEBUGFS is not set CONFIG_WIRELESS_OLD_REGULATORY=y *************** *** 418,427 **** # CONFIG_LIB80211 is not set CONFIG_MAC80211=y - CONFIG_MAC80211_DEFAULT_PS=y - CONFIG_MAC80211_DEFAULT_PS_VALUE=1 - - # - # Rate control algorithm selection - # # CONFIG_MAC80211_RC_PID is not set CONFIG_MAC80211_RC_MINSTREL=y --- 430,433 ---- *************** *** 429,432 **** --- 435,439 ---- CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel" + # CONFIG_MAC80211_MESH is not set # CONFIG_MAC80211_LEDS is not set # CONFIG_MAC80211_DEBUGFS is not set *************** *** 444,450 **** # 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 --- 451,460 ---- # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" + # CONFIG_DEVTMPFS is not set # CONFIG_STANDALONE is not set CONFIG_PREVENT_FIRMWARE_BUILD=y ! CONFIG_FW_LOADER=y ! # CONFIG_FIRMWARE_IN_KERNEL is not set ! CONFIG_EXTRA_FIRMWARE="" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set *************** *** 461,464 **** --- 471,475 ---- CONFIG_WII_MEM2=m CONFIG_WII_SD=y + CONFIG_WII_DI=y # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y *************** *** 554,565 **** # CONFIG_B44 is not set # CONFIG_KS8842 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 # --- 565,596 ---- # CONFIG_B44 is not set # CONFIG_KS8842 is not set + # CONFIG_KS8851_MLL is not set + # CONFIG_XILINX_EMACLITE is not set # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set ! CONFIG_WLAN=y # CONFIG_WLAN_PRE80211 is not set ! CONFIG_WLAN_80211=y ! # CONFIG_LIBERTAS is not set ! # CONFIG_LIBERTAS_THINFIRM is not set ! # CONFIG_AT76C50X_USB is not set ! # CONFIG_USB_ZD1201 is not set ! # CONFIG_USB_NET_RNDIS_WLAN is not set ! # CONFIG_RTL8187 is not set ! # CONFIG_MAC80211_HWSIM is not set ! # CONFIG_P54_COMMON is not set ! # CONFIG_ATH_COMMON is not set ! # CONFIG_HOSTAP is not set ! CONFIG_B43=y ! CONFIG_B43_SDIO=y ! CONFIG_B43_PIO=y ! # CONFIG_B43_PHY_LP is not set ! # CONFIG_B43_DEBUG is not set ! CONFIG_B43_DEFAULT_QOS_OFF=y ! # CONFIG_B43LEGACY is not set ! # CONFIG_ZD1211RW is not set ! # CONFIG_RT2X00 is not set ! # CONFIG_WL12XX is not set ! # CONFIG_IWM is not set # *************** *** 619,627 **** --- 650,662 ---- # CONFIG_INPUT_KEYBOARD=y + # CONFIG_KEYBOARD_ADP5588 is not set # CONFIG_KEYBOARD_ATKBD is not set + # CONFIG_QT2160 is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_GPIO is not set # CONFIG_KEYBOARD_MATRIX is not set + # CONFIG_KEYBOARD_MAX7359 is not set # CONFIG_KEYBOARD_NEWTON is not set + # CONFIG_KEYBOARD_OPENCORES is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_KEYBOARD_SUNKBD is not set *************** *** 715,718 **** --- 750,754 ---- CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y + CONFIG_I2C_COMPAT=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_HELPER_AUTO=y *************** *** 750,756 **** # # CONFIG_DS1682 is not set - # CONFIG_SENSORS_PCF8574 is not set - # CONFIG_PCF8575 is not set - # CONFIG_SENSORS_PCA9539 is not set # CONFIG_SENSORS_TSL2550 is not set # CONFIG_I2C_DEBUG_CORE is not set --- 786,789 ---- *************** *** 793,801 **** # SPI GPIO expanders: # # CONFIG_W1 is not set # CONFIG_POWER_SUPPLY is not set # CONFIG_HWMON is not set # CONFIG_THERMAL is not set - # CONFIG_THERMAL_HWMON is not set # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y --- 826,837 ---- # SPI GPIO expanders: # + + # + # AC97 GPIO expanders: + # # CONFIG_W1 is not set # CONFIG_POWER_SUPPLY is not set # CONFIG_HWMON is not set # CONFIG_THERMAL is not set # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y *************** *** 804,808 **** # Sonics Silicon Backplane # ! # CONFIG_SSB is not set # --- 840,849 ---- # Sonics Silicon Backplane # ! CONFIG_SSB=y ! CONFIG_SSB_BLOCKIO=y ! CONFIG_SSB_SDIOHOST_POSSIBLE=y ! CONFIG_SSB_SDIOHOST=y ! # CONFIG_SSB_SILENT is not set ! CONFIG_SSB_DEBUG=y # *************** *** 817,820 **** --- 858,862 ---- # CONFIG_PMIC_DA903X is not set # CONFIG_MFD_WM8400 is not set + # CONFIG_MFD_WM831X is not set # CONFIG_MFD_WM8350_I2C is not set # CONFIG_MFD_PCF50633 is not set *************** *** 881,884 **** --- 923,927 ---- CONFIG_SOUND=y CONFIG_SOUND_OSS_CORE=y + CONFIG_SOUND_OSS_CORE_PRECLAIM=y CONFIG_SND=y CONFIG_SND_TIMER=y *************** *** 921,925 **** CONFIG_HID_SUPPORT=y CONFIG_HID=y - # CONFIG_HID_DEBUG is not set # CONFIG_HIDRAW is not set --- 964,967 ---- *************** *** 945,957 **** CONFIG_HID_KYE=m CONFIG_HID_GYRATION=m CONFIG_HID_KENSINGTON=m CONFIG_HID_LOGITECH=m ! # CONFIG_LOGITECH_FF is not set ! # CONFIG_LOGIRUMBLEPAD2_FF is not set CONFIG_HID_MICROSOFT=m CONFIG_HID_MONTEREY=m ! # CONFIG_HID_NTRIG is not set CONFIG_HID_PANTHERLORD=m ! # CONFIG_PANTHERLORD_FF is not set CONFIG_HID_PETALYNX=m CONFIG_HID_SAMSUNG=m --- 987,1000 ---- CONFIG_HID_KYE=m CONFIG_HID_GYRATION=m + CONFIG_HID_TWINHAN=m CONFIG_HID_KENSINGTON=m CONFIG_HID_LOGITECH=m ! CONFIG_LOGITECH_FF=y ! CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_HID_MICROSOFT=m CONFIG_HID_MONTEREY=m ! CONFIG_HID_NTRIG=m CONFIG_HID_PANTHERLORD=m ! CONFIG_PANTHERLORD_FF=y CONFIG_HID_PETALYNX=m CONFIG_HID_SAMSUNG=m *************** *** 959,966 **** CONFIG_HID_SUNPLUS=m CONFIG_HID_GREENASIA=m ! # CONFIG_GREENASIA_FF is not set CONFIG_HID_SMARTJOYPLUS=m CONFIG_SMARTJOYPLUS_FF=y ! # CONFIG_HID_TOPSEED is not set CONFIG_HID_THRUSTMASTER=m CONFIG_THRUSTMASTER_FF=y --- 1002,1009 ---- CONFIG_HID_SUNPLUS=m CONFIG_HID_GREENASIA=m ! CONFIG_GREENASIA_FF=y CONFIG_HID_SMARTJOYPLUS=m CONFIG_SMARTJOYPLUS_FF=y ! CONFIG_HID_TOPSEED=m CONFIG_HID_THRUSTMASTER=m CONFIG_THRUSTMASTER_FF=y *************** *** 997,1009 **** # CONFIG_USB_EHCI_TT_NEWSCHED is not set # CONFIG_USB_EHCI_HCD_PPC_OF is not set ! CONFIG_USB_EHCI_HCD_MIPC=y # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP1760_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set # CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set # CONFIG_USB_OHCI_HCD_PPC_OF is not set ! CONFIG_USB_OHCI_HCD_MIPC=y # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set --- 1040,1054 ---- # CONFIG_USB_EHCI_TT_NEWSCHED is not set # CONFIG_USB_EHCI_HCD_PPC_OF is not set ! CONFIG_USB_EHCI_HCD_HLWD=y # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP1760_HCD is not set + # CONFIG_USB_ISP1362_HCD is not set CONFIG_USB_OHCI_HCD=y # CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set # CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set # CONFIG_USB_OHCI_HCD_PPC_OF is not set ! CONFIG_USB_OHCI_HCD_HLWD=y ! # CONFIG_USB_OHCI_HCD_SSB is not set # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set *************** *** 1105,1110 **** # CONFIG_MMC_SDHCI_OF is not set # CONFIG_MMC_SDHCI_PLTFM is not set ! CONFIG_MMC_SDHCI_MIPC=y # CONFIG_MMC_WBSD is not set # CONFIG_MEMSTICK is not set # CONFIG_NEW_LEDS is not set --- 1150,1157 ---- # CONFIG_MMC_SDHCI_OF is not set # CONFIG_MMC_SDHCI_PLTFM is not set ! CONFIG_MMC_SDHCI_HLWD=y # CONFIG_MMC_WBSD is not set + # CONFIG_MMC_AT91 is not set + # CONFIG_MMC_ATMELMCI is not set # CONFIG_MEMSTICK is not set # CONFIG_NEW_LEDS is not set *************** *** 1196,1199 **** --- 1243,1247 ---- # CONFIG_OCFS2_FS is not set # CONFIG_BTRFS_FS is not set + # CONFIG_NILFS2_FS is not set CONFIG_FILE_LOCKING=y CONFIG_FSNOTIFY=y *************** *** 1204,1208 **** # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set ! # CONFIG_FUSE_FS is not set # --- 1252,1257 ---- # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set ! CONFIG_FUSE_FS=m ! CONFIG_CUSE=m # *************** *** 1259,1263 **** # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set - # CONFIG_NILFS2_FS is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y --- 1308,1311 ---- *************** *** 1338,1342 **** CONFIG_GENERIC_FIND_LAST_BIT=y CONFIG_CRC_CCITT=y ! # CONFIG_CRC16 is not set # CONFIG_CRC_T10DIF is not set # CONFIG_CRC_ITU_T is not set --- 1386,1390 ---- CONFIG_GENERIC_FIND_LAST_BIT=y CONFIG_CRC_CCITT=y ! CONFIG_CRC16=y # CONFIG_CRC_T10DIF is not set # CONFIG_CRC_ITU_T is not set *************** *** 1361,1364 **** --- 1409,1413 ---- CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y + # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set CONFIG_DEBUG_FS=y *************** *** 1375,1378 **** --- 1424,1428 ---- # CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_SLAB is not set + # CONFIG_DEBUG_KMEMLEAK is not set CONFIG_DEBUG_PREEMPT=y # CONFIG_DEBUG_RT_MUTEXES is not set *************** *** 1395,1402 **** --- 1445,1454 ---- # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set + # CONFIG_DEBUG_CREDENTIALS is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set + # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_FAULT_INJECTION is not set CONFIG_LATENCYTOP=y *************** *** 1431,1438 **** # CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_DYNAMIC_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set - # CONFIG_KMEMCHECK is not set # CONFIG_PPC_DISABLE_WERROR is not set CONFIG_PPC_WERROR=y --- 1483,1490 ---- # CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_DYNAMIC_DEBUG is not set + CONFIG_DMA_API_DEBUG=y # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set # CONFIG_PPC_DISABLE_WERROR is not set CONFIG_PPC_WERROR=y *************** *** 1475,1479 **** # Crypto core or helper # - # CONFIG_CRYPTO_FIPS is not set CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y --- 1527,1530 ---- *************** *** 1516,1519 **** --- 1567,1571 ---- # CONFIG_CRYPTO_HMAC is not set # CONFIG_CRYPTO_XCBC is not set + # CONFIG_CRYPTO_VMAC is not set # *************** *** 1521,1524 **** --- 1573,1577 ---- # # CONFIG_CRYPTO_CRC32C is not set + # CONFIG_CRYPTO_GHASH is not set # CONFIG_CRYPTO_MD4 is not set # CONFIG_CRYPTO_MD5 is not set Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/configs/gamecube_defconfig,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** gamecube_defconfig 25 Oct 2009 18:59:27 -0000 1.8 --- gamecube_defconfig 9 Dec 2009 18:44:54 -0000 1.9 *************** *** 1,6 **** # # Automatically generated make config: don't edit ! # Linux kernel version: 2.6.31 ! # Sun Sep 20 17:00:48 2009 # # CONFIG_PPC64 is not set --- 1,6 ---- # # Automatically generated make config: don't edit ! # Linux kernel version: 2.6.32 ! # Sun Dec 6 20:15:08 2009 # # CONFIG_PPC64 is not set *************** *** 37,40 **** --- 37,41 ---- CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set + # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set CONFIG_IRQ_PER_CPU=y CONFIG_STACKTRACE_SUPPORT=y *************** *** 86,94 **** # RCU Subsystem # ! CONFIG_CLASSIC_RCU=y ! # CONFIG_TREE_RCU is not set ! # CONFIG_PREEMPT_RCU is not set # CONFIG_TREE_RCU_TRACE is not set - # CONFIG_PREEMPT_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y --- 87,96 ---- # RCU Subsystem # ! CONFIG_TREE_RCU=y ! # CONFIG_TREE_PREEMPT_RCU is not set ! # CONFIG_RCU_TRACE is not set ! CONFIG_RCU_FANOUT=32 ! # CONFIG_RCU_FANOUT_EXACT is not set # CONFIG_TREE_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y *************** *** 129,141 **** CONFIG_SHMEM=y CONFIG_AIO=y ! CONFIG_HAVE_PERF_COUNTERS=y # ! # Performance Counters # ! CONFIG_PERF_COUNTERS=y CONFIG_EVENT_PROFILE=y # CONFIG_VM_EVENT_COUNTERS is not set - # CONFIG_STRIP_ASM_SYMS is not set CONFIG_COMPAT_BRK=y CONFIG_SLAB=y --- 131,144 ---- CONFIG_SHMEM=y CONFIG_AIO=y ! CONFIG_HAVE_PERF_EVENTS=y # ! # Kernel Performance Events And Counters # ! CONFIG_PERF_EVENTS=y CONFIG_EVENT_PROFILE=y + CONFIG_PERF_COUNTERS=y + # CONFIG_DEBUG_PERF_USE_VMALLOC is not set # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_COMPAT_BRK=y CONFIG_SLAB=y *************** *** 144,148 **** # CONFIG_PROFILING is not set CONFIG_TRACEPOINTS=y - CONFIG_MARKERS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set --- 147,150 ---- *************** *** 152,155 **** --- 154,159 ---- CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y + CONFIG_HAVE_DMA_ATTRS=y + CONFIG_HAVE_DMA_API_DEBUG=y # *************** *** 157,161 **** # # CONFIG_GCOV_KERNEL is not set ! # CONFIG_SLOW_WORK is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y --- 161,166 ---- # # CONFIG_GCOV_KERNEL is not set ! CONFIG_SLOW_WORK=y ! # CONFIG_SLOW_WORK_DEBUG is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y *************** *** 254,258 **** # CONFIG_IOMMU_HELPER is not set # CONFIG_SWIOTLB is not set - CONFIG_PPC_NEED_DMA_SYNC_OPS=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_HAS_WALK_MEMORY=y --- 259,262 ---- *************** *** 260,263 **** --- 264,268 ---- CONFIG_KEXEC=y # CONFIG_CRASH_DUMP is not set + CONFIG_MAX_ACTIVE_REGIONS=32 CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_POPULATES_NODE_MAP=y *************** *** 277,280 **** --- 282,286 ---- CONFIG_HAVE_MLOCK=y CONFIG_HAVE_MLOCKED_PAGE_BIT=y + # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_PPC_4K_PAGES=y *************** *** 357,360 **** --- 363,367 ---- # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set + # CONFIG_RDS is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set *************** *** 398,401 **** --- 405,409 ---- # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" + # CONFIG_DEVTMPFS is not set # CONFIG_STANDALONE is not set CONFIG_PREVENT_FIRMWARE_BUILD=y *************** *** 469,480 **** # CONFIG_B44 is not set # CONFIG_KS8842 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 # --- 477,485 ---- # CONFIG_B44 is not set # CONFIG_KS8842 is not set + # CONFIG_KS8851_MLL is not set + # CONFIG_XILINX_EMACLITE is not set # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set ! # CONFIG_WLAN is not set # *************** *** 512,515 **** --- 517,521 ---- # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_NEWTON is not set + # CONFIG_KEYBOARD_OPENCORES is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_KEYBOARD_SUNKBD is not set *************** *** 603,607 **** # CONFIG_HWMON is not set # CONFIG_THERMAL is not set - # CONFIG_THERMAL_HWMON is not set # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y --- 609,612 ---- *************** *** 683,686 **** --- 688,692 ---- CONFIG_SOUND=y CONFIG_SOUND_OSS_CORE=y + CONFIG_SOUND_OSS_CORE_PRECLAIM=y CONFIG_SND=y CONFIG_SND_TIMER=y *************** *** 716,720 **** CONFIG_HID_SUPPORT=y CONFIG_HID=y - # CONFIG_HID_DEBUG is not set # CONFIG_HIDRAW is not set # CONFIG_HID_PID is not set --- 722,725 ---- *************** *** 796,799 **** --- 801,805 ---- # CONFIG_OCFS2_FS is not set # CONFIG_BTRFS_FS is not set + # CONFIG_NILFS2_FS is not set CONFIG_FILE_LOCKING=y CONFIG_FSNOTIFY=y *************** *** 859,863 **** # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set - # CONFIG_NILFS2_FS is not set CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y --- 865,868 ---- *************** *** 961,964 **** --- 966,970 ---- CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set + # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_UNUSED_SYMBOLS is not set CONFIG_DEBUG_FS=y *************** *** 975,978 **** --- 981,985 ---- # CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_SLAB is not set + # CONFIG_DEBUG_KMEMLEAK is not set CONFIG_DEBUG_PREEMPT=y # CONFIG_DEBUG_RT_MUTEXES is not set *************** *** 995,1002 **** --- 1002,1011 ---- # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set + # CONFIG_DEBUG_CREDENTIALS is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set + # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_FAULT_INJECTION is not set CONFIG_LATENCYTOP=y *************** *** 1031,1038 **** # CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_DYNAMIC_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set - # CONFIG_KMEMCHECK is not set # CONFIG_PPC_DISABLE_WERROR is not set CONFIG_PPC_WERROR=y --- 1040,1047 ---- # CONFIG_RING_BUFFER_BENCHMARK is not set # CONFIG_DYNAMIC_DEBUG is not set + # CONFIG_DMA_API_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set # CONFIG_PPC_DISABLE_WERROR is not set CONFIG_PPC_WERROR=y |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/drivers/usb/host In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/usb/host Modified Files: Kconfig Makefile ehci-hcd.c ehci.h ohci-hcd.c ohci-q.c ohci.h Log Message: Merge v2.6.32. Index: ohci-q.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci-q.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ohci-q.c 9 Dec 2009 18:40:10 -0000 1.6 --- ohci-q.c 9 Dec 2009 18:44:55 -0000 1.7 *************** *** 619,622 **** --- 619,625 ---- /* FALLTHROUGH */ case PIPE_BULK: + if (ohci->flags & OHCI_QUIRK_WII) + ohci_hlwd_bulk_quirk(ohci); + info = is_out ? TD_T_TOGGLE | TD_CC | TD_DP_OUT *************** *** 650,653 **** --- 653,659 ---- */ case PIPE_CONTROL: + if (ohci->flags & OHCI_QUIRK_WII) + ohci_hlwd_control_quirk(ohci); + info = TD_CC | TD_DP_SETUP | TD_T_DATA0; td_fill (ohci, info, urb->setup_dma, 8, urb, cnt++); Index: ehci.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ehci.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ehci.h 9 Dec 2009 18:40:10 -0000 1.7 --- ehci.h 9 Dec 2009 18:44:55 -0000 1.8 *************** *** 600,603 **** --- 600,621 ---- #endif + #ifdef CONFIG_USB_EHCI_HCD_HLWD + + #include <asm/starlet-mini.h> + + static inline unsigned int ehci_readl(const struct ehci_hcd *ehci, + __u32 __iomem *regs) + { + return in_be32(regs); + } + + static inline void ehci_writel(const struct ehci_hcd *ehci, + const unsigned int val, __u32 __iomem *regs) + { + out_be32(regs, val); + } + + #else + /* * Big-endian read/write functions are arch-specific. *************** *** 633,636 **** --- 651,656 ---- } + #endif /* CONFIG_USB_EHCI_HCD_HLWD */ + /* * On certain ppc-44x SoC there is a HW issue, that could only worked around with Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/Kconfig,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Kconfig 9 Dec 2009 18:40:10 -0000 1.14 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.15 *************** *** 114,117 **** --- 114,125 ---- OpenFirmware platform bus. + config USB_EHCI_HCD_HLWD + bool "Nintendo Wii (Hollywood) EHCI USB controller support" + depends on USB_EHCI_HCD && STARLET_MINI + default y + ---help--- + Say Y here to support the EHCI USB controller found in the + Hollywood chipset of the Nintendo Wii video game console. + config USB_W90X900_EHCI bool "W90X900(W90P910) EHCI support" *************** *** 222,225 **** --- 230,242 ---- default USB_OHCI_HCD_PPC_OF_BE || USB_OHCI_HCD_PPC_OF_LE + config USB_OHCI_HCD_HLWD + bool "Nintendo Wii (Hollywood) OHCI USB controller support" + depends on USB_OHCI_HCD && STARLET_MINI + select USB_OHCI_LITTLE_ENDIAN + default y + ---help--- + Say Y here to support the OHCI USB controller found in the + Hollywood chipset of the Nintendo Wii video game console. + config USB_OHCI_HCD_PCI bool "OHCI support for PCI-bus USB controllers" *************** *** 355,358 **** --- 372,394 ---- module will be called r8a66597-hcd. + config USB_WII_HCD + tristate "Nintendo Wii HCD support" + depends on USB && STARLET_IOS && !HIGHMEM && EXPERIMENTAL + help + The Nintendo Wii includes a USB 1.1 host controller that can be + accessed through the API provided by the starlet subsystem. + + Enable this option if you plan to use the internal Nintendo Wii + bluetooth dongle or any USB peripheral connected to the external + ports. + + USB devices using isochronous transfers are not supported. + Use of USB hubs is partially supported. + + Use completely at you own risk. If unsure, say N. + + To compile this driver as a module, choose M here: the + module will be called rvl-sthcd. + config USB_WHCI_HCD tristate "Wireless USB Host Controller Interface (WHCI) driver (EXPERIMENTAL)" Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/Makefile,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Makefile 9 Dec 2009 18:40:10 -0000 1.11 --- Makefile 9 Dec 2009 18:44:55 -0000 1.12 *************** *** 32,34 **** --- 32,35 ---- obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o obj-$(CONFIG_USB_ISP1760_HCD) += isp1760.o + obj-$(CONFIG_USB_WII_HCD) += rvl-sthcd.o obj-$(CONFIG_USB_HWA_HCD) += hwa-hc.o Index: ohci.h =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ohci.h 9 Dec 2009 18:40:10 -0000 1.6 --- ohci.h 9 Dec 2009 18:44:55 -0000 1.7 *************** *** 17,20 **** --- 17,42 ---- /* + * Some platforms have weird constraints when accessing memory. + * + * For example, the Nintendo Wii video game console is unable to perform + * non-32 bit writes to non-cached memory for its second block of 64MB of RAM. + * As this platform also requires CONFIG_NOT_COHERENT_CACHE, all memory + * allocated using the dma memory allocation functions can only be written + * using 32-bit accesses. + * + * Because of this constraint, as a workaround, we make sure that all + * fields in struct ed and td (which are allocated from dma pools) are + * always 32 bit fields. + * Note that the remaining structs allocated from dma-able memory are already + * 32 bit fields. + */ + #ifdef CONFIG_USB_OHCI_HCD_HLWD + #define ohci_fld(type) u32 + #else + #define ohci_fld(type) type + #endif + + + /* * OHCI Endpoint Descriptor (ED) ... holds TD queue * See OHCI spec, section 4.2 *************** *** 52,70 **** * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... */ ! u8 state; /* ED_{IDLE,UNLINK,OPER} */ #define ED_IDLE 0x00 /* NOT linked to HC */ #define ED_UNLINK 0x01 /* being unlinked from hc */ #define ED_OPER 0x02 /* IS linked to hc */ ! u8 type; /* PIPE_{BULK,...} */ /* periodic scheduling params (for intr and iso) */ ! u8 branch; ! u16 interval; ! u16 load; ! u16 last_iso; /* iso only */ /* HC may see EDs on rm_list until next frame (frame_no == tick) */ ! u16 tick; } __attribute__ ((aligned(16))); --- 74,92 ---- * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... */ ! ohci_fld(u8) state; /* ED_{IDLE,UNLINK,OPER} */ #define ED_IDLE 0x00 /* NOT linked to HC */ #define ED_UNLINK 0x01 /* being unlinked from hc */ #define ED_OPER 0x02 /* IS linked to hc */ ! ohci_fld(u8) type; /* PIPE_{BULK,...} */ /* periodic scheduling params (for intr and iso) */ ! ohci_fld(u8) branch; ! ohci_fld(u16) interval; ! ohci_fld(u16) load; ! ohci_fld(u16) last_iso; /* iso only */ /* HC may see EDs on rm_list until next frame (frame_no == tick) */ ! ohci_fld(u16) tick; } __attribute__ ((aligned(16))); *************** *** 119,123 **** /* rest are purely for the driver's use */ ! __u8 index; struct ed *ed; struct td *td_hash; /* dma-->td hashtable */ --- 141,145 ---- /* rest are purely for the driver's use */ ! ohci_fld(__u8) index; struct ed *ed; struct td *td_hash; /* dma-->td hashtable */ *************** *** 404,407 **** --- 426,430 ---- #define OHCI_QUIRK_AMD_ISO 0x200 /* ISO transfers*/ #define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */ + #define OHCI_QUIRK_WII 0x800 /* Hollywood chipset */ // there are also chip quirks/bugs in init logic *************** *** 546,549 **** --- 569,603 ---- #endif + #ifdef CONFIG_USB_OHCI_HCD_HLWD + + #include <asm/starlet-mini.h> + + static inline unsigned int _ohci_readl(const struct ohci_hcd *ohci, + __hc32 __iomem *regs) + { + return in_be32(regs); + } + + static inline void _ohci_writel(const struct ohci_hcd *ohci, + const unsigned int val, __hc32 __iomem *regs) + { + out_be32(regs, val); + } + + extern void ohci_hlwd_control_quirk(struct ohci_hcd *ohci); + extern void ohci_hlwd_bulk_quirk(struct ohci_hcd *ohci); + + #else + + static inline void ohci_hlwd_control_quirk(struct ohci_hcd *ohci) + { + return; + } + + static inline void ohci_hlwd_bulk_quirk(struct ohci_hcd *ohci) + { + return; + } + /* * Big-endian read/write functions are arch-specific. *************** *** 575,578 **** --- 629,634 ---- } + #endif /* CONFIG_USB_OHCI_HCD_HLWD */ + #ifdef CONFIG_ARCH_LH7A404 /* Marc Singer: at the time this code was written, the LH7A404 Index: ohci-hcd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ohci-hcd.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ohci-hcd.c 9 Dec 2009 18:40:10 -0000 1.7 --- ohci-hcd.c 9 Dec 2009 18:44:55 -0000 1.8 *************** *** 1066,1069 **** --- 1066,1074 ---- #endif + #ifdef CONFIG_USB_OHCI_HCD_HLWD + #include "ohci-hlwd.c" + #define OF_PLATFORM_DRIVER ohci_hcd_hlwd_driver + #endif + #ifdef CONFIG_PPC_PS3 #include "ohci-ps3.c" Index: ehci-hcd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/usb/host/ehci-hcd.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ehci-hcd.c 9 Dec 2009 18:40:10 -0000 1.7 --- ehci-hcd.c 9 Dec 2009 18:44:55 -0000 1.8 *************** *** 1121,1124 **** --- 1121,1129 ---- #endif + #ifdef CONFIG_USB_EHCI_HCD_HLWD + #include "ehci-hlwd.c" + #define OF_PLATFORM_DRIVER ehci_hcd_hlwd_driver + #endif + #ifdef CONFIG_PLAT_ORION #include "ehci-orion.c" |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/include/asm In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/arch/powerpc/include/asm Modified Files: dma-mapping.h starlet-ios.h udbg.h Log Message: Merge v2.6.32. Index: dma-mapping.h =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/include/asm/dma-mapping.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** dma-mapping.h 9 Dec 2009 18:40:09 -0000 1.7 --- dma-mapping.h 9 Dec 2009 18:44:54 -0000 1.8 *************** *** 18,21 **** --- 18,22 ---- #include <asm/io.h> #include <asm/swiotlb.h> + #include <asm-generic/dma-coherent.h> #define DMA_ERROR_CODE (~(dma_addr_t)0x0) Index: udbg.h =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/include/asm/udbg.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** udbg.h 9 Dec 2009 18:18:06 -0000 1.8 --- udbg.h 9 Dec 2009 18:44:54 -0000 1.9 *************** *** 52,55 **** --- 52,56 ---- extern void __init udbg_init_40x_realmode(void); extern void __init udbg_init_cpm(void); + extern void __init udbg_init_usbgecko(void); #endif /* __KERNEL__ */ Index: starlet-ios.h =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/include/asm/starlet-ios.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** starlet-ios.h 25 Oct 2009 18:50:26 -0000 1.1 --- starlet-ios.h 9 Dec 2009 18:44:54 -0000 1.2 *************** *** 26,30 **** #include <asm/rheap.h> ! #define STARLET_TITLE_HBC 0x0001000148415858ULL #define STARLET_EINVAL -4 --- 26,31 ---- #include <asm/rheap.h> ! #define STARLET_TITLE_HBC_HAXX 0x0001000148415858ULL ! #define STARLET_TITLE_HBC_JODI 0x000100014A4F4449ULL #define STARLET_EINVAL -4 |
From: Albert H. <he...@us...> - 2009-12-09 18:45:04
|
Update of /cvsroot/gc-linux/linux/drivers/misc In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/misc Modified Files: Kconfig Makefile gcn-gqr.c Log Message: Merge v2.6.32. Index: gcn-gqr.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/misc/gcn-gqr.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** gcn-gqr.c 1 Feb 2009 18:29:35 -0000 1.4 --- gcn-gqr.c 9 Dec 2009 18:44:55 -0000 1.5 *************** *** 38,42 **** #define MTSPR_CASE(i) case (i): mtspr(SPR_GQR##i, *((u32 *)table->data)) ! static int proc_dogqr(ctl_table *table, int write, struct file *file, void __user *buffer, size_t *lenp, loff_t *ppos) { --- 38,42 ---- #define MTSPR_CASE(i) case (i): mtspr(SPR_GQR##i, *((u32 *)table->data)) ! static int proc_dogqr(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { *************** *** 58,62 **** } ! r = proc_dointvec(table, write, file, buffer, lenp, ppos); if ((r == 0) && write) { /* if they are writing, update the reg */ --- 58,62 ---- } ! r = proc_dointvec(table, write, buffer, lenp, ppos); if ((r == 0) && write) { /* if they are writing, update the reg */ *************** *** 87,91 **** } ! static ctl_table gqr_members[] = { DECLARE_GQR(0), DECLARE_GQR(1), --- 87,91 ---- } ! static struct ctl_table gqr_members[] = { DECLARE_GQR(0), DECLARE_GQR(1), *************** *** 99,103 **** }; ! static ctl_table gqr_table[] = { { .ctl_name = CTL_UNNUMBERED, --- 99,103 ---- }; ! static struct ctl_table gqr_table[] = { { .ctl_name = CTL_UNNUMBERED, Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/misc/Kconfig,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Kconfig 9 Dec 2009 18:40:09 -0000 1.23 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.24 *************** *** 56,59 **** --- 56,81 ---- interval timing. + config GAMECUBE_GQR + tristate "Nintendo GameCube/Wii Graphic Quantization Registers (GQR)" + depends on GAMECUBE_COMMON + help + This option enables device driver support for the Gekko/Broadway + processors' Graphic Quantization Registers. + These registers are used with the psql and psqst instructions. + The registers will appear in /proc/sys/gqr. + + config GAMECUBE_MI + tristate "Nintendo GameCube Memory Interface (MI)" + depends on GAMECUBE + help + If you say yes to this option, support will be included for the + Memory Interface (MI) of the Nintendo GameCube. + + The MI allows one to setup up to four protected memory regions, + catching invalid accesses to them. The MI catches out of bounds + memory accesses too. + + If in doubt, say N here. + config IBM_ASM tristate "Device driver for IBM RSA service processor" Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/misc/Makefile,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Makefile 9 Dec 2009 18:40:09 -0000 1.19 --- Makefile 9 Dec 2009 18:44:55 -0000 1.20 *************** *** 22,25 **** --- 22,27 ---- obj-$(CONFIG_EP93XX_PWM) += ep93xx_pwm.o obj-$(CONFIG_C2PORT) += c2port/ + obj-$(CONFIG_GAMECUBE_GQR) += gcn-gqr.o + obj-$(CONFIG_GAMECUBE_MI) += gcn-mi.o obj-y += eeprom/ obj-y += cb710/ |
From: Albert H. <he...@us...> - 2009-12-09 18:45:03
|
Update of /cvsroot/gc-linux/linux/drivers/serial In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/serial Modified Files: Kconfig Makefile Log Message: Merge v2.6.32. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/serial/Makefile,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Makefile 9 Dec 2009 18:40:10 -0000 1.14 --- Makefile 9 Dec 2009 18:44:55 -0000 1.15 *************** *** 82,83 **** --- 82,84 ---- obj-$(CONFIG_SERIAL_QE) += ucc_uart.o obj-$(CONFIG_SERIAL_TIMBERDALE) += timbuart.o + obj-$(CONFIG_SERIAL_USBGECKO) += usbgecko.o Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/serial/Kconfig,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** Kconfig 9 Dec 2009 18:40:10 -0000 1.15 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.16 *************** *** 1478,1480 **** --- 1478,1493 ---- you can make it the console by answering Y to this option. + config SERIAL_USBGECKO + bool "USBGecko adapter on the Nintendo GameCube/Wii" + depends on GAMECUBE_EXI + select SERIAL_CORE + help + This is a driver for the USB Gecko adapter for the Nintendo GameCube + and Wii gaming consoles. It provides a console and a tty interface. + + If you have an adapter like this, say Y here, otherwise say N. + + To compile this driver as a module, choose M here: the + module will be called usbgecko. + endmenu |
From: Albert H. <he...@us...> - 2009-12-09 18:45:03
|
Update of /cvsroot/gc-linux/linux/drivers/i2c/busses In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/i2c/busses Modified Files: Kconfig Makefile i2c-gpio.c Log Message: Merge v2.6.32. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Kconfig,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Kconfig 9 Dec 2009 18:40:09 -0000 1.11 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.12 *************** *** 354,365 **** will be called i2c-designware. ! config I2C_GPIO ! tristate "GPIO-based bitbanging I2C" depends on GENERIC_GPIO select I2C_ALGOBIT help This is a very simple bitbanging I2C driver utilizing the arch-neutral GPIO API to control the SCL and SDA lines. config I2C_HIGHLANDER tristate "Highlander FPGA SMBus interface" --- 354,377 ---- will be called i2c-designware. ! config I2C_GPIO_COMMON ! tristate depends on GENERIC_GPIO select I2C_ALGOBIT + default n + + config I2C_GPIO + tristate "GPIO-based bitbanging I2C" + select I2C_GPIO_COMMON help This is a very simple bitbanging I2C driver utilizing the arch-neutral GPIO API to control the SCL and SDA lines. + config I2C_GPIO_OF + tristate "GPIO-based bitbanging I2C driver with OF bindings" + select I2C_GPIO_COMMON + help + This option allows the declaration of GPIO-based I2C devices + using a device tree source. + config I2C_HIGHLANDER tristate "Highlander FPGA SMBus interface" Index: i2c-gpio.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/i2c-gpio.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** i2c-gpio.c 9 Dec 2009 18:18:07 -0000 1.7 --- i2c-gpio.c 9 Dec 2009 18:44:55 -0000 1.8 *************** *** 8,87 **** * published by the Free Software Foundation. */ - #include <linux/i2c.h> - #include <linux/i2c-algo-bit.h> - #include <linux/i2c-gpio.h> - #include <linux/init.h> - #include <linux/module.h> - #include <linux/platform_device.h> - - #include <asm/gpio.h> - - /* Toggle SDA by changing the direction of the pin */ - static void i2c_gpio_setsda_dir(void *data, int state) - { - struct i2c_gpio_platform_data *pdata = data; - - if (state) - gpio_direction_input(pdata->sda_pin); - else - gpio_direction_output(pdata->sda_pin, 0); - } - - /* - * Toggle SDA by changing the output value of the pin. This is only - * valid for pins configured as open drain (i.e. setting the value - * high effectively turns off the output driver.) - */ - static void i2c_gpio_setsda_val(void *data, int state) - { - struct i2c_gpio_platform_data *pdata = data; ! gpio_set_value(pdata->sda_pin, state); ! } ! ! /* Toggle SCL by changing the direction of the pin. */ ! static void i2c_gpio_setscl_dir(void *data, int state) ! { ! struct i2c_gpio_platform_data *pdata = data; ! if (state) ! gpio_direction_input(pdata->scl_pin); ! else ! gpio_direction_output(pdata->scl_pin, 0); ! } /* ! * Toggle SCL by changing the output value of the pin. This is used ! * for pins that are configured as open drain and for output-only ! * pins. The latter case will break the i2c protocol, but it will ! * often work in practice. */ - static void i2c_gpio_setscl_val(void *data, int state) - { - struct i2c_gpio_platform_data *pdata = data; - - gpio_set_value(pdata->scl_pin, state); - } - - static int i2c_gpio_getsda(void *data) - { - struct i2c_gpio_platform_data *pdata = data; - - return gpio_get_value(pdata->sda_pin); - } - - static int i2c_gpio_getscl(void *data) - { - struct i2c_gpio_platform_data *pdata = data; - - return gpio_get_value(pdata->scl_pin); - } static int __devinit i2c_gpio_probe(struct platform_device *pdev) { struct i2c_gpio_platform_data *pdata; - struct i2c_algo_bit_data *bit_data; struct i2c_adapter *adap; ! int ret; pdata = pdev->dev.platform_data; --- 8,27 ---- * published by the Free Software Foundation. */ ! #include "i2c-gpio-common.h" ! #include <linux/init.h> ! #include <linux/platform_device.h> /* ! * Platform bindings. ! * */ static int __devinit i2c_gpio_probe(struct platform_device *pdev) { struct i2c_gpio_platform_data *pdata; struct i2c_adapter *adap; ! int error; pdata = pdev->dev.platform_data; *************** *** 89,192 **** return -ENXIO; ! ret = -ENOMEM; ! adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL); if (!adap) goto err_alloc_adap; ! bit_data = kzalloc(sizeof(struct i2c_algo_bit_data), GFP_KERNEL); ! if (!bit_data) ! goto err_alloc_bit_data; ! ! ret = gpio_request(pdata->sda_pin, "sda"); ! if (ret) ! goto err_request_sda; ! ret = gpio_request(pdata->scl_pin, "scl"); ! if (ret) ! goto err_request_scl; ! ! if (pdata->sda_is_open_drain) { ! gpio_direction_output(pdata->sda_pin, 1); ! bit_data->setsda = i2c_gpio_setsda_val; ! } else { ! gpio_direction_input(pdata->sda_pin); ! bit_data->setsda = i2c_gpio_setsda_dir; ! } ! ! if (pdata->scl_is_open_drain || pdata->scl_is_output_only) { ! gpio_direction_output(pdata->scl_pin, 1); ! bit_data->setscl = i2c_gpio_setscl_val; ! } else { ! gpio_direction_input(pdata->scl_pin); ! bit_data->setscl = i2c_gpio_setscl_dir; ! } ! ! if (!pdata->scl_is_output_only) ! bit_data->getscl = i2c_gpio_getscl; ! bit_data->getsda = i2c_gpio_getsda; ! ! if (pdata->udelay) ! bit_data->udelay = pdata->udelay; ! else if (pdata->scl_is_output_only) ! bit_data->udelay = 50; /* 10 kHz */ ! else ! bit_data->udelay = 5; /* 100 kHz */ ! ! if (pdata->timeout) ! bit_data->timeout = pdata->timeout; ! else ! bit_data->timeout = HZ / 10; /* 100 ms */ ! ! bit_data->data = pdata; ! ! adap->owner = THIS_MODULE; ! snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); ! adap->algo_data = bit_data; ! adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; ! adap->dev.parent = &pdev->dev; ! ! /* ! * If "dev->id" is negative we consider it as zero. ! * The reason to do so is to avoid sysfs names that only make ! * sense when there are multiple adapters. ! */ ! adap->nr = (pdev->id != -1) ? pdev->id : 0; ! ret = i2c_bit_add_numbered_bus(adap); ! if (ret) ! goto err_add_bus; platform_set_drvdata(pdev, adap); - dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n", - pdata->sda_pin, pdata->scl_pin, - pdata->scl_is_output_only - ? ", no clock stretching" : ""); - return 0; ! err_add_bus: ! gpio_free(pdata->scl_pin); ! err_request_scl: ! gpio_free(pdata->sda_pin); ! err_request_sda: ! kfree(bit_data); ! err_alloc_bit_data: kfree(adap); err_alloc_adap: ! return ret; } static int __devexit i2c_gpio_remove(struct platform_device *pdev) { - struct i2c_gpio_platform_data *pdata; struct i2c_adapter *adap; adap = platform_get_drvdata(pdev); pdata = pdev->dev.platform_data; ! i2c_del_adapter(adap); ! gpio_free(pdata->scl_pin); ! gpio_free(pdata->sda_pin); ! kfree(adap->algo_data); kfree(adap); - return 0; } --- 29,61 ---- return -ENXIO; ! error = -ENOMEM; ! adap = kzalloc(sizeof(*adap), GFP_KERNEL); if (!adap) goto err_alloc_adap; ! error = i2c_gpio_adapter_probe(adap, pdata, &pdev->dev, pdev->id, ! THIS_MODULE); ! if (error) ! goto err_probe; platform_set_drvdata(pdev, adap); return 0; ! err_probe: kfree(adap); err_alloc_adap: ! return error; } static int __devexit i2c_gpio_remove(struct platform_device *pdev) { struct i2c_adapter *adap; + struct i2c_gpio_platform_data *pdata; adap = platform_get_drvdata(pdev); pdata = pdev->dev.platform_data; ! i2c_gpio_adapter_remove(adap, pdata); kfree(adap); return 0; } *************** *** 203,213 **** static int __init i2c_gpio_init(void) { ! int ret; ! ret = platform_driver_register(&i2c_gpio_driver); ! if (ret) ! printk(KERN_ERR "i2c-gpio: probe failed: %d\n", ret); ! return ret; } module_init(i2c_gpio_init); --- 72,82 ---- static int __init i2c_gpio_init(void) { ! int error; ! error = platform_driver_register(&i2c_gpio_driver); ! if (error) ! printk(KERN_ERR "i2c-gpio: registration failed (%d)\n", error); ! return error; } module_init(i2c_gpio_init); Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Makefile,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Makefile 9 Dec 2009 18:40:09 -0000 1.11 --- Makefile 9 Dec 2009 18:44:55 -0000 1.12 *************** *** 35,39 **** --- 35,41 ---- obj-$(CONFIG_I2C_DAVINCI) += i2c-davinci.o obj-$(CONFIG_I2C_DESIGNWARE) += i2c-designware.o + obj-$(CONFIG_I2C_GPIO_COMMON) += i2c-gpio-common.o obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o + obj-$(CONFIG_I2C_GPIO_OF) += i2c-gpio-of.o obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o obj-$(CONFIG_I2C_IBM_IIC) += i2c-ibm_iic.o |
From: Albert H. <he...@us...> - 2009-12-09 18:45:03
|
Update of /cvsroot/gc-linux/linux/drivers In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers Modified Files: Kconfig Makefile Log Message: Merge v2.6.32. Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/Makefile,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** Makefile 9 Dec 2009 18:40:09 -0000 1.36 --- Makefile 9 Dec 2009 18:44:54 -0000 1.37 *************** *** 105,108 **** --- 105,110 ---- obj-$(CONFIG_HID) += hid/ obj-$(CONFIG_PPC_PS3) += ps3/ + obj-$(CONFIG_GAMECUBE_EXI) += exi/ + obj-$(CONFIG_GAMECUBE_SI) += input/si/ obj-$(CONFIG_OF) += of/ obj-$(CONFIG_SSB) += ssb/ Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/Kconfig,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Kconfig 9 Dec 2009 18:18:06 -0000 1.11 --- Kconfig 9 Dec 2009 18:44:54 -0000 1.12 *************** *** 51,54 **** --- 51,56 ---- source "drivers/i2c/Kconfig" + source "drivers/exi/Kconfig" + source "drivers/spi/Kconfig" |
From: Albert H. <he...@us...> - 2009-12-09 18:45:03
|
Update of /cvsroot/gc-linux/linux/drivers/block In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/drivers/block Modified Files: Kconfig Makefile Log Message: Merge v2.6.32. Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Kconfig,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** Kconfig 9 Dec 2009 18:18:06 -0000 1.43 --- Kconfig 9 Dec 2009 18:44:55 -0000 1.44 *************** *** 64,67 **** --- 64,143 ---- module will be called z2ram. + config GAMECUBE_SD + tristate "Nintendo GameCube/Wii MMC/SD card" + depends on GAMECUBE_EXI + help + This enables support for using SD and MMC cards through + the Nintendo SD Card Adapter (DOL-019) or compatible hardware. + + You probably want to compile FAT support, and the required + codepages, or mount will complain. See Filesystems -> DOS/FAT/NT + filesystems and Filesystems -> Native Language Support + + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called gcn-sd. + + config GAMECUBE_ARAM + tristate "Nintendo GameCube Auxiliary RAM (ARAM)" + depends on GAMECUBE + help + This enables support for using the 16MB of ARAM found in the + Nintendo GameCube as a block device. + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called gcn-aram. + + config GAMECUBE_DI + tristate "Nintendo GameCube Disk Interface (DI)" + depends on GAMECUBE + help + This enables support for using the DVD drive unit found + in the Nintendo GameCube. + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called gcn-di. + + config WII_MEM2 + tristate "Nintendo Wii MEM2" + depends on WII + help + This enables support for using the MEM2 found in the + Nintendo Wii as a block device. + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called rvl-mem2. + + config WII_SD + tristate "Nintendo Wii front slot MMC/SD" + depends on STARLET_IOS + help + This enables support for MMC/SD cards using the front SD card + slot of the Nintendo Wii. + + You probably want to compile FAT support, and the required + codepages, or mount will complain. See Filesystems -> DOS/FAT/NT + filesystems and Filesystems -> Native Language Support + + Say Y if you want to include this driver in the kernel. + + To compile this driver as a module, choose M here: the + module will be called rvl-stsd. + + config WII_DI + tristate "Nintendo Wii Disk Interface (DI)" + depends on STARLET_MINI + help + This enables support for using the DVD drive unit found + in the Nintendo Wii. + 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-di. + config BLK_DEV_XD tristate "XT hard disk support" Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/block/Makefile,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** Makefile 9 Dec 2009 18:18:06 -0000 1.31 --- Makefile 9 Dec 2009 18:44:55 -0000 1.32 *************** *** 14,17 **** --- 14,23 ---- obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o + obj-$(CONFIG_GAMECUBE_SD) += gcn-sd.o + obj-$(CONFIG_GAMECUBE_ARAM) += gcn-aram.o + obj-$(CONFIG_GAMECUBE_DI) += gcn-di/ + obj-$(CONFIG_WII_MEM2) += rvl-mem2.o + obj-$(CONFIG_WII_SD) += rvl-stsd.o + obj-$(CONFIG_WII_DI) += rvl-di.o obj-$(CONFIG_BLK_DEV_RAM) += brd.o obj-$(CONFIG_BLK_DEV_LOOP) += loop.o |
From: Albert H. <he...@us...> - 2009-12-09 18:45:03
|
Update of /cvsroot/gc-linux/linux/include/asm-generic In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv22540/include/asm-generic Modified Files: gpio.h Log Message: Merge v2.6.32. Index: gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/asm-generic/gpio.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** gpio.h 9 Dec 2009 18:40:10 -0000 1.9 --- gpio.h 9 Dec 2009 18:44:55 -0000 1.10 *************** *** 120,123 **** --- 120,124 ---- extern int gpio_direction_input(unsigned gpio); extern int gpio_direction_output(unsigned gpio, int value); + extern int gpio_direction_is_output(unsigned gpio); extern int gpio_get_value_cansleep(unsigned gpio); |