summaryrefslogtreecommitdiff
path: root/packages/u-boot/u-boot-1.3.2/boc01/007_01_u-boot-1.3.2_CAPSENSE.patch
diff options
context:
space:
mode:
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.patch342
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 */