diff options
author | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
---|---|---|
committer | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
commit | 709c4d66e0b107ca606941b988bad717c0b45d9b (patch) | |
tree | 37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch | |
parent | fa6cd5a3b993f16c27de4ff82b42684516d433ba (diff) |
rename packages/ to recipes/ per earlier agreement
See links below for more details:
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816
Signed-off-by: Denys Dmytriyenko <denis@denix.org>
Acked-by: Mike Westerhof <mwester@dls.net>
Acked-by: Philip Balister <philip@balister.org>
Acked-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Marcin Juszkiewicz <hrw@openembedded.org>
Acked-by: Koen Kooi <koen@openembedded.org>
Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch')
-rw-r--r-- | packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch | 466 |
1 files changed, 0 insertions, 466 deletions
diff --git a/packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch b/packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch deleted file mode 100644 index 2dccf681eb..0000000000 --- a/packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch +++ /dev/null @@ -1,466 +0,0 @@ -diff -urN linux-2.4.27-mtx1-lm_sensors-2.8.8/drivers/i2c/Config.in linux-2.4.27-mtx1-lm_sensors-2.8.8-i2cau1x00gpio/drivers/i2c/Config.in ---- linux-2.4.27-mtx1-lm_sensors-2.8.8/drivers/i2c/Config.in 2004-12-13 18:03:18.000000000 +0100 -+++ linux-2.4.27-mtx1-lm_sensors-2.8.8-i2cau1x00gpio/drivers/i2c/Config.in 2004-12-13 18:11:02.000000000 +0100 -@@ -17,6 +17,11 @@ - int ' GPIO pin used for SCL' CONFIG_SCx200_I2C_SCL 12 - int ' GPIO pin used for SDA' CONFIG_SCx200_I2C_SDA 13 - fi -+ dep_tristate ' I2C using Au1x00 GPIO pins' CONFIG_I2C_AU1X00GPIO $CONFIG_I2C_ALGOBIT -+ if [ "$CONFIG_I2C_AU1X00GPIO" != "n" ]; then -+ int ' GPIO pin used for SCL' CONFIG_I2C_AU1X00GPIO_SCL 206 -+ int ' GPIO pin used for SDA' CONFIG_I2C_AU1X00GPIO_SDA 207 -+ fi - fi - - dep_tristate 'NatSemi SCx200 ACCESS.bus' CONFIG_SCx200_ACB $CONFIG_I2C -diff -urN linux-2.4.27-mtx1-lm_sensors-2.8.8/drivers/i2c/i2c-au1x00gpio.c linux-2.4.27-mtx1-lm_sensors-2.8.8-i2cau1x00gpio/drivers/i2c/i2c-au1x00gpio.c ---- linux-2.4.27-mtx1-lm_sensors-2.8.8/drivers/i2c/i2c-au1x00gpio.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.4.27-mtx1-lm_sensors-2.8.8-i2cau1x00gpio/drivers/i2c/i2c-au1x00gpio.c 2004-12-13 18:12:50.000000000 +0100 -@@ -0,0 +1,426 @@ -+/* ------------------------------------------------------------------------- */ -+/* i2c-au1x00gpio.c i2c-hw access for Au1x00 GPIO pins. */ -+/* ------------------------------------------------------------------------- */ -+/* Copyright (C) 1995-2000 Michael Stickel -+ -+ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ -+/* ------------------------------------------------------------------------- */ -+ -+/* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even -+ Frodo Looijaard <frodol@dds.nl> -+ Simon G. Vogl -+*/ -+ -+/* $Id: i2c-au1x00gpio.c,v 1.1.1.2 2004/01/22 15:35:47 br1 Exp $ */ -+ -+#include <linux/module.h> -+#include <linux/config.h> -+#include <linux/types.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/stddef.h> -+#include <linux/ioport.h> -+#include <asm/uaccess.h> -+#include <asm/io.h> -+#include <asm/au1000.h> -+#include <asm/au1000_gpio.h> -+ -+#include <linux/slab.h> -+#include <linux/mm.h> -+ -+#include <linux/i2c.h> -+#include <linux/i2c-algo-bit.h> -+ -+#ifndef __exit -+#define __exit __init -+#endif -+ -+ -+struct i2c_au1x00gpio -+{ -+ struct i2c_au1x00gpio *next; -+ -+ short scl_gpio; -+ short sda_gpio; -+ -+ unsigned long scl_mask; -+ unsigned long sda_mask; -+ -+ struct i2c_adapter adapter; -+ struct i2c_algo_bit_data bit_au1x00gpio_data; -+}; -+ -+static struct i2c_au1x00gpio *adapter_list; -+ -+ -+ -+/* ----- global defines ----------------------------------------------- */ -+#define DEB(x) /* should be reasonable open, close &c. */ -+#define DEB2(x) /* low level debugging - very slow */ -+#define DEBE(x) x /* error messages */ -+ -+/* ----- printer port defines ------------------------------------------*/ -+ -+/* ----- local functions ---------------------------------------------- */ -+ -+ -+//-- Primary GPIO -+static void bit_au1x00gpio_setscl(void *data, int state) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ if (state) -+ au_writel(adapter->scl_mask, SYS_TRIOUTCLR); // Disable Driver: Switch off Transistor => 1 -+ else -+ au_writel(adapter->scl_mask, SYS_OUTPUTCLR); // Clear Output and switch on Transistor => 0 -+} -+ -+ -+static void bit_au1x00gpio_setsda(void *data, int state) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ if (state) -+ au_writel(adapter->sda_mask, SYS_TRIOUTCLR); -+ else -+ au_writel(adapter->sda_mask, SYS_OUTPUTCLR); -+} -+ -+ -+static int bit_au1x00gpio_getscl(void *data) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ return (au_readl(SYS_PINSTATERD) & adapter->scl_mask) ? 1 : 0; -+} -+ -+ -+static int bit_au1x00gpio_getsda(void *data) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ return (au_readl(SYS_PINSTATERD) & adapter->sda_mask) ? 1 : 0; -+} -+ -+ -+ -+ -+/*-- -+ *-- Functions for accessing GPIO-2 -+ *-- -+ */ -+static void bit_au1x00gpio2_setscl(void *data, int state) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ if (state) -+ { -+ au_writel(au_readl(GPIO2_DIR) & ~adapter->scl_mask, GPIO2_DIR); -+ } -+ else -+ { -+ au_writel(au_readl(GPIO2_OUTPUT) & ~adapter->scl_mask, GPIO2_OUTPUT); -+ au_writel(au_readl(GPIO2_DIR) | adapter->scl_mask, GPIO2_DIR); -+ } -+} -+ -+static void bit_au1x00gpio2_setsda(void *data, int state) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ if (state) -+ { -+ au_writel(au_readl(GPIO2_DIR) & ~adapter->sda_mask, GPIO2_DIR); -+ } -+ else -+ { -+ au_writel(au_readl(GPIO2_OUTPUT) & ~adapter->sda_mask, GPIO2_OUTPUT); -+ au_writel(au_readl(GPIO2_DIR) | adapter->sda_mask, GPIO2_DIR); -+ } -+} -+ -+static int bit_au1x00gpio2_getscl(void *data) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ return (au_readl(GPIO2_PINSTATE) & adapter->scl_mask) ? 1 : 0; -+} -+ -+static int bit_au1x00gpio2_getsda(void *data) -+{ -+ struct i2c_au1x00gpio * adapter = (struct i2c_au1x00gpio *)data; -+ return (au_readl(GPIO2_PINSTATE) & adapter->sda_mask) ? 1 : 0; -+} -+ -+ -+ -+static int check_i2c_au1x00gpio_adapter(struct i2c_au1x00gpio *adapter) -+{ -+ int state = 0; -+ -+ adapter->bit_au1x00gpio_data.setsda (adapter, 1); -+ adapter->bit_au1x00gpio_data.setscl (adapter, 1); -+ -+ if (adapter->bit_au1x00gpio_data.getsda(adapter)==0) -+ { -+ printk ("i2c-au1x00gpio: sda line should read 1 but reads 0\n"); -+ state = -1; -+ } -+ if (adapter->bit_au1x00gpio_data.getscl(adapter)==0) -+ { -+ printk ("i2c-au1x00gpio: scl line should read 1 but reads 0\n"); -+ state = -1; -+ } -+ -+ -+ adapter->bit_au1x00gpio_data.setsda (adapter, 0); -+ adapter->bit_au1x00gpio_data.setscl (adapter, 0); -+ -+ if (adapter->bit_au1x00gpio_data.getsda(adapter)==1) -+ { -+ printk ("i2c-au1x00gpio: sda line should read 0 but reads 1\n"); -+ state = -1; -+ } -+ if (adapter->bit_au1x00gpio_data.getscl(adapter)==1) -+ { -+ printk ("i2c-au1x00gpio: scl line should read 0 but reads 1\n"); -+ state = -1; -+ } -+ -+ if (state==0) -+ printk ("i2c-au1x00gpio: adapter with scl=GPIO%d,sda=GPIO%d is working\n", -+ adapter->scl_gpio, adapter->sda_gpio -+ ); -+ return state; -+} -+ -+ -+ -+#if 0 -+static int bit_au1x00gpio_reg(struct i2c_client *client) -+{ -+ return 0; -+} -+ -+static int bit_au1x00gpio_unreg(struct i2c_client *client) -+{ -+ return 0; -+} -+ -+static void bit_au1x00gpio_inc_use(struct i2c_adapter *adap) -+{ -+ MOD_INC_USE_COUNT; -+} -+ -+static void bit_au1x00gpio_dec_use(struct i2c_adapter *adap) -+{ -+ MOD_DEC_USE_COUNT; -+} -+#endif -+ -+ -+ -+static struct i2c_algo_bit_data bit_au1x00gpio_data = { -+ .setsda = bit_au1x00gpio_setsda, -+ .setscl = bit_au1x00gpio_setscl, -+ .getsda = bit_au1x00gpio_getsda, -+ .getscl = bit_au1x00gpio_getscl, -+ .udelay = 80, -+ .mdelay = 80, -+ .timeout = HZ -+}; -+ -+ -+static struct i2c_adapter bit_au1x00gpio_ops = { -+ .owner = THIS_MODULE, -+ .name = "Au1x00 GPIO I2C adapter", -+ .id = I2C_HW_B_AU1x00GPIO, -+}; -+ -+ -+ -+/* -+ * scl_gpio: -+ * 0..31 for primary GPIO's -+ * 200..215 for secondary GPIO's -+ * -+ * sda_gpio: -+ * 0..31 for primary GPIO's -+ * 200..215 for secondary GPIO's -+ * -+ * You can even mix primary and secondary GPIO's. -+ * E.g.: i2c_au1x00gpio_create(4,206); -+ */ -+ -+static int i2c_au1x00gpio_create (int scl_gpio, int sda_gpio) -+{ -+ if ((scl_gpio < 32 || (scl_gpio >= 200 && scl_gpio <= 215)) && -+ (scl_gpio < 32 || (scl_gpio >= 200 && scl_gpio <= 215))) -+ { -+ struct i2c_au1x00gpio *adapter = kmalloc(sizeof(struct i2c_au1x00gpio), -+ GFP_KERNEL); -+ if (!adapter) { -+ printk(KERN_ERR "i2c-au1x00-gpio: Unable to malloc.\n"); -+ return -1; -+ } -+ -+ printk(KERN_DEBUG "i2c-au1x00-gpio.o: attaching to SCL=GPIO%d, SDA=GPIO%d\n", -+ scl_gpio, sda_gpio); -+ -+ memset (adapter, 0, sizeof(struct i2c_au1x00gpio)); -+ -+ adapter->adapter = bit_au1x00gpio_ops; -+ -+ adapter->adapter.algo_data = &adapter->bit_au1x00gpio_data; -+ adapter->bit_au1x00gpio_data = bit_au1x00gpio_data; -+ adapter->bit_au1x00gpio_data.data = adapter; -+ -+ adapter->bit_au1x00gpio_data.data = adapter; -+ -+ adapter->scl_gpio = scl_gpio; -+ adapter->sda_gpio = sda_gpio; -+ -+ if (sda_gpio < 32) -+ { -+ adapter->bit_au1x00gpio_data.setsda = bit_au1x00gpio_setsda; -+ adapter->bit_au1x00gpio_data.getsda = bit_au1x00gpio_getsda; -+ adapter->sda_mask = 1<<sda_gpio; -+ } -+ else if (sda_gpio >= 200 && sda_gpio <= 215) -+ { -+ adapter->bit_au1x00gpio_data.setsda = bit_au1x00gpio2_setsda; -+ adapter->bit_au1x00gpio_data.getsda = bit_au1x00gpio2_getsda; -+ adapter->sda_mask = 1<<(sda_gpio-200); -+ } -+ -+ -+ if (scl_gpio < 32) -+ { -+ adapter->bit_au1x00gpio_data.setscl = bit_au1x00gpio_setscl; -+ adapter->bit_au1x00gpio_data.getscl = bit_au1x00gpio_getscl; -+ adapter->scl_mask = 1<<scl_gpio; -+ } -+ else if (scl_gpio >= 200 && scl_gpio <= 215) -+ { -+ adapter->bit_au1x00gpio_data.setscl = bit_au1x00gpio2_setscl; -+ adapter->bit_au1x00gpio_data.getscl = bit_au1x00gpio2_getscl; -+ adapter->scl_mask = 1<<(scl_gpio-200); -+ } -+ -+ au_writel(0L, SYS_PININPUTEN); -+ if (check_i2c_au1x00gpio_adapter(adapter)==0) -+ { -+ adapter->bit_au1x00gpio_data.setsda (adapter, 1); -+ adapter->bit_au1x00gpio_data.setscl (adapter, 1); -+ -+ if (i2c_bit_add_bus(&adapter->adapter) < 0) -+ { -+ printk(KERN_ERR "i2c-au1x00-gpio: Unable to register with I2C.\n"); -+ kfree(adapter); -+ return -1; /* No good */ -+ } -+ -+ adapter->next = adapter_list; -+ adapter_list = adapter; -+ return 0; -+ } -+ } -+ else -+ printk(KERN_ERR "i2c-au1x00-gpio: Invalid argument scl_gpio=%d, sda_gpio=%d.\n", scl_gpio, sda_gpio); -+ return -1; -+} -+ -+ -+ -+static void i2c_au1x00gpio_delete (int scl_gpio, int sda_gpio) -+{ -+ struct i2c_au1x00gpio *adapter, *prev = NULL; -+ -+ for (adapter = adapter_list; adapter; adapter = adapter->next) -+ { -+ if (adapter->scl_gpio == scl_gpio && -+ adapter->sda_gpio == sda_gpio) -+ { -+ i2c_bit_del_bus(&adapter->adapter); -+ if (prev) -+ prev->next = adapter->next; -+ else -+ adapter_list = adapter->next; -+ kfree(adapter); -+ return; -+ } -+ prev = adapter; -+ } -+} -+ -+ -+ -+ -+ -+#ifndef CONFIG_I2C_AU1X00GPIO_SCL -+#define CONFIG_I2C_AU1X00GPIO_SCL (216) -+#endif -+ -+#ifndef CONFIG_I2C_AU1X00GPIO_SDA -+#define CONFIG_I2C_AU1X00GPIO_SDA (217) -+#endif -+ -+static int au1x00gpiopin_scl = CONFIG_I2C_AU1X00GPIO_SCL; -+static int au1x00gpiopin_sda = CONFIG_I2C_AU1X00GPIO_SDA; -+ -+ -+ -+int __init i2c_bit_au1x00gpio_init(void) -+{ -+ printk(KERN_INFO "i2c-au1x00gpio.o: i2c Au1x00 GPIO adapter module version %s (%s)\n", I2C_VERSION, I2C_DATE); -+ -+ if (i2c_au1x00gpio_create (au1x00gpiopin_scl, au1x00gpiopin_sda) == 0) -+ { -+ printk(KERN_INFO "i2c-au1x00gpio.o: registered I2C-Bus for GPIO%d,GPIO%d\n", -+ au1x00gpiopin_scl, au1x00gpiopin_sda -+ ); -+ return 0; -+ } -+ printk(KERN_INFO "i2c-au1x00gpio.o: failed to register I2C-Bus for GPIO%d,GPIO%d\n", -+ au1x00gpiopin_scl, au1x00gpiopin_sda -+ ); -+ return -1; -+} -+ -+ -+void __exit i2c_bit_au1x00gpio_exit(void) -+{ -+ i2c_au1x00gpio_delete (au1x00gpiopin_scl, au1x00gpiopin_sda); -+} -+ -+ -+ -+EXPORT_NO_SYMBOLS; -+ -+MODULE_PARM(au1x00gpiopin_scl, "i"); -+MODULE_PARM_DESC(au1x00gpiopin_scl, "GPIO pin number used for SCL pin."); -+ -+MODULE_PARM(au1x00gpiopin_sda, "i"); -+MODULE_PARM_DESC(au1x00gpiopin_sda, "GPIO pin number used for SDA pin."); -+ -+MODULE_AUTHOR("Michael Stickel <michael@cubic.org>"); -+MODULE_DESCRIPTION("I2C-Bus adapter routines for Au1x00 GPIO adapter."); -+MODULE_LICENSE("GPL"); -+ -+ -+#ifdef MODULE -+int init_module(void) -+{ -+ return i2c_bit_au1x00gpio_init(); -+} -+ -+void cleanup_module(void) -+{ -+ i2c_bit_au1x00gpio_exit(); -+} -+#endif -diff -urN linux-2.4.27-mtx1-lm_sensors-2.8.8/drivers/i2c/Makefile linux-2.4.27-mtx1-lm_sensors-2.8.8-i2cau1x00gpio/drivers/i2c/Makefile ---- linux-2.4.27-mtx1-lm_sensors-2.8.8/drivers/i2c/Makefile 2004-12-13 18:03:18.000000000 +0100 -+++ linux-2.4.27-mtx1-lm_sensors-2.8.8-i2cau1x00gpio/drivers/i2c/Makefile 2004-12-13 18:11:59.000000000 +0100 -@@ -25,6 +25,7 @@ - obj-$(CONFIG_I2C_ALGO_SIBYTE) += i2c-algo-sibyte.o i2c-sibyte.o - obj-$(CONFIG_I2C_MAX1617) += i2c-max1617.o - obj-$(CONFIG_I2C_ALGO_SGI) += i2c-algo-sgi.o -+obj-$(CONFIG_I2C_AU1X00GPIO) += i2c-au1x00gpio.o - obj-$(CONFIG_I2C_ALGO_AU1550) += i2c-algo-au1550.o i2c-au1550.o - - # This is needed for automatic patch generation: sensors code starts here ---- linux-2.4.27-mtx1-lm_sensors-2.8.8/include/linux/i2c-id.h 2004-12-13 21:09:52.000000000 +0100 -+++ linux-2.4.27-mtx1-lm_sensors-2.8.8-i2cau1x00gpio/include/linux/i2c-id.h 2004-12-13 21:36:14.000000000 +0100 -@@ -242,6 +242,7 @@ - #define I2C_HW_B_S3VIA 0x18 /* S3Via ProSavage adapter */ - #define I2C_HW_B_ZR36067 0x19 /* Zoran-36057/36067 based boards */ - #define I2C_HW_B_PCILYNX 0x1a /* TI PCILynx I2C adapter */ -+#define I2C_HW_B_AU1x00GPIO 0x1b /* Au1x00 GPIO adapter */ - - /* --- PCF 8584 based algorithms */ - #define I2C_HW_P_LP 0x00 /* Parallel port interface */ |