diff options
Diffstat (limited to 'packages/u-boot/u-boot-1.3.2/boc01/007-090217-CAPSENSE.patch')
-rw-r--r-- | packages/u-boot/u-boot-1.3.2/boc01/007-090217-CAPSENSE.patch | 546 |
1 files changed, 0 insertions, 546 deletions
diff --git a/packages/u-boot/u-boot-1.3.2/boc01/007-090217-CAPSENSE.patch b/packages/u-boot/u-boot-1.3.2/boc01/007-090217-CAPSENSE.patch deleted file mode 100644 index 1b7630536f..0000000000 --- a/packages/u-boot/u-boot-1.3.2/boc01/007-090217-CAPSENSE.patch +++ /dev/null @@ -1,546 +0,0 @@ -Index: u-boot-1.3.2/common/cmd_capsense.c -=================================================================== ---- /dev/null -+++ u-boot-1.3.2/common/cmd_capsense.c -@@ -0,0 +1,105 @@ -+/* -+ * (C) Copyright 2008 -+ * Alexandre Coffignal, CénoSYS, alexandre.coffignal@cenosys.com -+ * -+ * See file CREDITS for list of people who contributed to this -+ * project. -+ * -+ * 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 -+ * -+ * CapSense Express touch-sensing buttons -+ */ -+ -+#include <common.h> -+#include <config.h> -+#include <command.h> -+ -+#include <capsense.h> -+#include <i2c.h> -+ -+#define ARG_SENSOR_NUMBER 1 -+ -+#define ARG_CMD 1 -+#define ARG_OLD_ADDRESS 2 -+ -+ -+int do_capsense (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) -+{ -+ int i; -+ unsigned char sensors[] = CONFIG_CAPSENSE_SENSORS; -+ int old_bus, old_address; -+ char port[2]; -+ /* switch to correct I2C bus */ -+ old_bus = I2C_GET_BUS(); -+ I2C_SET_BUS(CFG_CAPSENSE_BUS_NUM); -+ -+ /* -+ * Loop through sensors, read -+ * state, and output it. -+ */ -+ if(argc==1) -+ { -+ port[0]=capsense_get_state(CONFIG_CAPSENSE_I2C_ADDRESS,0); -+ port[1]=capsense_get_state(CONFIG_CAPSENSE_I2C_ADDRESS,1); -+ capsense_get_state(CONFIG_CAPSENSE_I2C_ADDRESS,1); -+ printf ("P0 0x%02x 0x%02x\n",port[0],port[1]); -+ for (i = 0; i < 8; i++) -+ { -+ if(sensors[0]&(1<<i)) -+ { -+ printf ("GP0[%d]: %i\n",i,port[0]&(1<<i)?1:0); -+ } -+ if(sensors[1]&(1<<i)) -+ { -+ printf ("GP1[%d]: %i\n",i,port[1]&(1<<i)?1:0); -+ } -+ -+ } -+ } -+ else -+ { -+ if ( strncmp(argv[ARG_CMD], "config", 3) == 0 ) { -+ if ( argc == 3 ) { -+ old_address=simple_strtoul (argv[ARG_OLD_ADDRESS], NULL, 10); -+ if ( capsense_change_i2c_address(old_address, CONFIG_CAPSENSE_I2C_ADDRESS) != 0 ) -+ printf("failed to change i2c address\n"); -+ else -+ printf("i2c address changed to 0x%02X\n", CONFIG_CAPSENSE_I2C_ADDRESS); -+ } -+ -+ capsense_config(CONFIG_CAPSENSE_I2C_ADDRESS); -+ capsense_store_nvm(CONFIG_CAPSENSE_I2C_ADDRESS); -+ } -+ else { -+ printf ("Usage:\n%s\n", cmdtp->help); -+ } -+ } -+ -+ /* switch back to original I2C bus */ -+ I2C_SET_BUS(old_bus); -+ -+ return 0; -+} /* do_capsense() */ -+ -+ -+/***************************************************/ -+ -+U_BOOT_CMD( -+ capsense, 4, 1, do_capsense, -+ "capsense - CapSense Express touch-sensing buttons\n", -+ "capsense\n Read state of the CapSense Express touch-sensing buttons.\n" -+ "capsense config [<old i2c address>]\n Setup default capsense configuration.\n" -+ ); -Index: u-boot-1.3.2/common/Makefile -=================================================================== ---- u-boot-1.3.2.orig/common/Makefile -+++ u-boot-1.3.2/common/Makefile -@@ -50,6 +50,7 @@ endif - COBJS-$(CONFIG_CMD_DISPLAY) += cmd_display.o - COBJS-$(CONFIG_CMD_DOC) += cmd_doc.o - COBJS-$(CONFIG_CMD_DTT) += cmd_dtt.o -+COBJS-$(CONFIG_CMD_CAPSENSE) += cmd_capsense.o - COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o - COBJS-y += cmd_eeprom.o - COBJS-$(CONFIG_CMD_ELF) += cmd_elf.o -Index: u-boot-1.3.2/drivers/i2c/CY8C201xx.c -=================================================================== ---- /dev/null -+++ u-boot-1.3.2/drivers/i2c/CY8C201xx.c -@@ -0,0 +1,289 @@ -+/* -+ * (C) Copyright 2008 -+ * Alexandre Coffignal, CénoSYS, alexandre.coffignal@cenosys.com -+ * -+ * See file CREDITS for list of people who contributed to this -+ * project. -+ * -+ * 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 -+ */ -+ -+/* -+ * CapSense Express touch-sensing buttons -+ */ -+ -+#include <common.h> -+ -+#ifdef CONFIG_CAPSENSE_CY8C201XX -+ -+#include <i2c.h> -+#include <capsense.h> -+ -+int capsense_read(int address, int reg) -+{ -+ int dlen; -+ uchar data[2]; -+ -+ /* -+ * Validate 'reg' param -+ */ -+ if ( (reg < 0) || (reg > 0xA1) ) -+ return -1; -+ -+ /* -+ * Prepare to handle 1 byte result. -+ */ -+ dlen = 1; -+ -+ /* -+ * Now try to read the register. -+ */ -+ if (i2c_read(address, reg, 1, data, dlen) != 0) -+ return -1; -+ -+ return (int)data[0]; -+} -+ -+ -+int capsense_write(int address, int reg, int val) -+{ -+ int dlen; -+ uchar data[2]; -+ -+ /* -+ * Validate 'reg' param -+ */ -+ if((reg < 0) || (reg > 0xA1)) -+ return -1; -+ -+ /* -+ * Handle 1 byte values. -+ */ -+ dlen = 1; -+ data[0] = (char)(val & 0xff); -+ -+ /* -+ * Write value to register. -+ */ -+ if (i2c_write(address, reg, 1, data, dlen) != 0) -+ return 1; -+ -+ return 0; -+} -+ -+ -+int capsense_write_N(int address, int reg, char *data, int dlen) -+{ -+ /* -+ * Validate 'reg' param -+ */ -+ if ( (reg < 0) || (reg > 0xA1) ) -+ return -1; -+ -+ /* -+ * Write value to register. -+ */ -+ if ( i2c_write(address, reg, 1, data, dlen) != 0 ) -+ return 1; -+ -+ return 0; -+} -+ -+ -+int capsense_get_state(int address,char port) -+{ -+ return capsense_read(address,CAPSENSE_REG_READ_STATUS+port); -+} -+ -+ -+int capsense_change_i2c_address(char old_address,char new_address) -+{ -+ unsigned char data[4]; -+ int read_address; -+ printf("capsense change i2c address\n"); -+ //checking if the I2C address is in the limits ( I2C address can have a value from 0 to 127 ) -+ if((old_address>0x7F)||(new_address>0x7F)) -+ { -+ printf("I2C address is not in the limits\n"); -+ return 1; -+ } -+ -+ //reading old capsence address -+ read_address=capsense_read(old_address, CAPSENSE_REG_I2C_ADDR_DM); -+ if(read_address==0xFFFFFFFF) -+ { -+ printf("error reading old capsence address\n"); -+ return 1; //capsense do not respond at new address -+ } -+ -+ if((read_address&0x7F)!=old_address) -+ { -+ printf("reading old capsence address failed\n"); -+ return 1; //Capsense not respond correctly -+ } -+ -+ //writing command for unlocking the I2C device address lock -+ data[0]=0x3C; -+ data[1]=0xA5; -+ data[2]=0x69; -+ if(capsense_write_N(old_address, CAPSENSE_REG_I2C_DEV_LOCK, data , 3)!=0) -+ { -+ printf("writing command for unlocking the I2C device address lock failed\n"); -+ return 1; -+ } -+ -+ //writing the new I2C address to the device I2C address register -+ if(capsense_write(old_address, CAPSENSE_REG_I2C_ADDR_DM,new_address|0x80)!=0) -+ { -+ printf("writing the new I2C address to the device I2C address register failed\n"); -+ return 1; -+ } -+ -+ //writing command for locking the I2C device address lock -+ data[0]=0x96; -+ data[1]=0x5A; -+ data[2]=0xC3; -+ if(capsense_write_N(old_address, CAPSENSE_REG_I2C_DEV_LOCK, data , 3)!=0) -+ { -+ printf("writing command for locking the I2C device failed\n"); -+ return 1; -+ } -+ -+ //reading new capsence address -+ read_address=capsense_read(new_address, CAPSENSE_REG_I2C_ADDR_DM); -+ if(read_address==0xFFFFFFFF) -+ { -+ printf("capsense do not respond at new address\n"); -+ return 1; //capsense do not respond at new address -+ } -+ -+ return 0; -+} -+ -+ -+static char data_GPIO_ENABLE[] = { -+ 0x00, 0x00 // GPIO_ENABLE -+}; -+ -+static char data_CS_ENABLE[] = { -+ 0x1D, 0x10, // CS_ENABLE -+ 0x02, 0x0F, // GPIO_ENABLE -+ 0x00, 0x00, // INVERSION_MASK -+ 0x00, 0x00, // INT_MASK -+ 0x1F, 0x1F, // STATUS_HOLD_MSK -+ 0x00, 0x02, 0x00, 0x00, // DM_PULL_UP0, DM_STRONG0, DM_HIGHZ0, DM_OD_LOW0 -+ 0x00, 0x0F, 0x00, 0x00, // DM_PULL_UP1, DM_STRONG1, DM_HIGHZ1, DM_OD_LOW1 -+}; -+ -+static char data_OUTPUT_PORT[] = { -+ 0x00, 0x00 // OUTPUT_PORT -+}; -+ -+static char data_OP_SEL[] = { -+ 0x00, 0x00, 0x00, 0x00, 0x00, // OP_SEL_00 -+ 0x80, 0x01, 0x00, 0x00, 0x00, // OP_SEL_01 -+ 0x00, 0x00, 0x00, 0x00, 0x00, // OP_SEL_02 -+ 0x00, 0x00, 0x00, 0x00, 0x00, // OP_SEL_03 -+ 0x00, 0x00, 0x00, 0x00, 0x00, // OP_SEL_04 -+ 0x80, 0x10, 0x00, 0x00, 0x00, // OP_SEL_10 -+ 0x80, 0x08, 0x00, 0x00, 0x00, // OP_SEL_11 -+ 0x80, 0x04, 0x00, 0x00, 0x00, // OP_SEL_12 -+ 0x80, 0x00, 0x10, 0x00, 0x00, // OP_SEL_13 -+ 0x00, 0x00, 0x00, 0x00, 0x00, // OP_SEL_14 -+}; -+ -+static char data_CS_NOISE_TH[] = { -+ 0x28, // CS_NOISE_TH -+ 0x64, // CS_BL_UPD_TH -+ 0xA0, // CS_SETL_TIME -+ 0x22, // CS_OTH_SET -+ 0x0A, // CS_HYSTERESIS -+ 0x03, // CS_DEBOUNCE -+ 0x14, // CS_NEG_NOISE_TH -+ 0x14, // CS_LOW_BL_RST -+ 0x00, // CS_FILTERING -+}; -+ -+static char data_CS_SCAN_POS[] = { -+ 0x00, 0x00, 0x00, 0x00, 0x00, // CS_SCAN_POS_0x -+ 0x00, 0x00, 0x00, 0x00, 0x00, // CS_SCAN_POS_1x -+ 0x32, 0x00, 0x32, 0x32, 0x32, // CS_FINGER_TH_0x -+ 0x00, 0x00, 0x00, 0x00, 0x32, // CS_FINGER_TH_1x -+ 0x14, 0x00, 0x0C, 0x0A, 0x14, // CS_IDAC_0x -+ 0x00, 0x00, 0x00, 0x00, 0x0D // CS_IDAC_1x -+}; -+ -+static char data_SLEEP[] = { -+ 0x00, // SLEEP_PIN -+ 0x20, // SLEEP_CTRL -+ 0x00, // SLEEP_SA_CTR -+}; -+ -+int capsense_config(char address) -+{ -+ printf("Setting default capsense configuration at i2c address 0x%02X...\n", address); -+ -+ //entering setup operation mode -+ if ( capsense_write(address, CAPSENSE_COMMAND_REG, CAPSENSE_CMD_SETUP_OPERATION_MODE) != 0 ) { -+ printf("CAPSENSE_COMMAND_REG SETUP_OPERATION_MODE\n"); -+ return 1; -+ } -+ if ( capsense_write_N(address, CAPSENSE_REG_GPIO_ENABLE, data_GPIO_ENABLE, sizeof(data_GPIO_ENABLE)) != 0 ) { -+ printf("CAPSENSE_REG_GPIO_ENABLE\n"); -+ return 1; -+ } -+ if ( capsense_write_N(address, CAPSENSE_REG_CS_ENABLE, data_CS_ENABLE, sizeof(data_CS_ENABLE)) != 0 ) { -+ printf("CAPSENSE_REG_CS_ENABLE\n"); -+ return 1; -+ } -+ if ( capsense_write_N(address, CAPSENSE_REG_OUTPUT_PORT, data_OUTPUT_PORT, sizeof(data_OUTPUT_PORT)) != 0 ) { -+ printf("CAPSENSE_REG_OUTPUT_PORT\n"); -+ return 1; -+ } -+ if ( capsense_write_N(address, CAPSENSE_REG_OP_SEL_0, data_OP_SEL, sizeof(data_OP_SEL)) != 0 ) { -+ printf("CAPSENSE_REG_OP_SEL_0\n"); -+ return 1; -+ } -+ if ( capsense_write_N(address, CAPSENSE_REG_CS_NOISE_TH, data_CS_NOISE_TH, sizeof(data_CS_NOISE_TH)) != 0 ) { -+ printf("CAPSENSE_REG_CS_NOISE_TH\n"); -+ return 1; -+ } -+ if ( capsense_write_N(address, CAPSENSE_REG_CS_SCAN_POS, data_CS_SCAN_POS, sizeof(data_CS_SCAN_POS)) != 0 ) { -+ printf("CAPSENSE_REG_CS_SCAN_POS\n"); -+ return 1; -+ } -+ if ( capsense_write_N(address, CAPSENSE_REG_SLEEP_PIN, data_SLEEP, sizeof(data_SLEEP)) != 0 ) { -+ printf("CAPSENSE_REG_SLEEP_PIN\n"); -+ return 1; -+ } -+ if ( capsense_write(address, CAPSENSE_COMMAND_REG, CAPSENSE_CMD_NORMAL_OPERATION_MODE) != 0 ) { -+ printf("CAPSENSE_COMMAND_REG NORMAL_OPERATION_MODE\n"); -+ return 1; -+ } -+ -+ printf("...done.\n"); -+ -+ return 0; -+} -+ -+void capsense_store_nvm(char address) -+{ -+ //storing the new current configuration to NVM -+ printf("Storing capsense configuration to NVM\n"); -+ capsense_write(address, CAPSENSE_COMMAND_REG, CAPSENSE_CMD_STORE_TO_NVM); -+} -+ -+#endif /* CONFIG_CAPSENSE_CY8C201XX */ -Index: u-boot-1.3.2/drivers/i2c/Makefile -=================================================================== ---- u-boot-1.3.2.orig/drivers/i2c/Makefile -+++ u-boot-1.3.2/drivers/i2c/Makefile -@@ -29,6 +29,7 @@ COBJS-y += fsl_i2c.o - COBJS-y += omap1510_i2c.o - COBJS-y += omap24xx_i2c.o - COBJS-y += tsi108_i2c.o -+COBJS-y += CY8C201xx.o - - COBJS := $(COBJS-y) - SRCS := $(COBJS:.o=.c) -Index: u-boot-1.3.2/include/capsense.h -=================================================================== ---- /dev/null -+++ u-boot-1.3.2/include/capsense.h -@@ -0,0 +1,95 @@ -+/* -+ * (C) Copyright 2008 -+ * Alexandre Coffignal, CénoSYS, alexandre.coffignal@cenosys.com -+ * -+ * See file CREDITS for list of people who contributed to this -+ * project. -+ * -+ * 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 USCY8C201xx.c:234:A -+ */ -+ -+/* -+ * CapSense Express touch-sensing buttons. -+ */ -+#ifndef _CAPSENSE_H_ -+#define _CAPSENSE_H_ -+ -+#if defined(CONFIG_CAPSENSE_CY8C201XX) -+ -+#define CONFIG_CAPSENSE /* We have a Capsense */ -+ -+#ifndef CONFIG_CAPSENSE_SENSORS -+/*config for CY3218-CAPEXP1*/ -+#define CONFIG_CAPSENSE_LED {0x05,0x02} // port 0-{0,3} port 1-{2} -+#define CONFIG_CAPSENSE_SENSOR {0x02,0x0C} // port 0-{2} port 1-{3,4} -+#endif -+#endif /* CONFIG_CAPSENSE_SENSORS */ -+ -+extern int capsense_read(int address, int reg); -+extern int capsense_write(int address, int reg, int val); -+extern int capsense_get_state(int address,char port); -+extern int capsense_change_i2c_address(char old_address,char new_address); -+extern int capsense_config(char address); -+extern void capsense_store_nvm(char address); -+#endif -+ -+#if !defined(CFG_CAPSENSE_BUS_NUM) -+#define CFG_CAPSENSE_BUS_NUM 1 -+ -+//----------------------------------------------- -+// Register Map and corresponding constants -+//----------------------------------------------- -+ -+ -+#define CAPSENSE_REG_STATUS_PORT 0x02 -+#define CAPSENSE_REG_OUTPUT_PORT 0x04 -+#define CAPSENSE_REG_CS_ENABLE 0x06 -+#define CAPSENSE_REG_GPIO_ENABLE 0x08 -+#define CAPSENSE_REG_INVERSION_MASK 0x0A -+#define CAPSENSE_REG_INT_MASK 0x0C -+#define CAPSENSE_REG_STATUS_HOLD_MSK 0x0E -+#define CAPSENSE_REG_DRIVE_MODE 0x10 -+#define CAPSENSE_REG_OP_SEL_0 0x1C -+#define CAPSENSE_REG_OP_SEL_1 0x35 -+#define CAPSENSE_REG_CS_NOISE_TH 0x4E -+#define CAPSENSE_REG_CS_SETL_TIME 0x50 -+#define CAPSENSE_REG_CS_OTH_SET 0x51 -+#define CAPSENSE_REG_CS_HYSTERESIS 0x52 -+#define CAPSENSE_REG_CS_DEBOUNCE 0x53 -+#define CAPSENSE_REG_CS_NEG_NOISE_TH 0x54 -+#define CAPSENSE_REG_CS_SCAN_POS 0x57 -+#define CAPSENSE_REG_CS_FINGER_TH 0x61 -+#define CAPSENSE_REG_CS_IDAC 0x6B -+#define CAPSENSE_REG_CS_SLID_CONFIG 0x75 -+#define CAPSENSE_REG_CS_SLID_MUL 0x77 -+#define CAPSENSE_REG_I2C_DEV_LOCK 0x79 -+#define CAPSENSE_REG_DEVICE_ID 0x7A -+#define CAPSENSE_REG_I2C_ADDR_DM 0x7C -+#define CAPSENSE_REG_SLEEP_PIN 0x7E -+#define CAPSENSE_REG_SLEEP_CTRL 0x7F -+#define CAPSENSE_REG_SLEEP_SA_CTR 0x80 -+#define CAPSENSE_REG_CS_READ_BUTTON 0x81 -+#define CAPSENSE_REG_CS_READ_BL 0x82 -+#define CAPSENSE_REG_READ_STATUS 0x88 -+#define CAPSENSE_REG_READ_CEN_POS 0x8A -+ -+#define CAPSENSE_COMMAND_REG 0xA0 -+ -+#define CAPSENSE_CMD_STORE_TO_NVM 0x01 -+#define CAPSENSE_CMD_NORMAL_OPERATION_MODE 0x07 -+#define CAPSENSE_CMD_SETUP_OPERATION_MODE 0x08 -+ -+#endif /* _CAPSENSE_H_ */ -Index: u-boot-1.3.2/include/configs/MPC8313ERDB.h -=================================================================== ---- u-boot-1.3.2.orig/include/configs/MPC8313ERDB.h -+++ u-boot-1.3.2/include/configs/MPC8313ERDB.h -@@ -407,6 +407,13 @@ - #define CFG_DTT_MAX_TEMP 70 - #define CFG_DTT_MIN_TEMP -30 - -+/*Capsense touch sensing buttons (Cpe board)*/ -+#define CONFIG_CMD_CAPSENSE -+#define CONFIG_CAPSENSE_CY8C201XX 1 -+#define CONFIG_CAPSENSE_I2C_ADDRESS 0x25 -+#define CONFIG_CAPSENSE_LEDS {0x02,0x0F} // port 0-{1} port 1-{0,1,2,3} -+#define CONFIG_CAPSENSE_SENSORS {0x1D,0x10} // port 0-{0,2,3,4} port 1-{4} -+ - /* - * Miscellaneous configurable options - */ |