summaryrefslogtreecommitdiff
path: root/packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/linux/linux-mtx-1-2.4.27/18-i2c-au1x00gpio.patch
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (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.patch466
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 */