diff options
Diffstat (limited to 'packages/u-boot/u-boot-1.3.2/boc01/007_01_u-boot-1.3.2_CAPSENSE.patch')
-rw-r--r-- | packages/u-boot/u-boot-1.3.2/boc01/007_01_u-boot-1.3.2_CAPSENSE.patch | 342 |
1 files changed, 342 insertions, 0 deletions
diff --git a/packages/u-boot/u-boot-1.3.2/boc01/007_01_u-boot-1.3.2_CAPSENSE.patch b/packages/u-boot/u-boot-1.3.2/boc01/007_01_u-boot-1.3.2_CAPSENSE.patch new file mode 100644 index 0000000000..d4ce2f9df5 --- /dev/null +++ b/packages/u-boot/u-boot-1.3.2/boc01/007_01_u-boot-1.3.2_CAPSENSE.patch @@ -0,0 +1,342 @@ +Index: u-boot-1.3.2/common/cmd_capsense.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ u-boot-1.3.2/common/cmd_capsense.c 2008-11-21 15:35:49.000000000 +0100 +@@ -0,0 +1,90 @@ ++/* ++ * (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 ++int do_capsense (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) ++{ ++ int i; ++ unsigned char address = CONFIG_CAPSENSE_I2C_ADDRESS; ++ unsigned char sensors[] = CONFIG_CAPSENSE_SENSORS; ++ int old_bus,sensor_number; ++ ++ /* 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) ++ { ++ for (i = 0; i < sizeof (sensors); i++) ++ { ++ printf ("CAPSENSE GP%d[%d]: %i\n",sensors[i]&CAPSENSE_INPUT_PORT_MASK?1:0, sensors[i]&CAPSENSE_INPUT_MASK, capsense_get_state(CONFIG_CAPSENSE_I2C_ADDRESS,sensors[i]) ); ++ } ++ ++ } ++ else ++ { ++ if(argc==2) ++ { ++ sensor_number=simple_strtoul (argv[ARG_SENSOR_NUMBER], NULL, 10); ++ if(sensor_number<sizeof (sensors)) ++ { ++ printf ("GP%d[%d]: %i\n",sensors[sensor_number]&CAPSENSE_INPUT_PORT_MASK?1:0, sensors[sensor_number]&CAPSENSE_INPUT_MASK, capsense_get_state(CONFIG_CAPSENSE_I2C_ADDRESS,sensors[sensor_number]) ); ++ } ++ else ++ { ++ printf ("Usage:\n%s\n", cmdtp->usage); ++ } ++ }else ++ { ++ printf ("Usage:\n%s\n", cmdtp->usage); ++ } ++ } ++ ++ /* switch back to original I2C bus */ ++ I2C_SET_BUS(old_bus); ++ ++ return 0; ++} /* do_capsense() */ ++ ++/***************************************************/ ++ ++U_BOOT_CMD( ++ capsense, 2, 1, do_capsense, ++ "capsense - CapSense Express touch-sensing buttons\n", ++ " - Read state of the CapSense Express touch-sensing buttons.\n" ++ "capsense : Read state of all the CapSense Express touch-sensing buttons.\n" ++ "capsense [N] Read state of the CapSense Express touch-sensing buttons N.\n" ++ ); +Index: u-boot-1.3.2/common/Makefile +=================================================================== +--- u-boot-1.3.2.orig/common/Makefile 2008-11-21 15:30:25.000000000 +0100 ++++ u-boot-1.3.2/common/Makefile 2008-11-21 15:35:49.000000000 +0100 +@@ -50,6 +50,7 @@ + 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 1970-01-01 00:00:00.000000000 +0000 ++++ u-boot-1.3.2/drivers/i2c/CY8C201xx.c 2008-11-21 15:35:49.000000000 +0100 +@@ -0,0 +1,106 @@ ++/* ++ * (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 > 0x8C)) ++ 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]; ++} /* capsense_read() */ ++ ++ ++int capsense_write(int address, int reg, int val) ++{ ++ int dlen; ++ uchar data[2]; ++ ++ /* ++ * Validate 'reg' param ++ */ ++ if((reg < 0) || (reg > 0x8C)) ++ 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; ++} /* capsense_write() */ ++ ++int capsense_get_state(int address,int sensors) ++{ ++ int port_values=0; ++ int input=sensors&CAPSENSE_INPUT_MASK; ++ ++ if(sensors&CAPSENSE_INPUT_PORT_MASK) ++ { ++ /*INPUT_PORT 1*/ ++ port_values=capsense_read(address,CAPSENSE_READ_STATUS_REG+1); ++ } ++ else ++ { ++ /*INPUT_PORT 0*/ ++ port_values=capsense_read(address,CAPSENSE_READ_STATUS_REG); ++ } ++ ++ return port_values&(1<<input)?1:0; ++}/* capsense_get_state() */ ++ ++#endif /* CONFIG_CAPSENSE_CY8C201XX */ +Index: u-boot-1.3.2/drivers/i2c/Makefile +=================================================================== +--- u-boot-1.3.2.orig/drivers/i2c/Makefile 2008-03-09 16:20:02.000000000 +0100 ++++ u-boot-1.3.2/drivers/i2c/Makefile 2008-11-21 15:35:49.000000000 +0100 +@@ -29,6 +29,7 @@ + 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 1970-01-01 00:00:00.000000000 +0000 ++++ u-boot-1.3.2/include/capsense.h 2008-11-21 15:35:49.000000000 +0100 +@@ -0,0 +1,90 @@ ++/* ++ * (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. ++ */ ++#ifndef _CAPSENSE_H_ ++#define _CAPSENSE_H_ ++ ++#if defined(CONFIG_CAPSENSE_CY8C201XX) ++ ++#define CONFIG_CAPSENSE /* We have a Capsense */ ++ ++#ifndef CONFIG_CAPSENSE_SENSORS ++#define CONFIG_CAPSENSE_SENSORS {0x02,0x84,0x83} /*config for CY3218-CAPEXP1*/ ++#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,int sensors); ++#endif ++ ++#if !defined(CFG_CAPSENSE_BUS_NUM) ++#define CFG_CAPSENSE_BUS_NUM 0 ++ ++//----------------------------------------------- ++// Register Map and corresponding constants ++//----------------------------------------------- ++ ++ ++#define CAPSENSE_STATUS_PORT_REG (0x02) ++#define CAPSENSE_OUTPUT_PORT_REG (0x04) ++#define CAPSENSE_ENABLE_CAPSENSE_REG (0x06) ++#define CAPSENSE_ENABLE_GPIO_REG (0x08) ++#define CAPSENSE_INVERSION_PORT_REG (0x0A) ++#define CAPSENSE_INTERRUPT_MASK_REG (0x0C) ++#define CAPSENSE_PORT_STATUS_REG (0x0E) ++#define CAPSENSE_DRIVE_MODE_REG (0x10) ++#define CAPSENSE_OPER_SELECT_0_REG (0x1C) ++#define CAPSENSE_OPER_SELECT_1_REG (0x35) ++#define CAPSENSE_NOISE_THRESHOLD_REG (0x4E) ++#define CAPSENSE_SETTLING_TIME_REG (0x50) ++#define CAPSENSE_EXT_CAP_REG (0x51) ++#define CAPSENSE_SNS_RST_REG (0x51) ++#define CAPSENSE_CLK_SEL_REG (0x51) ++#define CAPSENSE_HYSTERESIS_REG (0x52) ++#define CAPSENSE_DEBOUNCE_REG (0x53) ++#define CAPSENSE_NEG_NOISE_THRESHOLD_REG (0x54) ++#define CAPSENSE_FT_PORT_0_REG (0x61) ++#define CAPSENSE_FT_PORT_1_REG (0x66) ++#define CAPSENSE_IDAC_SETTING_PORT_0_REG (0x6B) ++#define CAPSENSE_IDAC_SETTING_PORT_1_REG (0x70) ++#define CAPSENSE_SLIDER_CONFIGURATION_REG (0x75) ++#define CAPSENSE_SLIDER_RESOLUTION_REG (0x77) ++#define CAPSENSE_DEVICE_ID_REG (0x7A) ++#define CAPSENSE_DEVICAPSENSE_REG (0x7C) ++#define CAPSENSE_SLEEP_CONTROL_PIN_REG (0x7E) ++#define CAPSENSE_SLEEP_CONTROL_REG (0x7F) ++#define CAPSENSE_STAY_AWAKE_CNTR_REG (0x80) ++#define CAPSENSE_BUTTON_SEL_REG (0x81) ++#define CAPSENSE_BASELINE_REG (0x82) ++#define CAPSENSE_READ_STATUS_REG (0x88) ++#define CAPSENSE_CENTROID_REG (0x8A) ++ ++#define CAPSENSE_COMMAND_REG (0xA0) ++ ++#define CAPSENSE_INPUT_PORT_MASK (0x10) ++#define CAPSENSE_INPUT_MASK (0x7) ++#endif /* _CAPSENSE_H_ */ +Index: u-boot-1.3.2/include/configs/MPC8313ERDB.h +=================================================================== +--- u-boot-1.3.2.orig/include/configs/MPC8313ERDB.h 2008-11-21 15:34:43.000000000 +0100 ++++ u-boot-1.3.2/include/configs/MPC8313ERDB.h 2008-11-21 15:35:49.000000000 +0100 +@@ -380,6 +380,12 @@ + #define CONFIG_CMDLINE_EDITING 1 + + ++/*Capsense touch sensing buttons*/ ++#define CONFIG_CMD_CAPSENSE ++#define CONFIG_CAPSENSE_CY8C201XX 1 ++#define CONFIG_CAPSENSE_I2C_ADDRESS 0x25 ++#define CONFIG_CAPSENSE_SENSORS {0x02,0x14,0x13} // GP0[2] GP1[4] GP1[3] ++ + /* SPI */ + #define CONFIG_MPC8XXX_SPI + #define CONFIG_HARD_SPI /* SPI with hardware support */ |