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-03-02 18:34:05
|
Update of /cvsroot/gc-linux/linux/drivers/gpio In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv503/drivers/gpio Modified Files: gpiolib.c Log Message: [PATCH] gpiolib: add gpio_direction_is_output From: Albert Herranz <alb...@ya...> Date: Sun, 1 Mar 2009 19:10:07 +0100 Subject: [PATCH] gpiolib: add gpio_direction_is_output Add a function to determine if a given gpio has been already configured as an output. This is handy for drivers that require changing multiple times the direction of a gpio and want to easily avoid redundant direction changes. Signed-off-by: Albert Herranz <alb...@ya...> Index: gpiolib.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/gpio/gpiolib.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gpiolib.c 2 Mar 2009 18:33:09 -0000 1.1 --- gpiolib.c 2 Mar 2009 18:33:59 -0000 1.2 *************** *** 997,1000 **** --- 997,1018 ---- EXPORT_SYMBOL_GPL(gpio_direction_output); + /** + * gpio_direction_is_output - tell if a gpio is configured as an output + * @gpio: gpio in question + * + * Returns a negative errno if the given gpio is not valid. + * Returns a positive non-zero if the gpio is configured as an output. + * Returns zero otherwise. + */ + int gpio_direction_is_output(unsigned gpio) + { + struct gpio_desc *desc = &gpio_desc[gpio]; + + if (!gpio_is_valid(gpio)) + return -EINVAL; + + return test_bit(FLAG_IS_OUT, &desc->flags); + } + EXPORT_SYMBOL_GPL(gpio_direction_is_output); /* I/O calls are only valid after configuration completed; the relevant |
From: Albert H. <he...@us...> - 2009-03-02 18:34:05
|
Update of /cvsroot/gc-linux/linux/include/linux In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv503/include/linux Modified Files: gpio.h Log Message: [PATCH] gpiolib: add gpio_direction_is_output From: Albert Herranz <alb...@ya...> Date: Sun, 1 Mar 2009 19:10:07 +0100 Subject: [PATCH] gpiolib: add gpio_direction_is_output Add a function to determine if a given gpio has been already configured as an output. This is handy for drivers that require changing multiple times the direction of a gpio and want to easily avoid redundant direction changes. Signed-off-by: Albert Herranz <alb...@ya...> Index: gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/linux/gpio.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gpio.h 2 Mar 2009 18:33:09 -0000 1.1 --- gpio.h 2 Mar 2009 18:34:00 -0000 1.2 *************** *** 50,53 **** --- 50,58 ---- } + static inline int gpio_direction_is_output(unsigned gpio) + { + return -EINVAL; + } + static inline int gpio_get_value(unsigned gpio) { |
From: Albert H. <he...@us...> - 2009-03-02 18:34:04
|
Update of /cvsroot/gc-linux/linux/include/asm-generic In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv503/include/asm-generic Modified Files: gpio.h Log Message: [PATCH] gpiolib: add gpio_direction_is_output From: Albert Herranz <alb...@ya...> Date: Sun, 1 Mar 2009 19:10:07 +0100 Subject: [PATCH] gpiolib: add gpio_direction_is_output Add a function to determine if a given gpio has been already configured as an output. This is handy for drivers that require changing multiple times the direction of a gpio and want to easily avoid redundant direction changes. Signed-off-by: Albert Herranz <alb...@ya...> Index: gpio.h =================================================================== RCS file: /cvsroot/gc-linux/linux/include/asm-generic/gpio.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gpio.h 2 Mar 2009 18:33:09 -0000 1.1 --- gpio.h 2 Mar 2009 18:33:59 -0000 1.2 *************** *** 114,117 **** --- 114,118 ---- extern int gpio_direction_input(unsigned gpio); extern int gpio_direction_output(unsigned gpio, int value); + extern int gpio_direction_is_output(unsigned gpio); extern int gpio_get_value_cansleep(unsigned gpio); |
From: Albert H. <he...@us...> - 2009-03-02 18:33:14
|
Update of /cvsroot/gc-linux/linux/include/linux In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv401/include/linux Added Files: gpio.h Log Message: Add vanilla drivers/gpio/gpiolib.c, include/asm-generic/gpio.h and include/linux/gpio.h. --- NEW FILE: gpio.h --- #ifndef __LINUX_GPIO_H #define __LINUX_GPIO_H /* see Documentation/gpio.txt */ #ifdef CONFIG_GENERIC_GPIO #include <asm/gpio.h> #else #include <linux/kernel.h> #include <linux/types.h> #include <linux/errno.h> /* * Some platforms don't support the GPIO programming interface. * * In case some driver uses it anyway (it should normally have * depended on GENERIC_GPIO), these routines help the compiler * optimize out much GPIO-related code ... or trigger a runtime * warning when something is wrongly called. */ static inline int gpio_is_valid(int number) { return 0; } static inline int gpio_request(unsigned gpio, const char *label) { return -ENOSYS; } static inline void gpio_free(unsigned gpio) { might_sleep(); /* GPIO can never have been requested */ WARN_ON(1); } static inline int gpio_direction_input(unsigned gpio) { return -ENOSYS; } static inline int gpio_direction_output(unsigned gpio, int value) { return -ENOSYS; } static inline int gpio_get_value(unsigned gpio) { /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0; } static inline void gpio_set_value(unsigned gpio, int value) { /* GPIO can never have been requested or set as output */ WARN_ON(1); } static inline int gpio_cansleep(unsigned gpio) { /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0; } static inline int gpio_get_value_cansleep(unsigned gpio) { /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0; } static inline void gpio_set_value_cansleep(unsigned gpio, int value) { /* GPIO can never have been requested or set as output */ WARN_ON(1); } static inline int gpio_export(unsigned gpio, bool direction_may_change) { /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return -EINVAL; } static inline void gpio_unexport(unsigned gpio) { /* GPIO can never have been exported */ WARN_ON(1); } static inline int gpio_to_irq(unsigned gpio) { /* GPIO can never have been requested or set as input */ WARN_ON(1); return -EINVAL; } static inline int irq_to_gpio(unsigned irq) { /* irq can never have been returned from gpio_to_irq() */ WARN_ON(1); return -EINVAL; } #endif #endif /* __LINUX_GPIO_H */ |
From: Albert H. <he...@us...> - 2009-03-02 18:33:14
|
Update of /cvsroot/gc-linux/linux/include/asm-generic In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv401/include/asm-generic Added Files: gpio.h Log Message: Add vanilla drivers/gpio/gpiolib.c, include/asm-generic/gpio.h and include/linux/gpio.h. --- NEW FILE: gpio.h --- #ifndef _ASM_GENERIC_GPIO_H #define _ASM_GENERIC_GPIO_H #include <linux/types.h> #include <linux/errno.h> #ifdef CONFIG_GPIOLIB #include <linux/compiler.h> /* Platforms may implement their GPIO interface with library code, * at a small performance cost for non-inlined operations and some * extra memory (for code and for per-GPIO table entries). * * While the GPIO programming interface defines valid GPIO numbers * to be in the range 0..MAX_INT, this library restricts them to the * smaller range 0..ARCH_NR_GPIOS-1. */ #ifndef ARCH_NR_GPIOS #define ARCH_NR_GPIOS 256 #endif static inline int gpio_is_valid(int number) { /* only some non-negative numbers are valid */ return ((unsigned)number) < ARCH_NR_GPIOS; } struct seq_file; struct module; /** * struct gpio_chip - abstract a GPIO controller * @label: for diagnostics * @dev: optional device providing the GPIOs * @owner: helps prevent removal of modules exporting active GPIOs * @request: optional hook for chip-specific activation, such as * enabling module power and clock; may sleep * @free: optional hook for chip-specific deactivation, such as * disabling module power and clock; may sleep * @direction_input: configures signal "offset" as input, or returns error * @get: returns value for signal "offset"; for output signals this * returns either the value actually sensed, or zero * @direction_output: configures signal "offset" as output, or returns error * @set: assigns output value for signal "offset" * @to_irq: optional hook supporting non-static gpio_to_irq() mappings; * implementation may not sleep * @dbg_show: optional routine to show contents in debugfs; default code * will be used when this is omitted, but custom code can show extra * state (such as pullup/pulldown configuration). * @base: identifies the first GPIO number handled by this chip; or, if * negative during registration, requests dynamic ID allocation. * @ngpio: the number of GPIOs handled by this controller; the last GPIO * handled is (base + ngpio - 1). * @can_sleep: flag must be set iff get()/set() methods sleep, as they * must while accessing GPIO expander chips over I2C or SPI * * A gpio_chip can help platforms abstract various sources of GPIOs so * they can all be accessed through a common programing interface. * Example sources would be SOC controllers, FPGAs, multifunction * chips, dedicated GPIO expanders, and so on. * * Each chip controls a number of signals, identified in method calls * by "offset" values in the range 0..(@ngpio - 1). When those signals * are referenced through calls like gpio_get_value(gpio), the offset * is calculated by subtracting @base from the gpio number. */ struct gpio_chip { const char *label; struct device *dev; struct module *owner; int (*request)(struct gpio_chip *chip, unsigned offset); void (*free)(struct gpio_chip *chip, unsigned offset); int (*direction_input)(struct gpio_chip *chip, unsigned offset); int (*get)(struct gpio_chip *chip, unsigned offset); int (*direction_output)(struct gpio_chip *chip, unsigned offset, int value); void (*set)(struct gpio_chip *chip, unsigned offset, int value); int (*to_irq)(struct gpio_chip *chip, unsigned offset); void (*dbg_show)(struct seq_file *s, struct gpio_chip *chip); int base; u16 ngpio; unsigned can_sleep:1; unsigned exported:1; }; extern const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset); extern int __must_check gpiochip_reserve(int start, int ngpio); /* add/remove chips */ extern int gpiochip_add(struct gpio_chip *chip); extern int __must_check gpiochip_remove(struct gpio_chip *chip); /* Always use the library code for GPIO management calls, * or when sleeping may be involved. */ extern int gpio_request(unsigned gpio, const char *label); extern void gpio_free(unsigned gpio); extern int gpio_direction_input(unsigned gpio); extern int gpio_direction_output(unsigned gpio, int value); extern int gpio_get_value_cansleep(unsigned gpio); extern void gpio_set_value_cansleep(unsigned gpio, int value); /* A platform's <asm/gpio.h> code may want to inline the I/O calls when * the GPIO is constant and refers to some always-present controller, * giving direct access to chip registers and tight bitbanging loops. */ extern int __gpio_get_value(unsigned gpio); extern void __gpio_set_value(unsigned gpio, int value); extern int __gpio_cansleep(unsigned gpio); extern int __gpio_to_irq(unsigned gpio); #ifdef CONFIG_GPIO_SYSFS /* * A sysfs interface can be exported by individual drivers if they want, * but more typically is configured entirely from userspace. */ extern int gpio_export(unsigned gpio, bool direction_may_change); extern void gpio_unexport(unsigned gpio); #endif /* CONFIG_GPIO_SYSFS */ #else /* !CONFIG_HAVE_GPIO_LIB */ static inline int gpio_is_valid(int number) { /* only non-negative numbers are valid */ return number >= 0; } /* platforms that don't directly support access to GPIOs through I2C, SPI, * or other blocking infrastructure can use these wrappers. */ static inline int gpio_cansleep(unsigned gpio) { return 0; } static inline int gpio_get_value_cansleep(unsigned gpio) { might_sleep(); return gpio_get_value(gpio); } static inline void gpio_set_value_cansleep(unsigned gpio, int value) { might_sleep(); gpio_set_value(gpio, value); } #endif /* !CONFIG_HAVE_GPIO_LIB */ #ifndef CONFIG_GPIO_SYSFS /* sysfs support is only available with gpiolib, where it's optional */ static inline int gpio_export(unsigned gpio, bool direction_may_change) { return -ENOSYS; } static inline void gpio_unexport(unsigned gpio) { } #endif /* CONFIG_GPIO_SYSFS */ #endif /* _ASM_GENERIC_GPIO_H */ |
From: Albert H. <he...@us...> - 2009-03-02 18:33:14
|
Update of /cvsroot/gc-linux/linux/drivers/gpio In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv401/drivers/gpio Added Files: gpiolib.c Log Message: Add vanilla drivers/gpio/gpiolib.c, include/asm-generic/gpio.h and include/linux/gpio.h. --- NEW FILE: gpiolib.c --- #include <linux/kernel.h> #include <linux/module.h> #include <linux/irq.h> #include <linux/spinlock.h> #include <linux/device.h> #include <linux/err.h> #include <linux/debugfs.h> #include <linux/seq_file.h> #include <linux/gpio.h> /* Optional implementation infrastructure for GPIO interfaces. * * Platforms may want to use this if they tend to use very many GPIOs * that aren't part of a System-On-Chip core; or across I2C/SPI/etc. * * When kernel footprint or instruction count is an issue, simpler * implementations may be preferred. The GPIO programming interface * allows for inlining speed-critical get/set operations for common [...1215 lines suppressed...] return single_open(file, gpiolib_show, NULL); } static struct file_operations gpiolib_operations = { .open = gpiolib_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; static int __init gpiolib_debugfs_init(void) { /* /sys/kernel/debug/gpio */ (void) debugfs_create_file("gpio", S_IFREG | S_IRUGO, NULL, NULL, &gpiolib_operations); return 0; } subsys_initcall(gpiolib_debugfs_init); #endif /* DEBUG_FS */ |
From: Albert H. <he...@us...> - 2009-03-02 18:30:03
|
Update of /cvsroot/gc-linux/linux/drivers/gpio In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32518/drivers/gpio Log Message: Directory /cvsroot/gc-linux/linux/drivers/gpio added to the repository |
From: Albert H. <he...@us...> - 2009-03-02 18:29:52
|
Update of /cvsroot/gc-linux/linux/include/asm-generic In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32488/include/asm-generic Log Message: Directory /cvsroot/gc-linux/linux/include/asm-generic added to the repository |
From: Albert H. <he...@us...> - 2009-03-02 18:25:13
|
Update of /cvsroot/gc-linux/linux/Documentation/powerpc/dts-bindings/gpio In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32158/Documentation/powerpc/dts-bindings/gpio Added Files: i2c.txt Log Message: [PATCH] i2c-gpio-of: GPIO-based I2C bitbang driver with OF bindings From: Albert Herranz <alb...@ya...> Date: Fri, 27 Feb 2009 21:30:15 +0100 Subject: [PATCH] i2c-gpio-of: GPIO-based I2C bitbang driver with OF bindings Add a GPIO based I2C bitbang driver that supports device tree bindings. Signed-off-by: Albert Herranz <alb...@ya...> --- NEW FILE: i2c.txt --- GPIO-based I2C Required properties: - compatible : should be "virtual,i2c-gpio". - gpios : should specify GPIOs used for SDA and SCL lines, in that order. - sda-is-open-drain : should be non-zero if SDA gpio is open-drain. - scl-is-open-drain : should be non-zero if SCL gpio is open-drain. - scl-is-output-only : should be non-zero if SCL is an output gpio only. - udelay : signal toggle delay. SCL frequency is (500 / udelay) kHz - timeout : clock stretching timeout in milliseconds. Example: gpio0: starlet-gpio@0d8000c0 { compatible = "nintendo,starlet-gpio"; reg = <0d8000c0 4>; gpio-controller; #gpio-cells = <2>; }; i2c-video { #address-cells = <1>; #size-cells = <0>; compatible = "virtual,i2c-gpio"; gpios = <&gpio0 10 0 /* SDA line */ &gpio0 11 0 /* SCL line */ >; sda-is-open-drain = <1>; scl-is-open-drain = <1>; scl-is-output-only = <1>; udelay = <2>; audio-video-encoder { compatible = "nintendo,wii-ave-rvl"; reg = <70>; }; }; |
From: Albert H. <he...@us...> - 2009-03-02 18:25:13
|
Update of /cvsroot/gc-linux/linux/drivers/i2c/busses In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32158/drivers/i2c/busses Modified Files: Kconfig Makefile Added Files: i2c-gpio-of.c Log Message: [PATCH] i2c-gpio-of: GPIO-based I2C bitbang driver with OF bindings From: Albert Herranz <alb...@ya...> Date: Fri, 27 Feb 2009 21:30:15 +0100 Subject: [PATCH] i2c-gpio-of: GPIO-based I2C bitbang driver with OF bindings Add a GPIO based I2C bitbang driver that supports device tree bindings. Signed-off-by: Albert Herranz <alb...@ya...> Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Makefile 2 Mar 2009 18:20:40 -0000 1.2 --- Makefile 2 Mar 2009 18:25:07 -0000 1.3 *************** *** 33,36 **** --- 33,37 ---- 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 Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Kconfig,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Kconfig 2 Mar 2009 18:20:40 -0000 1.2 --- Kconfig 2 Mar 2009 18:25:07 -0000 1.3 *************** *** 339,342 **** --- 339,349 ---- 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" --- NEW FILE: i2c-gpio-of.c --- /* * drivers/i2c/busses/i2c-gpio-of.c * * GPIO-based bitbanging I2C driver with OF bindings * 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 version 2 as * published by the Free Software Foundation. */ #include "i2c-gpio-common.h" #include <linux/of_platform.h> #include <linux/of_i2c.h> #include <linux/of_gpio.h> #include <linux/i2c-algo-bit.h> #include <linux/init.h> #include <linux/module.h> #define DRV_MODULE_NAME "i2c-gpio-of" #define DRV_DESCRIPTION "GPIO-based bitbanging I2C driver with OF bindings" #define DRV_AUTHOR "Albert Herranz" #define drv_printk(level, format, arg...) \ printk(level DRV_MODULE_NAME ": " format , ## arg) /* * OF platform bindings. * */ static int __devinit i2c_gpio_of_probe(struct of_device *odev, const struct of_device_id *match) { struct i2c_gpio_platform_data *pdata; struct i2c_adapter *adap; const unsigned long *prop; int sda_pin, scl_pin; int error = -ENOMEM; pdata = kzalloc(sizeof(*pdata), GFP_KERNEL); if (!pdata) goto err_alloc_pdata; adap = kzalloc(sizeof(*adap), GFP_KERNEL); if (!adap) goto err_alloc_adap; sda_pin = of_get_gpio(odev->node, 0); scl_pin = of_get_gpio(odev->node, 1); if (sda_pin < 0 || scl_pin < 0) { error = -EINVAL; pr_err("%s: invalid GPIO pins, sda=%d/scl=%d\n", odev->node->full_name, sda_pin, scl_pin); goto err_gpio_pin; } pdata->sda_pin = sda_pin; pdata->scl_pin = scl_pin; prop = of_get_property(odev->node, "sda-is-open-drain", NULL); if (prop) pdata->sda_is_open_drain = *prop; prop = of_get_property(odev->node, "scl-is-open-drain", NULL); if (prop) pdata->scl_is_open_drain = *prop; prop = of_get_property(odev->node, "scl-is-output-only", NULL); if (prop) pdata->scl_is_output_only = *prop; prop = of_get_property(odev->node, "udelay", NULL); if (prop) pdata->udelay = *prop; prop = of_get_property(odev->node, "timeout", NULL); if (prop) pdata->timeout = msecs_to_jiffies(*prop); error = i2c_gpio_adapter_probe(adap, pdata, &odev->dev, odev->node->node, THIS_MODULE); if (error) goto err_probe; dev_set_drvdata(&odev->dev, adap); of_register_i2c_devices(adap, odev->node); return 0; err_probe: err_gpio_pin: kfree(adap); err_alloc_adap: kfree(pdata); err_alloc_pdata: return error; }; static int __devexit i2c_gpio_of_remove(struct of_device *odev) { struct i2c_gpio_platform_data *pdata; struct i2c_adapter *adap; struct i2c_algo_bit_data *bit_data; adap = dev_get_drvdata(&odev->dev); bit_data = adap->algo_data; pdata = bit_data->data; i2c_gpio_adapter_remove(adap, pdata); kfree(pdata); kfree(adap); return 0; }; static const struct of_device_id i2c_gpio_of_match[] = { {.compatible = "virtual,i2c-gpio",}, {}, }; MODULE_DEVICE_TABLE(of, i2c_gpio_of_match); static struct of_platform_driver i2c_gpio_of_driver = { .match_table = i2c_gpio_of_match, .probe = i2c_gpio_of_probe, .remove = __devexit_p(i2c_gpio_of_remove), .driver = { .owner = THIS_MODULE, .name = DRV_MODULE_NAME, }, }; static int __init i2c_gpio_of_init(void) { int error; error = of_register_platform_driver(&i2c_gpio_of_driver); if (error) drv_printk(KERN_ERR, "OF registration failed (%d)\n", error); return error; } static void __exit i2c_gpio_of_exit(void) { of_unregister_platform_driver(&i2c_gpio_of_driver); } module_init(i2c_gpio_of_init); module_exit(i2c_gpio_of_exit); MODULE_DESCRIPTION(DRV_DESCRIPTION); MODULE_AUTHOR(DRV_AUTHOR); MODULE_LICENSE("GPL"); |
From: Albert H. <he...@us...> - 2009-03-02 18:22:20
|
Update of /cvsroot/gc-linux/linux/Documentation/powerpc In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31960/Documentation/powerpc Log Message: Directory /cvsroot/gc-linux/linux/Documentation/powerpc added to the repository |
From: Albert H. <he...@us...> - 2009-03-02 18:22:20
|
Update of /cvsroot/gc-linux/linux/Documentation/powerpc/dts-bindings/gpio In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31960/Documentation/powerpc/dts-bindings/gpio Log Message: Directory /cvsroot/gc-linux/linux/Documentation/powerpc/dts-bindings/gpio added to the repository |
From: Albert H. <he...@us...> - 2009-03-02 18:22:20
|
Update of /cvsroot/gc-linux/linux/Documentation/powerpc/dts-bindings In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31960/Documentation/powerpc/dts-bindings Log Message: Directory /cvsroot/gc-linux/linux/Documentation/powerpc/dts-bindings added to the repository |
From: Albert H. <he...@us...> - 2009-03-02 18:20:45
|
Update of /cvsroot/gc-linux/linux/drivers/i2c/busses In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31728/drivers/i2c/busses Modified Files: Kconfig Makefile i2c-gpio.c Added Files: i2c-gpio-common.c i2c-gpio-common.h Log Message: [PATCH] i2c-gpio: split into i2c-gpio-common and i2c-gpio From: Albert Herranz <alb...@ya...> Date: Fri, 27 Feb 2009 20:17:53 +0100 Subject: [PATCH] i2c-gpio: split into i2c-gpio-common and i2c-gpio Extract the core code into a new helper module i2c-gpio-common. This will allow sharing code between the current driver (i2c-gpio) which uses platform bus bindings and a future driver (i2c-gpio-of) which will make use of of_platform bus bindings. Signed-off-by: Albert Herranz <alb...@ya...> Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Kconfig,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Kconfig 2 Mar 2009 18:18:55 -0000 1.1 --- Kconfig 2 Mar 2009 18:20:40 -0000 1.2 *************** *** 326,333 **** For details please see http://www.ti.com/davinci ! 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 --- 326,338 ---- For details please see http://www.ti.com/davinci ! 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 Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Makefile 2 Mar 2009 18:18:55 -0000 1.1 --- Makefile 2 Mar 2009 18:20:40 -0000 1.2 *************** *** 31,34 **** --- 31,35 ---- obj-$(CONFIG_I2C_CPM) += i2c-cpm.o obj-$(CONFIG_I2C_DAVINCI) += i2c-davinci.o + obj-$(CONFIG_I2C_GPIO_COMMON) += i2c-gpio-common.o obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o --- NEW FILE: i2c-gpio-common.h --- /* * Bitbanging I2C bus driver using the GPIO API * * Copyright (C) 2007 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __I2C_GPIO_COMMON_H #define __I2C_GPIO_COMMON_H #include <linux/i2c.h> #include <linux/i2c-gpio.h> #include <linux/module.h> #include <linux/device.h> int i2c_gpio_adapter_probe(struct i2c_adapter *adap, struct i2c_gpio_platform_data *pdata, struct device *parent, int id, struct module *owner); int i2c_gpio_adapter_remove(struct i2c_adapter *adap, struct i2c_gpio_platform_data *pdata); #endif /* __I2C_GPIO_COMMON_H */ --- NEW FILE: i2c-gpio-common.c --- /* * Core logic for the bitbanging I2C bus driver using the GPIO API * * Copyright (C) 2007 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include "i2c-gpio-common.h" #include <linux/i2c-algo-bit.h> #include <linux/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); } int i2c_gpio_adapter_probe(struct i2c_adapter *adap, struct i2c_gpio_platform_data *pdata, struct device *parent, int id, struct module *owner) { struct i2c_algo_bit_data *bit_data; int error; error = -ENOMEM; bit_data = kzalloc(sizeof(*bit_data), GFP_KERNEL); if (!bit_data) goto err_alloc_bit_data; error = gpio_request(pdata->sda_pin, "sda"); if (error) goto err_request_sda; error = gpio_request(pdata->scl_pin, "scl"); if (error) 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 = owner; snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", id); adap->algo_data = bit_data; adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; adap->dev.parent = parent; /* * If "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 = (id != -1) ? id : 0; error = i2c_bit_add_numbered_bus(adap); if (error) goto err_add_bus; dev_info(parent, "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: return error; } EXPORT_SYMBOL(i2c_gpio_adapter_probe); int i2c_gpio_adapter_remove(struct i2c_adapter *adap, struct i2c_gpio_platform_data *pdata) { i2c_del_adapter(adap); gpio_free(pdata->scl_pin); gpio_free(pdata->sda_pin); kfree(adap->algo_data); kfree(adap); return 0; } EXPORT_SYMBOL(i2c_gpio_adapter_remove); MODULE_AUTHOR("Haavard Skinnemoen <hsk...@at...>"); MODULE_DESCRIPTION("Platform-independent bitbanging I2C driver common logic"); MODULE_LICENSE("GPL"); Index: i2c-gpio.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/i2c/busses/i2c-gpio.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** i2c-gpio.c 2 Mar 2009 18:18:55 -0000 1.1 --- i2c-gpio.c 2 Mar 2009 18:20:40 -0000 1.2 *************** *** 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); |
From: Albert H. <he...@us...> - 2009-03-02 18:19:02
|
Update of /cvsroot/gc-linux/linux/drivers/i2c/busses In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31575/drivers/i2c/busses Added Files: Kconfig Makefile i2c-gpio.c Log Message: Add vanilla drivers/i2c/busses/Kconfig, drivers/i2c/busses/Makefile and drivers/i2c/busses/i2c-gpio.c --- NEW FILE: Makefile --- # # Makefile for the i2c bus drivers. # # PC SMBus host controller drivers obj-$(CONFIG_I2C_ALI1535) += i2c-ali1535.o obj-$(CONFIG_I2C_ALI1563) += i2c-ali1563.o obj-$(CONFIG_I2C_ALI15X3) += i2c-ali15x3.o obj-$(CONFIG_I2C_AMD756) += i2c-amd756.o obj-$(CONFIG_I2C_AMD756_S4882) += i2c-amd756-s4882.o obj-$(CONFIG_I2C_AMD8111) += i2c-amd8111.o obj-$(CONFIG_I2C_I801) += i2c-i801.o obj-$(CONFIG_I2C_ISCH) += i2c-isch.o obj-$(CONFIG_I2C_NFORCE2) += i2c-nforce2.o obj-$(CONFIG_I2C_NFORCE2_S4985) += i2c-nforce2-s4985.o obj-$(CONFIG_I2C_PIIX4) += i2c-piix4.o obj-$(CONFIG_I2C_SIS5595) += i2c-sis5595.o obj-$(CONFIG_I2C_SIS630) += i2c-sis630.o obj-$(CONFIG_I2C_SIS96X) += i2c-sis96x.o obj-$(CONFIG_I2C_VIA) += i2c-via.o obj-$(CONFIG_I2C_VIAPRO) += i2c-viapro.o # Mac SMBus host controller drivers obj-$(CONFIG_I2C_HYDRA) += i2c-hydra.o obj-$(CONFIG_I2C_POWERMAC) += i2c-powermac.o # Embebbed system I2C/SMBus host controller drivers obj-$(CONFIG_I2C_AT91) += i2c-at91.o obj-$(CONFIG_I2C_AU1550) += i2c-au1550.o obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o obj-$(CONFIG_I2C_CPM) += i2c-cpm.o obj-$(CONFIG_I2C_DAVINCI) += i2c-davinci.o obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o obj-$(CONFIG_I2C_IBM_IIC) += i2c-ibm_iic.o obj-$(CONFIG_I2C_IOP3XX) += i2c-iop3xx.o obj-$(CONFIG_I2C_IXP2000) += i2c-ixp2000.o obj-$(CONFIG_I2C_MPC) += i2c-mpc.o obj-$(CONFIG_I2C_MV64XXX) += i2c-mv64xxx.o obj-$(CONFIG_I2C_OCORES) += i2c-ocores.o obj-$(CONFIG_I2C_OMAP) += i2c-omap.o obj-$(CONFIG_I2C_PASEMI) += i2c-pasemi.o obj-$(CONFIG_I2C_PNX) += i2c-pnx.o obj-$(CONFIG_I2C_PXA) += i2c-pxa.o obj-$(CONFIG_I2C_S3C2410) += i2c-s3c2410.o obj-$(CONFIG_I2C_SH7760) += i2c-sh7760.o obj-$(CONFIG_I2C_SH_MOBILE) += i2c-sh_mobile.o obj-$(CONFIG_I2C_SIMTEC) += i2c-simtec.o obj-$(CONFIG_I2C_VERSATILE) += i2c-versatile.o # External I2C/SMBus adapter drivers obj-$(CONFIG_I2C_PARPORT) += i2c-parport.o obj-$(CONFIG_I2C_PARPORT_LIGHT) += i2c-parport-light.o obj-$(CONFIG_I2C_TAOS_EVM) += i2c-taos-evm.o obj-$(CONFIG_I2C_TINY_USB) += i2c-tiny-usb.o # Graphics adapter I2C/DDC channel drivers obj-$(CONFIG_I2C_VOODOO3) += i2c-voodoo3.o # Other I2C/SMBus bus drivers obj-$(CONFIG_I2C_ACORN) += i2c-acorn.o obj-$(CONFIG_I2C_ELEKTOR) += i2c-elektor.o obj-$(CONFIG_I2C_PCA_ISA) += i2c-pca-isa.o obj-$(CONFIG_I2C_PCA_PLATFORM) += i2c-pca-platform.o obj-$(CONFIG_I2C_PMCMSP) += i2c-pmcmsp.o obj-$(CONFIG_I2C_SIBYTE) += i2c-sibyte.o obj-$(CONFIG_I2C_STUB) += i2c-stub.o obj-$(CONFIG_SCx200_ACB) += scx200_acb.o obj-$(CONFIG_SCx200_I2C) += scx200_i2c.o ifeq ($(CONFIG_I2C_DEBUG_BUS),y) EXTRA_CFLAGS += -DDEBUG endif --- NEW FILE: Kconfig --- # # Sensor device configuration # menu "I2C Hardware Bus support" comment "PC SMBus host controller drivers" depends on PCI config I2C_ALI1535 tristate "ALI 1535" depends on PCI help If you say yes to this option, support will be included for the SMB Host controller on Acer Labs Inc. (ALI) M1535 South Bridges. The SMB controller is part of the 7101 device, which is an ACPI-compliant Power Management Unit (PMU). This driver can also be built as a module. If so, the module will be called i2c-ali1535. config I2C_ALI1563 tristate "ALI 1563" depends on PCI && EXPERIMENTAL help If you say yes to this option, support will be included for the SMB Host controller on Acer Labs Inc. (ALI) M1563 South Bridges. The SMB controller is part of the 7101 device, which is an ACPI-compliant Power Management Unit (PMU). This driver can also be built as a module. If so, the module will be called i2c-ali1563. config I2C_ALI15X3 tristate "ALI 15x3" depends on PCI help If you say yes to this option, support will be included for the Acer Labs Inc. (ALI) M1514 and M1543 motherboard I2C interfaces. This driver can also be built as a module. If so, the module will be called i2c-ali15x3. config I2C_AMD756 tristate "AMD 756/766/768/8111 and nVidia nForce" depends on PCI help If you say yes to this option, support will be included for the AMD 756/766/768 mainboard I2C interfaces. The driver also includes support for the first (SMBus 1.0) I2C interface of the AMD 8111 and the nVidia nForce I2C interface. This driver can also be built as a module. If so, the module will be called i2c-amd756. config I2C_AMD756_S4882 tristate "SMBus multiplexing on the Tyan S4882" depends on I2C_AMD756 && X86 && EXPERIMENTAL help Enabling this option will add specific SMBus support for the Tyan S4882 motherboard. On this 4-CPU board, the SMBus is multiplexed over 8 different channels, where the various memory module EEPROMs and temperature sensors live. Saying yes here will give you access to these in addition to the trunk. This driver can also be built as a module. If so, the module will be called i2c-amd756-s4882. config I2C_AMD8111 tristate "AMD 8111" depends on PCI help If you say yes to this option, support will be included for the second (SMBus 2.0) AMD 8111 mainboard I2C interface. This driver can also be built as a module. If so, the module will be called i2c-amd8111. config I2C_I801 tristate "Intel 82801 (ICH)" depends on PCI help If you say yes to this option, support will be included for the Intel 801 family of mainboard I2C interfaces. Specifically, the following versions of the chipset are supported: 82801AA 82801AB 82801BA 82801CA/CAM 82801DB 82801EB/ER (ICH5/ICH5R) 6300ESB ICH6 ICH7 ESB2 ICH8 ICH9 Tolapai ICH10 PCH This driver can also be built as a module. If so, the module will be called i2c-i801. config I2C_ISCH tristate "Intel SCH SMBus 1.0" depends on PCI help Say Y here if you want to use SMBus controller on the Intel SCH based systems. This driver can also be built as a module. If so, the module will be called i2c-isch. config I2C_PIIX4 tristate "Intel PIIX4 and compatible (ATI/Serverworks/Broadcom/SMSC)" depends on PCI help If you say yes to this option, support will be included for the Intel PIIX4 family of mainboard I2C interfaces. Specifically, the following versions of the chipset are supported (note that Serverworks is part of Broadcom): Intel PIIX4 Intel 440MX ATI IXP200 ATI IXP300 ATI IXP400 ATI SB600 ATI SB700 ATI SB800 Serverworks OSB4 Serverworks CSB5 Serverworks CSB6 Serverworks HT-1000 SMSC Victory66 This driver can also be built as a module. If so, the module will be called i2c-piix4. config I2C_NFORCE2 tristate "Nvidia nForce2, nForce3 and nForce4" depends on PCI help If you say yes to this option, support will be included for the Nvidia nForce2, nForce3 and nForce4 families of mainboard I2C interfaces. This driver can also be built as a module. If so, the module will be called i2c-nforce2. config I2C_NFORCE2_S4985 tristate "SMBus multiplexing on the Tyan S4985" depends on I2C_NFORCE2 && X86 && EXPERIMENTAL help Enabling this option will add specific SMBus support for the Tyan S4985 motherboard. On this 4-CPU board, the SMBus is multiplexed over 4 different channels, where the various memory module EEPROMs live. Saying yes here will give you access to these in addition to the trunk. This driver can also be built as a module. If so, the module will be called i2c-nforce2-s4985. config I2C_SIS5595 tristate "SiS 5595" depends on PCI help If you say yes to this option, support will be included for the SiS5595 SMBus (a subset of I2C) interface. This driver can also be built as a module. If so, the module will be called i2c-sis5595. config I2C_SIS630 tristate "SiS 630/730" depends on PCI help If you say yes to this option, support will be included for the SiS630 and SiS730 SMBus (a subset of I2C) interface. This driver can also be built as a module. If so, the module will be called i2c-sis630. config I2C_SIS96X tristate "SiS 96x" depends on PCI help If you say yes to this option, support will be included for the SiS 96x SMBus (a subset of I2C) interfaces. Specifically, the following chipsets are supported: 645/961 645DX/961 645DX/962 648/961 650/961 735 745 This driver can also be built as a module. If so, the module will be called i2c-sis96x. config I2C_VIA tristate "VIA VT82C586B" depends on PCI && EXPERIMENTAL select I2C_ALGOBIT help If you say yes to this option, support will be included for the VIA 82C586B I2C interface This driver can also be built as a module. If so, the module will be called i2c-via. config I2C_VIAPRO tristate "VIA VT82C596/82C686/82xx and CX700/VX800/VX820" depends on PCI help If you say yes to this option, support will be included for the VIA VT82C596 and later SMBus interface. Specifically, the following chipsets are supported: VT82C596A/B VT82C686A/B VT8231 VT8233/A VT8235 VT8237R/A/S VT8251 CX700 VX800 VX820 This driver can also be built as a module. If so, the module will be called i2c-viapro. comment "Mac SMBus host controller drivers" depends on PPC_CHRP || PPC_PMAC config I2C_HYDRA tristate "CHRP Apple Hydra Mac I/O I2C interface" depends on PCI && PPC_CHRP && EXPERIMENTAL select I2C_ALGOBIT help This supports the use of the I2C interface in the Apple Hydra Mac I/O chip on some CHRP machines (e.g. the LongTrail). Say Y if you have such a machine. This support is also available as a module. If so, the module will be called i2c-hydra. config I2C_POWERMAC tristate "Powermac I2C interface" depends on PPC_PMAC default y help This exposes the various PowerMac i2c interfaces to the linux i2c layer and to userland. It is used by various drivers on the PowerMac platform, and should generally be enabled. This support is also available as a module. If so, the module will be called i2c-powermac. comment "I2C system bus drivers (mostly embedded / system-on-chip)" config I2C_AT91 tristate "Atmel AT91 I2C Two-Wire interface (TWI)" depends on ARCH_AT91 && EXPERIMENTAL && BROKEN help This supports the use of the I2C interface on Atmel AT91 processors. This driver is BROKEN because the controller which it uses will easily trigger RX overrun and TX underrun errors. Using low I2C clock rates may partially work around those issues on some systems. Another serious problem is that there is no documented way to issue repeated START conditions, as needed to support combined I2C messages. Use the i2c-gpio driver unless your system can cope with those limitations. config I2C_AU1550 tristate "Au1550/Au1200 SMBus interface" depends on SOC_AU1550 || SOC_AU1200 help If you say yes to this option, support will be included for the Au1550 and Au1200 SMBus interface. This driver can also be built as a module. If so, the module will be called i2c-au1550. config I2C_BLACKFIN_TWI tristate "Blackfin TWI I2C support" depends on BLACKFIN depends on !BF561 && !BF531 && !BF532 && !BF533 help This is the I2C bus driver for Blackfin on-chip TWI interface. This driver can also be built as a module. If so, the module will be called i2c-bfin-twi. config I2C_BLACKFIN_TWI_CLK_KHZ int "Blackfin TWI I2C clock (kHz)" depends on I2C_BLACKFIN_TWI range 10 400 default 50 help The unit of the TWI clock is kHz. config I2C_CPM tristate "Freescale CPM1 or CPM2 (MPC8xx/826x)" depends on (CPM1 || CPM2) && OF_I2C help This supports the use of the I2C interface on Freescale processors with CPM1 or CPM2. This driver can also be built as a module. If so, the module will be called i2c-cpm. config I2C_DAVINCI tristate "DaVinci I2C driver" depends on ARCH_DAVINCI help Support for TI DaVinci I2C controller driver. This driver can also be built as a module. If so, the module will be called i2c-davinci. Please note that this driver might be needed to bring up other devices such as DaVinci NIC. For details please see http://www.ti.com/davinci 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" depends on SH_HIGHLANDER help If you say yes to this option, support will be included for the SMBus interface located in the FPGA on various Highlander boards, particularly the R0P7780LC0011RL and R0P7785LC0011RL FPGAs. This is wholly unrelated to the SoC I2C. This driver can also be built as a module. If so, the module will be called i2c-highlander. config I2C_IBM_IIC tristate "IBM PPC 4xx on-chip I2C interface" depends on 4xx help Say Y here if you want to use IIC peripheral found on embedded IBM PPC 4xx based systems. This driver can also be built as a module. If so, the module will be called i2c-ibm_iic. config I2C_IOP3XX tristate "Intel IOPx3xx and IXP4xx on-chip I2C interface" depends on ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX || ARCH_IOP13XX help Say Y here if you want to use the IIC bus controller on the Intel IOPx3xx I/O Processors or IXP4xx Network Processors. This driver can also be built as a module. If so, the module will be called i2c-iop3xx. config I2C_IXP2000 tristate "IXP2000 GPIO-Based I2C Interface (DEPRECATED)" depends on ARCH_IXP2000 select I2C_ALGOBIT help Say Y here if you have an Intel IXP2000 (2400, 2800, 2850) based system and are using GPIO lines for an I2C bus. This support is also available as a module. If so, the module will be called i2c-ixp2000. This driver is deprecated and will be dropped soon. Use i2c-gpio instead. config I2C_MPC tristate "MPC107/824x/85xx/52xx/86xx" depends on PPC32 help If you say yes to this option, support will be included for the built-in I2C interface on the MPC107/Tsi107/MPC8240/MPC8245 and MPC85xx/MPC8641 family processors. The driver may also work on 52xx family processors, though interrupts are known not to work. This driver can also be built as a module. If so, the module will be called i2c-mpc. config I2C_MV64XXX tristate "Marvell mv64xxx I2C Controller" depends on (MV64X60 || PLAT_ORION) && EXPERIMENTAL help If you say yes to this option, support will be included for the built-in I2C interface on the Marvell 64xxx line of host bridges. This driver can also be built as a module. If so, the module will be called i2c-mv64xxx. config I2C_OCORES tristate "OpenCores I2C Controller" depends on EXPERIMENTAL help If you say yes to this option, support will be included for the OpenCores I2C controller. For details see http://www.opencores.org/projects.cgi/web/i2c/overview This driver can also be built as a module. If so, the module will be called i2c-ocores. config I2C_OMAP tristate "OMAP I2C adapter" depends on ARCH_OMAP default y if MACH_OMAP_H3 || MACH_OMAP_OSK help If you say yes to this option, support will be included for the I2C interface on the Texas Instruments OMAP1/2 family of processors. Like OMAP1510/1610/1710/5912 and OMAP242x. For details see http://www.ti.com/omap. config I2C_PASEMI tristate "PA Semi SMBus interface" depends on PPC_PASEMI && PCI help Supports the PA Semi PWRficient on-chip SMBus interfaces. config I2C_PNX tristate "I2C bus support for Philips PNX targets" depends on ARCH_PNX4008 help This driver supports the Philips IP3204 I2C IP block master and/or slave controller This driver can also be built as a module. If so, the module will be called i2c-pnx. config I2C_PXA tristate "Intel PXA2XX I2C adapter (EXPERIMENTAL)" depends on EXPERIMENTAL && ARCH_PXA help If you have devices in the PXA I2C bus, say yes to this option. This driver can also be built as a module. If so, the module will be called i2c-pxa. config I2C_PXA_SLAVE bool "Intel PXA2XX I2C Slave comms support" depends on I2C_PXA help Support I2C slave mode communications on the PXA I2C bus. This is necessary for systems where the PXA may be a target on the I2C bus. config I2C_S3C2410 tristate "S3C2410 I2C Driver" depends on ARCH_S3C2410 help Say Y here to include support for I2C controller in the Samsung S3C2410 based System-on-Chip devices. config I2C_SH7760 tristate "Renesas SH7760 I2C Controller" depends on CPU_SUBTYPE_SH7760 help This driver supports the 2 I2C interfaces on the Renesas SH7760. This driver can also be built as a module. If so, the module will be called i2c-sh7760. config I2C_SH_MOBILE tristate "SuperH Mobile I2C Controller" depends on SUPERH help If you say yes to this option, support will be included for the built-in I2C interface on the Renesas SH-Mobile processor. This driver can also be built as a module. If so, the module will be called i2c-sh_mobile. config I2C_SIMTEC tristate "Simtec Generic I2C interface" select I2C_ALGOBIT help If you say yes to this option, support will be included for the Simtec Generic I2C interface. This driver is for the simple I2C bus used on newer Simtec products for general I2C, such as DDC on the Simtec BBD2016A. This driver can also be built as a module. If so, the module will be called i2c-simtec. config I2C_VERSATILE tristate "ARM Versatile/Realview I2C bus support" depends on ARCH_VERSATILE || ARCH_REALVIEW select I2C_ALGOBIT help Say yes if you want to support the I2C serial bus on ARMs Versatile range of platforms. This driver can also be built as a module. If so, the module will be called i2c-versatile. comment "External I2C/SMBus adapter drivers" config I2C_PARPORT tristate "Parallel port adapter" depends on PARPORT select I2C_ALGOBIT help This supports parallel port I2C adapters such as the ones made by Philips or Velleman, Analog Devices evaluation boards, and more. Basically any adapter using the parallel port as an I2C bus with no extra chipset is supported by this driver, or could be. This driver is a replacement for (and was inspired by) an older driver named i2c-philips-par. The new driver supports more devices, and makes it easier to add support for new devices. An adapter type parameter is now mandatory. Please read the file Documentation/i2c/busses/i2c-parport for details. Another driver exists, named i2c-parport-light, which doesn't depend on the parport driver. This is meant for embedded systems. Don't say Y here if you intend to say Y or M there. This support is also available as a module. If so, the module will be called i2c-parport. config I2C_PARPORT_LIGHT tristate "Parallel port adapter (light)" select I2C_ALGOBIT help This supports parallel port I2C adapters such as the ones made by Philips or Velleman, Analog Devices evaluation boards, and more. Basically any adapter using the parallel port as an I2C bus with no extra chipset is supported by this driver, or could be. This driver is a light version of i2c-parport. It doesn't depend on the parport driver, and uses direct I/O access instead. This might be preferred on embedded systems where wasting memory for the clean but heavy parport handling is not an option. The drawback is a reduced portability and the impossibility to daisy-chain other parallel port devices. Don't say Y here if you said Y or M to i2c-parport. Saying M to both is possible but both modules should not be loaded at the same time. This support is also available as a module. If so, the module will be called i2c-parport-light. config I2C_TAOS_EVM tristate "TAOS evaluation module" depends on EXPERIMENTAL select SERIO select SERIO_SERPORT default n help This supports TAOS evaluation modules on serial port. In order to use this driver, you will need the inputattach tool, which is part of the input-utils package. If unsure, say N. This support is also available as a module. If so, the module will be called i2c-taos-evm. config I2C_TINY_USB tristate "Tiny-USB adapter" depends on USB help If you say yes to this option, support will be included for the i2c-tiny-usb, a simple do-it-yourself USB to I2C interface. See http://www.harbaum.org/till/i2c_tiny_usb for hardware details. This driver can also be built as a module. If so, the module will be called i2c-tiny-usb. comment "Graphics adapter I2C/DDC channel drivers" depends on PCI config I2C_VOODOO3 tristate "Voodoo 3" depends on PCI select I2C_ALGOBIT help If you say yes to this option, support will be included for the Voodoo 3 I2C interface. This driver can also be built as a module. If so, the module will be called i2c-voodoo3. comment "Other I2C/SMBus bus drivers" config I2C_ACORN tristate "Acorn IOC/IOMD I2C bus support" depends on ARCH_ACORN default y select I2C_ALGOBIT help Say yes if you want to support the I2C bus on Acorn platforms. If you don't know, say Y. config I2C_ELEKTOR tristate "Elektor ISA card" depends on ISA && BROKEN_ON_SMP select I2C_ALGOPCF help This supports the PCF8584 ISA bus I2C adapter. Say Y if you own such an adapter. This support is also available as a module. If so, the module will be called i2c-elektor. config I2C_PCA_ISA tristate "PCA9564 on an ISA bus" depends on ISA select I2C_ALGOPCA default n help This driver supports ISA boards using the Philips PCA9564 parallel bus to I2C bus controller. This driver can also be built as a module. If so, the module will be called i2c-pca-isa. This device is almost undetectable and using this driver on a system which doesn't have this device will result in long delays when I2C/SMBus chip drivers are loaded (e.g. at boot time). If unsure, say N. config I2C_PCA_PLATFORM tristate "PCA9564 as platform device" select I2C_ALGOPCA default n help This driver supports a memory mapped Philips PCA9564 parallel bus to I2C bus controller. This driver can also be built as a module. If so, the module will be called i2c-pca-platform. config I2C_PMCMSP tristate "PMC MSP I2C TWI Controller" depends on PMC_MSP help This driver supports the PMC TWI controller on MSP devices. This driver can also be built as module. If so, the module will be called i2c-pmcmsp. config I2C_SIBYTE tristate "SiByte SMBus interface" depends on SIBYTE_SB1xxx_SOC help Supports the SiByte SOC on-chip I2C interfaces (2 channels). config I2C_STUB tristate "I2C/SMBus Test Stub" depends on EXPERIMENTAL && m default 'n' help This module may be useful to developers of SMBus client drivers, especially for certain kinds of sensor chips. If you do build this module, be sure to read the notes and warnings in <file:Documentation/i2c/i2c-stub>. If you don't know what to do here, definitely say N. config SCx200_I2C tristate "NatSemi SCx200 I2C using GPIO pins (DEPRECATED)" depends on SCx200_GPIO select I2C_ALGOBIT help Enable the use of two GPIO pins of a SCx200 processor as an I2C bus. If you don't know what to do here, say N. This support is also available as a module. If so, the module will be called scx200_i2c. This driver is deprecated and will be dropped soon. Use i2c-gpio (or scx200_acb) instead. config SCx200_I2C_SCL int "GPIO pin used for SCL" depends on SCx200_I2C default "12" help Enter the GPIO pin number used for the SCL signal. This value can also be specified with a module parameter. config SCx200_I2C_SDA int "GPIO pin used for SDA" depends on SCx200_I2C default "13" help Enter the GPIO pin number used for the SSA signal. This value can also be specified with a module parameter. config SCx200_ACB tristate "Geode ACCESS.bus support" depends on X86_32 && PCI help Enable the use of the ACCESS.bus controllers on the Geode SCx200 and SC1100 processors and the CS5535 and CS5536 Geode companion devices. If you don't know what to do here, say N. This support is also available as a module. If so, the module will be called scx200_acb. endmenu --- NEW FILE: i2c-gpio.c --- /* * Bitbanging I2C bus driver using the GPIO API * * Copyright (C) 2007 Atmel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * 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; if (!pdata) 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; } static struct platform_driver i2c_gpio_driver = { .driver = { .name = "i2c-gpio", .owner = THIS_MODULE, }, .probe = i2c_gpio_probe, .remove = __devexit_p(i2c_gpio_remove), }; 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); static void __exit i2c_gpio_exit(void) { platform_driver_unregister(&i2c_gpio_driver); } module_exit(i2c_gpio_exit); MODULE_AUTHOR("Haavard Skinnemoen <hsk...@at...>"); MODULE_DESCRIPTION("Platform-independent bitbanging I2C driver"); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:i2c-gpio"); |
From: Albert H. <he...@us...> - 2009-03-02 18:16:55
|
Update of /cvsroot/gc-linux/linux/drivers/i2c/busses In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31477/drivers/i2c/busses Log Message: Directory /cvsroot/gc-linux/linux/drivers/i2c/busses added to the repository |
From: Albert H. <he...@us...> - 2009-03-02 18:16:51
|
Update of /cvsroot/gc-linux/linux/drivers/i2c In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31460/drivers/i2c Log Message: Directory /cvsroot/gc-linux/linux/drivers/i2c added to the repository |
From: Albert H. <he...@us...> - 2009-03-02 18:08:48
|
Update of /cvsroot/gc-linux/linux/drivers/net/usb In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv30682/drivers/net/usb Modified Files: usbnet.c Log Message: From: Albert Herranz <alb...@ya...> Date: Sun, 25 Jan 2009 19:28:42 +0100 Subject: [PATCH] usbnet: fix spinlock recursion This patch fixes the following spinlock recursion bug seen when bringing down the ethernet interface. [ 87.354683] BUG: spinlock recursion on CPU#0, ifconfig/1722 [ 87.360899] lock: d2e01cd0, .magic: dead4ead, .owner: ifconfig/1722, .owner_cpu: 0 [ 87.373410] Call Trace: [ 87.379546] [d2f13c30] [c0008394] show_stack+0x3c/0x160 (unreliable) [ 87.386227] [d2f13c60] [c0169dd8] spin_bug+0x8c/0xd0 [ 87.392858] [d2f13c80] [c016a0e4] _raw_spin_lock+0xb4/0xb8 [ 87.399570] [d2f13c90] [c02c855c] _spin_lock_irqsave+0x30/0x48 [ 87.406258] [d2f13cb0] [c01aa5d4] defer_bh+0x28/0xfc [ 87.412726] [d2f13cd0] [c01c32e8] usb_hcd_giveback_urb+0x5c/0xdc [ 87.419209] [d2f13ce0] [c01d2cec] sthcd_giveback_urb+0x30/0x50 [ 87.425762] [d2f13d00] [c01d488c] sthcd_urb_dequeue+0x7c/0xac [ 87.432318] [d2f13d30] [c01c3478] unlink1+0x3c/0x4c [ 87.438960] [d2f13d40] [c01c45c8] usb_hcd_unlink_urb+0x88/0xa4 [ 87.445629] [d2f13d60] [c01c49ac] usb_unlink_urb+0x54/0x5c [ 87.452210] [d2f13d70] [c01aa170] unlink_urbs+0x40/0xb0 [ 87.458762] [d2f13d90] [c01ab470] usbnet_stop+0xdc/0x1a0 [ 87.465320] [d2f13df0] [c023bf18] dev_close+0xa0/0xdc [ 87.471639] [d2f13e00] [c023bc98] dev_change_flags+0x84/0x1b4 [ 87.477908] [d2f13e20] [c0283f50] devinet_ioctl+0x5ec/0x6b8 [ 87.484222] [d2f13e90] [c0284cbc] inet_ioctl+0x98/0xbc [ 87.490450] [d2f13ea0] [c022a300] sock_ioctl+0x60/0x284 [ 87.496566] [d2f13ec0] [c00a2714] vfs_ioctl+0x44/0xa8 [ 87.502657] [d2f13ee0] [c00a2d24] do_vfs_ioctl+0x88/0x24c [ 87.508707] [d2f13f10] [c00a2f28] sys_ioctl+0x40/0x74 [ 87.514728] [d2f13f40] [c0011bbc] ret_from_syscall+0x0/0x38 [ 87.520780] --- Exception: c01 at 0xff59878 [ 87.520783] LR = 0xff597dc unlink_urbs() takes the sk_buff queue lock &q->lock before removing the queued URBs via usb_unlink_urb(). The issue here is that the completion handler of a queued TX URB will get called when the URB is unlinked, then tx_complete() will call defer_bh() which will try to take the queue lock again and fail. The fix here is to release the list lock before unlinking a URB. Signed-off-by: Albert Herranz <alb...@ya...> Index: usbnet.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/net/usb/usbnet.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** usbnet.c 2 Mar 2009 18:06:43 -0000 1.1 --- usbnet.c 2 Mar 2009 18:08:43 -0000 1.2 *************** *** 523,527 **** --- 523,529 ---- // 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-03-02 18:06:48
|
Update of /cvsroot/gc-linux/linux/drivers/net/usb In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv30509/drivers/net/usb Added Files: usbnet.c Log Message: Add vanilla drivers/net/usb/usbnet.c. --- NEW FILE: usbnet.c --- /* * USB Network driver infrastructure * Copyright (C) 2000-2005 by David Brownell * Copyright (C) 2003-2005 David Hollis <dh...@da...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ [...1285 lines suppressed...] static int __init usbnet_init(void) { /* compiler should optimize this out */ BUILD_BUG_ON (sizeof (((struct sk_buff *)0)->cb) < sizeof (struct skb_data)); random_ether_addr(node_id); return 0; } module_init(usbnet_init); static void __exit usbnet_exit(void) { } module_exit(usbnet_exit); MODULE_AUTHOR("David Brownell"); MODULE_DESCRIPTION("USB network driver framework"); MODULE_LICENSE("GPL"); |
From: Albert H. <he...@us...> - 2009-03-02 18:00:48
|
Update of /cvsroot/gc-linux/linux/drivers/net/usb In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28693/drivers/net/usb Log Message: Directory /cvsroot/gc-linux/linux/drivers/net/usb added to the repository |
From: Albert H. <he...@us...> - 2009-02-01 19:19:05
|
Update of /cvsroot/gc-linux/CVSROOT In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv24704 Modified Files: loginfo Log Message: Followed "Commit Notifications via Email (syncmail)" Index: loginfo =================================================================== RCS file: /cvsroot/gc-linux/CVSROOT/loginfo,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- loginfo 24 Sep 2005 16:25:37 -0000 1.3 +++ loginfo 1 Feb 2009 19:18:59 -0000 1.4 @@ -24,4 +24,5 @@ #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog -DEFAULT /cvsroot/sitedocs/CVSROOT/cvstools/syncmail -u %{sVv} gc-...@li... +CVSROOT /cvsroot/sitedocs/CVSROOT/cvstools/syncmail %{sVv} he...@us... +DEFAULT /cvsroot/sitedocs/CVSROOT/cvstools/syncmail %{sVv} gc-...@li... |
From: Albert H. <he...@us...> - 2009-02-01 18:50:36
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv19060/arch/powerpc/platforms/embedded6xx Modified Files: starlet-gpio.c Log Message: - add GPIO fixes (now hopefully) Index: starlet-gpio.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/starlet-gpio.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- starlet-gpio.c 1 Feb 2009 18:29:35 -0000 1.2 +++ starlet-gpio.c 1 Feb 2009 18:50:33 -0000 1.3 @@ -24,7 +24,7 @@ }; struct stgpio_regs { - __be32 data, dir; + __be32 out, dir, in; }; @@ -41,7 +41,7 @@ u32 pin_mask = 1 << (31 - gpio); unsigned int val; - val = !!(in_be32(®s->data) & pin_mask); + val = !!(in_be32(®s->in) & pin_mask); pr_debug("%s: gpio: %d val: %d\n", __func__, gpio, val); @@ -58,10 +58,10 @@ unsigned long flags; spin_lock_irqsave(&st_gc->lock, flags); - data = in_be32(®s->data) & ~pin_mask; + data = in_be32(®s->in) & ~pin_mask; if (val) data |= pin_mask; - out_be32(®s->data, data); + out_be32(®s->out, data); spin_unlock_irqrestore(&st_gc->lock, flags); pr_debug("%s: gpio: %d val: %d\n", __func__, gpio, val); @@ -90,7 +90,7 @@ return 0; } -static int stgpio_add32(struct device_node *np) +int stgpio_add32(struct device_node *np) { struct of_mm_gpio_chip *mm_gc; struct of_gpio_chip *of_gc; |
From: Albert H. <he...@us...> - 2009-02-01 18:31:27
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/configs In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv17186/arch/powerpc/configs Modified Files: gamecube_defconfig wii_defconfig Log Message: Merge 2.6.28. Also: - run checkpatch against the non-broken source code - add GPIO driver fixes - implement getgeo for the special block drivers - small fixes Index: wii_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/configs/wii_defconfig,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- wii_defconfig 15 Nov 2008 20:10:14 -0000 1.9 +++ wii_defconfig 1 Feb 2009 18:29:34 -0000 1.10 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.27 -# Sat Nov 15 20:35:35 2008 +# Linux kernel version: 2.6.28 +# Mon Jan 12 20:19:45 2009 # # CONFIG_PPC64 is not set @@ -23,7 +23,7 @@ CONFIG_NOT_COHERENT_CACHE=y CONFIG_PPC32=y CONFIG_WORD_SIZE=32 -CONFIG_PPC_MERGE=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_MMU=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_TIME=y @@ -109,12 +109,14 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y +CONFIG_AIO=y # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set # CONFIG_PROFILING is not set -# CONFIG_MARKERS is not set +CONFIG_TRACEPOINTS=y +CONFIG_MARKERS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y @@ -122,10 +124,6 @@ CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y -# CONFIG_HAVE_DMA_ATTRS is not set -# CONFIG_USE_GENERIC_SMP_HELPERS is not set -# CONFIG_HAVE_CLK is not set -# CONFIG_PROC_PAGE_MONITOR is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y @@ -158,6 +156,7 @@ # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="anticipatory" CONFIG_CLASSIC_RCU=y +# CONFIG_FREEZER is not set # # Platform support @@ -209,7 +208,6 @@ # Kernel options # # CONFIG_HIGHMEM is not set -# CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set CONFIG_GENERIC_CLOCKEVENTS_BUILD=y @@ -224,6 +222,8 @@ CONFIG_PREEMPT=y # CONFIG_PREEMPT_RCU is not set CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_HAVE_AOUT is not set CONFIG_BINFMT_MISC=m # CONFIG_IOMMU_HELPER is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y @@ -238,15 +238,15 @@ # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y -# CONFIG_SPARSEMEM_STATIC is not set -# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_MIGRATION is not set # CONFIG_RESOURCES_64BIT is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y CONFIG_FORCE_MAX_ZONEORDER=11 CONFIG_PROC_DEVICETREE=y # CONFIG_CMDLINE_BOOL is not set @@ -327,6 +327,7 @@ # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set @@ -363,11 +364,10 @@ # CONFIG_BT_HCIBFUSB is not set # CONFIG_BT_HCIVHCI is not set # CONFIG_AF_RXRPC is not set - -# -# Wireless -# +# CONFIG_PHONET is not set +CONFIG_WIRELESS=y # CONFIG_CFG80211 is not set +CONFIG_WIRELESS_OLD_REGULATORY=y # CONFIG_WIRELESS_EXT is not set # CONFIG_MAC80211 is not set # CONFIG_IEEE80211 is not set @@ -414,6 +414,7 @@ CONFIG_GAMECUBE_GQR=m # CONFIG_EEPROM_93CX6 is not set # CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_C2PORT is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -475,6 +476,9 @@ # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set # CONFIG_B44 is not set # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set @@ -497,6 +501,7 @@ CONFIG_USB_NET_AX8817X=y # CONFIG_USB_NET_CDCETHER is not set # CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_SMSC95XX is not set # CONFIG_USB_NET_GL620A is not set # CONFIG_USB_NET_NET1080 is not set # CONFIG_USB_NET_PLUSB is not set @@ -517,7 +522,7 @@ # Input device support # CONFIG_INPUT=y -# CONFIG_INPUT_FF_MEMLESS is not set +CONFIG_INPUT_FF_MEMLESS=m # CONFIG_INPUT_POLLDEV is not set # @@ -579,6 +584,7 @@ # CONFIG_INPUT_KEYSPAN_REMOTE is not set # CONFIG_INPUT_POWERMATE is not set # CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set CONFIG_INPUT_UINPUT=y # @@ -636,6 +642,11 @@ CONFIG_GPIO_SYSFS=y # +# Memory mapped GPIO expanders: +# +# CONFIG_GPIO_XILINX is not set + +# # I2C GPIO expanders: # @@ -652,11 +663,11 @@ # CONFIG_THERMAL is not set # CONFIG_THERMAL_HWMON is not set # CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # -CONFIG_SSB_POSSIBLE=y # CONFIG_SSB is not set # @@ -666,6 +677,7 @@ # CONFIG_MFD_SM501 is not set # CONFIG_HTC_PASIC3 is not set # CONFIG_MFD_TMIO is not set +# CONFIG_REGULATOR is not set # # Multimedia devices @@ -691,6 +703,7 @@ CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y @@ -715,6 +728,8 @@ CONFIG_FB_GAMECUBE=y # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -735,6 +750,7 @@ CONFIG_FONT_8x16=y # CONFIG_LOGO is not set CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y @@ -771,9 +787,36 @@ # USB Input Devices # CONFIG_USB_HID=y -CONFIG_USB_HIDINPUT_POWERBOOK=y -# CONFIG_HID_FF is not set +# CONFIG_HID_PID is not set # CONFIG_USB_HIDDEV is not set + +# +# Special HID drivers +# +CONFIG_HID_COMPAT=y +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_BRIGHT=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DELL=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GYRATION=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_PANTHERLORD=m +# CONFIG_PANTHERLORD_FF is not set +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +CONFIG_THRUSTMASTER_FF=m +CONFIG_ZEROPLUS_FF=m CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y # CONFIG_USB_ARCH_HAS_OHCI is not set @@ -792,6 +835,8 @@ # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set # CONFIG_USB_MON is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set # # USB Host Controller Drivers @@ -802,6 +847,7 @@ # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set CONFIG_USB_WII_HCD=y +# CONFIG_USB_HWA_HCD is not set # # USB Device Class drivers @@ -809,13 +855,14 @@ # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set # -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; # # -# may also be needed; see USB_STORAGE Help for more information +# see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_DEBUG is not set @@ -850,6 +897,7 @@ # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set @@ -866,6 +914,7 @@ # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set # CONFIG_USB_GADGET is not set # CONFIG_MMC is not set # CONFIG_MEMSTICK is not set @@ -895,12 +944,15 @@ # Platform RTC drivers # # CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set # CONFIG_RTC_DRV_DS1511 is not set # CONFIG_RTC_DRV_DS1553 is not set # CONFIG_RTC_DRV_DS1742 is not set # CONFIG_RTC_DRV_STK17TA8 is not set # CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set # CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_BQ4802 is not set # CONFIG_RTC_DRV_V3020 is not set CONFIG_RTC_DRV_GCN=y @@ -910,6 +962,7 @@ # CONFIG_RTC_DRV_PPC is not set # CONFIG_DMADEVICES is not set # CONFIG_UIO is not set +# CONFIG_STAGING is not set # # File systems @@ -919,11 +972,13 @@ # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -# CONFIG_EXT4DEV_FS is not set +# CONFIG_EXT4_FS is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set +CONFIG_FILE_LOCKING=y # CONFIG_XFS_FS is not set # CONFIG_OCFS2_FS is not set CONFIG_DNOTIFY=y @@ -959,6 +1014,7 @@ CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y +# CONFIG_PROC_PAGE_MONITOR is not set CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set @@ -995,6 +1051,7 @@ CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y +# CONFIG_SUNRPC_REGISTER_V4 is not set # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set @@ -1054,7 +1111,6 @@ # Library routines # CONFIG_BITREVERSE=y -# CONFIG_GENERIC_FIND_FIRST_BIT is not set CONFIG_CRC_CCITT=y # CONFIG_CRC16 is not set # CONFIG_CRC_T10DIF is not set @@ -1077,7 +1133,7 @@ CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set @@ -1106,16 +1162,27 @@ # CONFIG_DEBUG_SG is not set # CONFIG_BOOT_PRINTK_DELAY 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_FAULT_INJECTION is not set CONFIG_LATENCYTOP=y CONFIG_SYSCTL_SYSCALL_CHECK=y -CONFIG_HAVE_FTRACE=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -# CONFIG_FTRACE is not set +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_RING_BUFFER=y +CONFIG_TRACING=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set # CONFIG_PREEMPT_TRACER is not set # CONFIG_SCHED_TRACER is not set -# CONFIG_CONTEXT_SWITCH_TRACER is not set +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_BOOT_TRACER=y +# CONFIG_STACK_TRACER is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set @@ -1124,8 +1191,10 @@ # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_CODE_PATCHING_SELFTEST is not set # CONFIG_FTR_FIXUP_SELFTEST is not set +# CONFIG_MSI_BITMAP_SELFTEST is not set # CONFIG_XMON is not set # CONFIG_IRQSTACKS is not set +# CONFIG_VIRQ_DEBUG is not set # CONFIG_BDI_SWITCH is not set # CONFIG_BOOTX_TEXT is not set CONFIG_PPC_EARLY_DEBUG=y @@ -1147,6 +1216,7 @@ # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set # CONFIG_SECURITY_FILE_CAPABILITIES is not set # CONFIG_CRYPTO is not set # CONFIG_PPC_CLOCK is not set Index: gamecube_defconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/configs/gamecube_defconfig,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- gamecube_defconfig 15 Nov 2008 20:10:14 -0000 1.5 +++ gamecube_defconfig 1 Feb 2009 18:29:34 -0000 1.6 @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.27 -# Sat Nov 15 18:13:50 2008 +# Linux kernel version: 2.6.28 +# Mon Jan 12 20:23:50 2009 # # CONFIG_PPC64 is not set @@ -23,7 +23,7 @@ CONFIG_NOT_COHERENT_CACHE=y CONFIG_PPC32=y CONFIG_WORD_SIZE=32 -CONFIG_PPC_MERGE=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_MMU=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_TIME=y @@ -108,12 +108,14 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y +CONFIG_AIO=y # CONFIG_VM_EVENT_COUNTERS is not set CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set # CONFIG_PROFILING is not set -# CONFIG_MARKERS is not set +CONFIG_TRACEPOINTS=y +CONFIG_MARKERS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y @@ -121,10 +123,6 @@ CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y -# CONFIG_HAVE_DMA_ATTRS is not set -# CONFIG_USE_GENERIC_SMP_HELPERS is not set -# CONFIG_HAVE_CLK is not set -# CONFIG_PROC_PAGE_MONITOR is not set # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y @@ -157,6 +155,7 @@ # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="anticipatory" CONFIG_CLASSIC_RCU=y +# CONFIG_FREEZER is not set # # Platform support @@ -207,7 +206,6 @@ # Kernel options # # CONFIG_HIGHMEM is not set -# CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set CONFIG_GENERIC_CLOCKEVENTS_BUILD=y @@ -222,6 +220,8 @@ CONFIG_PREEMPT=y # CONFIG_PREEMPT_RCU is not set CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_HAVE_AOUT is not set CONFIG_BINFMT_MISC=m # CONFIG_IOMMU_HELPER is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y @@ -236,15 +236,15 @@ # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y -# CONFIG_SPARSEMEM_STATIC is not set -# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_MIGRATION is not set # CONFIG_RESOURCES_64BIT is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y CONFIG_FORCE_MAX_ZONEORDER=11 CONFIG_PROC_DEVICETREE=y # CONFIG_CMDLINE_BOOL is not set @@ -325,6 +325,7 @@ # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set @@ -345,14 +346,8 @@ # CONFIG_IRDA is not set # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set - -# -# Wireless -# -# CONFIG_CFG80211 is not set -# CONFIG_WIRELESS_EXT is not set -# CONFIG_MAC80211 is not set -# CONFIG_IEEE80211 is not set +# CONFIG_PHONET is not set +# CONFIG_WIRELESS is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set @@ -394,6 +389,7 @@ CONFIG_GAMECUBE_GQR=y # CONFIG_EEPROM_93CX6 is not set # CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_C2PORT is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -422,6 +418,9 @@ # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set # CONFIG_B44 is not set # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set @@ -549,11 +548,11 @@ # CONFIG_THERMAL is not set # CONFIG_THERMAL_HWMON is not set # CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # -CONFIG_SSB_POSSIBLE=y # CONFIG_SSB is not set # @@ -563,6 +562,7 @@ # CONFIG_MFD_SM501 is not set # CONFIG_HTC_PASIC3 is not set # CONFIG_MFD_TMIO is not set +# CONFIG_REGULATOR is not set # # Multimedia devices @@ -588,6 +588,7 @@ CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set # CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y @@ -612,6 +613,8 @@ CONFIG_FB_GAMECUBE=y # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # @@ -636,6 +639,7 @@ # CONFIG_LOGO_LINUX_CLUT224 is not set CONFIG_LOGO_GAMECUBE_CLUT224=y CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y @@ -666,6 +670,12 @@ CONFIG_HID=y # CONFIG_HID_DEBUG is not set # CONFIG_HIDRAW is not set +# CONFIG_HID_PID is not set + +# +# Special HID drivers +# +CONFIG_HID_COMPAT=y # CONFIG_USB_SUPPORT is not set # CONFIG_MMC is not set # CONFIG_MEMSTICK is not set @@ -695,12 +705,15 @@ # Platform RTC drivers # # CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set # CONFIG_RTC_DRV_DS1511 is not set # CONFIG_RTC_DRV_DS1553 is not set # CONFIG_RTC_DRV_DS1742 is not set # CONFIG_RTC_DRV_STK17TA8 is not set # CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set # CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_BQ4802 is not set # CONFIG_RTC_DRV_V3020 is not set CONFIG_RTC_DRV_GCN=y @@ -710,6 +723,7 @@ # CONFIG_RTC_DRV_PPC is not set # CONFIG_DMADEVICES is not set # CONFIG_UIO is not set +# CONFIG_STAGING is not set # # File systems @@ -719,11 +733,13 @@ # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y # CONFIG_EXT3_FS_XATTR is not set -# CONFIG_EXT4DEV_FS is not set +# CONFIG_EXT4_FS is not set CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set +CONFIG_FILE_LOCKING=y # CONFIG_XFS_FS is not set # CONFIG_OCFS2_FS is not set CONFIG_DNOTIFY=y @@ -759,6 +775,7 @@ CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y +# CONFIG_PROC_PAGE_MONITOR is not set CONFIG_SYSFS=y CONFIG_TMPFS=y # CONFIG_TMPFS_POSIX_ACL is not set @@ -795,6 +812,7 @@ CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y +# CONFIG_SUNRPC_REGISTER_V4 is not set # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set @@ -859,7 +877,6 @@ # Library routines # CONFIG_BITREVERSE=y -# CONFIG_GENERIC_FIND_FIRST_BIT is not set CONFIG_CRC_CCITT=y # CONFIG_CRC16 is not set # CONFIG_CRC_T10DIF is not set @@ -882,7 +899,7 @@ CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_DEBUG_FS is not set +CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set @@ -911,16 +928,27 @@ # CONFIG_DEBUG_SG is not set # CONFIG_BOOT_PRINTK_DELAY 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_FAULT_INJECTION is not set CONFIG_LATENCYTOP=y CONFIG_SYSCTL_SYSCALL_CHECK=y -CONFIG_HAVE_FTRACE=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -# CONFIG_FTRACE is not set +CONFIG_NOP_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_RING_BUFFER=y +CONFIG_TRACING=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set # CONFIG_PREEMPT_TRACER is not set # CONFIG_SCHED_TRACER is not set -# CONFIG_CONTEXT_SWITCH_TRACER is not set +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_BOOT_TRACER=y +# CONFIG_STACK_TRACER is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set @@ -929,8 +957,10 @@ # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_CODE_PATCHING_SELFTEST is not set # CONFIG_FTR_FIXUP_SELFTEST is not set +# CONFIG_MSI_BITMAP_SELFTEST is not set # CONFIG_XMON is not set # CONFIG_IRQSTACKS is not set +# CONFIG_VIRQ_DEBUG is not set # CONFIG_BDI_SWITCH is not set # CONFIG_BOOTX_TEXT is not set CONFIG_PPC_EARLY_DEBUG=y @@ -952,6 +982,7 @@ # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set # CONFIG_SECURITY_FILE_CAPABILITIES is not set # CONFIG_CRYPTO is not set # CONFIG_PPC_CLOCK is not set |
From: Albert H. <he...@us...> - 2009-02-01 18:30:16
|
Update of /cvsroot/gc-linux/linux/drivers In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv17186/drivers Modified Files: Kconfig Makefile Log Message: Merge 2.6.28. Also: - run checkpatch against the non-broken source code - add GPIO driver fixes - implement getgeo for the special block drivers - small fixes Index: Makefile =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/Makefile,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- Makefile 15 Nov 2008 20:10:14 -0000 1.26 +++ Makefile 1 Feb 2009 18:29:35 -0000 1.27 @@ -56,6 +56,7 @@ obj-$(CONFIG_ATA_OVER_ETH) += block/aoe/ obj-$(CONFIG_PARIDE) += block/paride/ obj-$(CONFIG_TC) += tc/ +obj-$(CONFIG_UWB) += uwb/ obj-$(CONFIG_USB) += usb/ obj-$(CONFIG_USB_MUSB_HDRC) += usb/musb/ obj-$(CONFIG_PCI) += usb/ @@ -82,6 +83,7 @@ obj-y += lguest/ obj-$(CONFIG_CPU_FREQ) += cpufreq/ obj-$(CONFIG_CPU_IDLE) += cpuidle/ +obj-y += idle/ obj-$(CONFIG_MMC) += mmc/ obj-$(CONFIG_MEMSTICK) += memstick/ obj-$(CONFIG_NEW_LEDS) += leds/ @@ -101,3 +103,4 @@ obj-$(CONFIG_SSB) += ssb/ obj-$(CONFIG_VIRTIO) += virtio/ obj-$(CONFIG_REGULATOR) += regulator/ +obj-$(CONFIG_STAGING) += staging/ Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/Kconfig,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Kconfig 14 Sep 2008 19:20:28 -0000 1.3 +++ Kconfig 1 Feb 2009 18:29:35 -0000 1.4 @@ -70,6 +70,8 @@ source "drivers/mfd/Kconfig" +source "drivers/regulator/Kconfig" + source "drivers/media/Kconfig" source "drivers/video/Kconfig" @@ -80,6 +82,8 @@ source "drivers/usb/Kconfig" +source "drivers/uwb/Kconfig" + source "drivers/mmc/Kconfig" source "drivers/memstick/Kconfig" @@ -103,4 +107,6 @@ source "drivers/uio/Kconfig" source "drivers/xen/Kconfig" + +source "drivers/staging/Kconfig" endmenu |
From: Albert H. <he...@us...> - 2009-02-01 18:30:04
|
Update of /cvsroot/gc-linux/linux/drivers/input/keyboard In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv17186/drivers/input/keyboard Modified Files: Kconfig rvl-stkbd.c Log Message: Merge 2.6.28. Also: - run checkpatch against the non-broken source code - add GPIO driver fixes - implement getgeo for the special block drivers - small fixes Index: Kconfig =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/keyboard/Kconfig,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- Kconfig 14 Sep 2008 19:20:28 -0000 1.8 +++ Kconfig 1 Feb 2009 18:29:35 -0000 1.9 @@ -321,7 +321,7 @@ 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. Index: rvl-stkbd.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/input/keyboard/rvl-stkbd.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- rvl-stkbd.c 2 Jul 2008 20:43:10 -0000 1.2 +++ rvl-stkbd.c 1 Feb 2009 18:29:35 -0000 1.3 @@ -2,8 +2,8 @@ * drivers/input/keyboard/rvl-stkbd.c * * Nintendo Wii starlet keyboard driver. - * Copyright (C) 2008 The GameCube Linux Team - * Copyright (C) 2008 Albert Herranz + * 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 @@ -37,7 +37,7 @@ static char stkbd_driver_version[] = "0.1i"; #define drv_printk(level, format, arg...) \ - printk(level DRV_MODULE_NAME ": " format , ## arg) + printk(level DRV_MODULE_NAME ": " format , ## arg) /* * Keyboard events from IOS. @@ -64,7 +64,7 @@ */ enum { - __STKBD_RUNNING=1, /* device is opened and running */ + __STKBD_RUNNING = 1, /* device is opened and running */ __STKBD_WAITING_REPORT /* waiting for IOS report */ }; @@ -236,7 +236,7 @@ } else { event = kbd->event; - switch(event->type) { + switch (event->type) { case STKBD_EV_CONNECT: drv_printk(KERN_INFO, "keyboard connected\n"); break; @@ -253,7 +253,7 @@ } return error; } - + static int stkbd_wait_for_events(struct stkbd_keyboard *kbd) { struct stkbd_event *event = kbd->event; @@ -271,7 +271,7 @@ } return error; } - + /* * Input driver hooks. * @@ -326,7 +326,7 @@ struct input_dev *idev; int error; - idev = input_allocate_device(); + idev = input_allocate_device(); if (!idev) { drv_printk(KERN_ERR, "failed to allocate input_dev\n"); return -ENOMEM; @@ -344,7 +344,7 @@ idev->open = stkbd_open; idev->close = stkbd_close; - + error = input_register_device(kbd->idev); if (error) { input_free_device(kbd->idev); @@ -420,36 +420,36 @@ static int stkbd_do_probe(struct device *dev) { - struct stkbd_keyboard *kbd; - int error; + struct stkbd_keyboard *kbd; + int error; - kbd = kzalloc(sizeof(*kbd), GFP_KERNEL); - if (!kbd) { - drv_printk(KERN_ERR, "failed to allocate stkbd_keyboard\n"); - return -ENOMEM; - } - dev_set_drvdata(dev, kbd); - kbd->dev = dev; + kbd = kzalloc(sizeof(*kbd), GFP_KERNEL); + if (!kbd) { + drv_printk(KERN_ERR, "failed to allocate stkbd_keyboard\n"); + return -ENOMEM; + } + dev_set_drvdata(dev, kbd); + kbd->dev = dev; - error = stkbd_init(kbd); - if (error) { - dev_set_drvdata(dev, NULL); - kfree(kbd); - } - return error; + error = stkbd_init(kbd); + if (error) { + dev_set_drvdata(dev, NULL); + kfree(kbd); + } + return error; } static int stkbd_do_remove(struct device *dev) { - struct stkbd_keyboard *kbd = dev_get_drvdata(dev); + struct stkbd_keyboard *kbd = dev_get_drvdata(dev); - if (kbd) { - stkbd_exit(kbd); - dev_set_drvdata(dev, NULL); - kfree(kbd); - return 0; - } - return -ENODEV; + if (kbd) { + stkbd_exit(kbd); + dev_set_drvdata(dev, NULL); + kfree(kbd); + return 0; + } + return -ENODEV; } @@ -459,30 +459,30 @@ */ static int __init stkbd_of_probe(struct of_device *odev, - const struct of_device_id *match) + const struct of_device_id *match) { - return stkbd_do_probe(&odev->dev); + return stkbd_do_probe(&odev->dev); } static int __exit stkbd_of_remove(struct of_device *odev) { - return stkbd_do_remove(&odev->dev); + return stkbd_do_remove(&odev->dev); } static struct of_device_id stkbd_of_match[] = { - { .compatible = "nintendo,starlet-keyboard" }, - { }, + { .compatible = "nintendo,starlet-keyboard" }, + { }, }; MODULE_DEVICE_TABLE(of, stkbd_of_match); static struct of_platform_driver stkbd_of_driver = { - .owner = THIS_MODULE, - .name = DRV_MODULE_NAME, - .match_table = stkbd_of_match, - .probe = stkbd_of_probe, - .remove = stkbd_of_remove, + .owner = THIS_MODULE, + .name = DRV_MODULE_NAME, + .match_table = stkbd_of_match, + .probe = stkbd_of_probe, + .remove = stkbd_of_remove, }; @@ -493,15 +493,15 @@ static int __init stkbd_init_module(void) { - drv_printk(KERN_INFO, "%s - version %s\n", DRV_DESCRIPTION, - stkbd_driver_version); + drv_printk(KERN_INFO, "%s - version %s\n", DRV_DESCRIPTION, + stkbd_driver_version); - return of_register_platform_driver(&stkbd_of_driver); + return of_register_platform_driver(&stkbd_of_driver); } static void __exit stkbd_exit_module(void) { - of_unregister_platform_driver(&stkbd_of_driver); + of_unregister_platform_driver(&stkbd_of_driver); } module_init(stkbd_init_module); @@ -510,4 +510,3 @@ MODULE_DESCRIPTION(DRV_DESCRIPTION); MODULE_AUTHOR(DRV_AUTHOR); MODULE_LICENSE("GPL"); - |