diff options
Diffstat (limited to 'drivers/input/keyboard/cypress/issp_driver_routines.c')
-rw-r--r-- | drivers/input/keyboard/cypress/issp_driver_routines.c | 461 |
1 files changed, 0 insertions, 461 deletions
diff --git a/drivers/input/keyboard/cypress/issp_driver_routines.c b/drivers/input/keyboard/cypress/issp_driver_routines.c deleted file mode 100644 index f80c96361b0..00000000000 --- a/drivers/input/keyboard/cypress/issp_driver_routines.c +++ /dev/null @@ -1,461 +0,0 @@ -#include "issp_revision.h" -#ifdef PROJECT_REV_304 -/* Copyright 2006-2007, Cypress Semiconductor Corporation. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONRTACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, - WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - Cypress reserves the right to make changes without further notice to the - materials described herein. Cypress does not assume any liability arising - out of the application or use of any product or circuit described herein. - Cypress does not authorize its products for use as critical components in - life-support systems where a malfunction or failure may reasonably be - expected to result in significant injury to the user. The inclusion of - Cypress� product in a life-support systems application implies that the - manufacturer assumes all risk of such use and in doing so indemnifies - Cypress against all charges. - - Use may be limited by and subject to the applicable Cypress software - license agreement. - ---------------------------------------------------------------------------*/ - -#include <linux/module.h> - -#include <linux/init.h> -#include <linux/fs.h> -#include <linux/i2c.h> -#include <linux/interrupt.h> -#include <linux/irq.h> -#include <linux/sched.h> -#include <linux/pm.h> -#include <linux/sysctl.h> -#include <linux/proc_fs.h> -#include <linux/delay.h> -#include <linux/platform_device.h> -#include <linux/input.h> -#include <linux/gpio.h> -#include <linux/miscdevice.h> -#include <linux/uaccess.h> -#include <linux/earlysuspend.h> -#include <linux/io.h> -#include <linux/hrtimer.h> - -/*part specific constants and macros*/ -/*mhsong #include <m8c.h>*/ -/*PSoC API definitions for all User Modules*/ -/*mhsong #include "PSoCAPI.h"*/ -#include "issp_defs.h" -#include "issp_errors.h" -#include "issp_directives.h" -#include <linux/i2c/touchkey_i2c.h> - -extern unsigned char bTargetDataPtr; -extern unsigned char abTargetDataOUT[TARGET_DATABUFF_LEN]; - -/* enable ldo11 */ -extern struct touchkey_i2c *issp_tkey_i2c; - -/* ****************************** PORT BIT MASKS ****************************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* ***************************************************************************/ -#define SDATA_PIN 0x80 /*P1.0 -> P1.4 */ -#define SCLK_PIN 0x40 /*P1.1 -> P1.3 */ -#define XRES_PIN 0x40 /*P2.0 -> P1.6 */ -#define TARGET_VDD 0x08 /*P2.1 */ - -unsigned int nBlockCount = 1; /*test, KIMC */ - - -/* ((((((((((((((((((((((( DEMO ISSP SUBROUTINE SECTION ))))))))))))))))))))))) -* ((((( Demo Routines can be deleted in final ISSP project if not used ))))) -* ((((((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))))))*/ - -/* ============================================================================ -* InitTargetTestData() -* !!!!!!!!!!!!!!!!!!FOR TEST!!!!!!!!!!!!!!!!!!!!!!!!!! -* PROCESSOR_SPECIFIC -* Loads a 64-Byte array to use as test data to program target. Ultimately, -* this data should be fed to the Host by some other means, ie: I2C, RS232, -* etc. Data should be derived from hex file. -* Global variables affected: -* bTargetDataPtr -* abTargetDataOUT -* ==========================================================================*/ -void InitTargetTestData(unsigned char bBlockNum, unsigned char bBankNum) -{ - /*create unique data for each block */ - for (bTargetDataPtr = 0; bTargetDataPtr < TARGET_DATABUFF_LEN; - bTargetDataPtr++) { - abTargetDataOUT[bTargetDataPtr] = nBlockCount; - /*abTargetDataOUT[bTargetDataPtr] = - bTargetDataPtr - + bBlockNum - + bBankNum; */ - } - nBlockCount++; -} - -/* ============================================================================ -* LoadArrayWithSecurityData() -* !!!!!!!!!!!!!!!!!!FOR TEST!!!!!!!!!!!!!!!!!!!!!!!!!! -* PROCESSOR_SPECIFIC -* Most likely this data will be fed to the Host by some other means, ie: I2C, -* RS232, etc., or will be fixed in the host. The security data should come -* from the hex file. -* bStart - the starting byte in the array for loading data -* bLength - the number of byte to write into the array -* bType - the security data to write over the range defined by bStart and -* bLength -* ==========================================================================*/ -void LoadArrayWithSecurityData(unsigned char bStart, unsigned char bLength, - unsigned char bType) -{ - /*Now, write the desired security-bytes for the range specified */ - for (bTargetDataPtr = bStart; bTargetDataPtr < bLength; - bTargetDataPtr++) { - abTargetDataOUT[bTargetDataPtr] = bType; - } -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* Delay() -* This delay uses a simple "nop" loop. With the CPU running at 24MHz, each -* pass of the loop is about 1 usec plus an overhead of about 3 usec. -* total delay = (n + 3) * 1 usec -* To adjust delays and to adapt delays when porting this application, see the -* ISSP_Delays.h file. -* ***************************************************************************/ -void Delay(unsigned char n) -{ - udelay(n); -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** - ***************************************************************************** - ***** PROCESSOR SPECIFIC **** - ***************************************************************************** - ***** USER ATTENTION REQUIRED **** - ***************************************************************************** - *fLoadSecurityData() - *Load security data from hex file into 64 byte host ram buffer. In a fully - *functional program (not a demo) this routine should do the following: - * 1. Read data from security record in hex file into ram buffer. - * 2. Check host ram buffer + record data (Address, # of bytes) against hex - * record checksum at end of record line - * 3. If error reread security data from file or abort - * 4. Exit this Function and Program block - *In this demo routine, all of the security data is set to unprotected (0x00) - *and it returns. - *This function always returns PASS. The flag return is reserving - *functionality for non-demo versions. - ***************************************************************************/ -signed char fLoadSecurityData(unsigned char bBankNum) -{ - /* >>> The following call is for demo use only. <<< - Function LoadArrayWithSecurityData fills buffer for demo - LoadArrayWithSecurityData(0,SECURITY_BYTES_PER_BANK, 0x00); */ - LoadArrayWithSecurityData(0, SECURITY_BYTES_PER_BANK, 0xFF); - /*PTJ: 0x1B (00 01 10 11) is more interesting - security data than 0x00 for testing purposes */ - - /* Note: - Error checking should be added for the final version as noted above. - For demo use this function just returns PASS. */ - return PASS; -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* fSDATACheck() -* Check SDATA pin for high or low logic level and return value to calling -* routine. -* Returns: -* 0 if the pin was low. -* 1 if the pin was high. -* ***************************************************************************/ -unsigned char fSDATACheck(void) -{ - gpio_direction_input(issp_tkey_i2c->pdata->gpio_sda); - if (gpio_get_value(issp_tkey_i2c->pdata->gpio_sda)) - return 1; - else - return 0; -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SCLKHigh() -* Set the SCLK pin High -* ***************************************************************************/ -void SCLKHigh(void) -{ - gpio_direction_output(issp_tkey_i2c->pdata->gpio_scl, 1); -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SCLKLow() -* Make Clock pin Low -* ***************************************************************************/ -void SCLKLow(void) -{ - gpio_direction_output(issp_tkey_i2c->pdata->gpio_scl, 0); -} - -#ifndef RESET_MODE /*Only needed for power cycle mode */ -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetSCLKHiZ() -* Set SCLK pin to HighZ drive mode. -* ***************************************************************************/ -void SetSCLKHiZ(void) -{ - gpio_direction_input(issp_tkey_i2c->pdata->gpio_scl); -} -#endif - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetSCLKStrong() -* Set SCLK to an output (Strong drive mode) -* ***************************************************************************/ -void SetSCLKStrong(void) -{ - /*gpio_direction_output(issp_tkey_i2c->pdata->gpio_scl, 1); */ -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetSDATAHigh() -* Make SDATA pin High -* ***************************************************************************/ -void SetSDATAHigh(void) -{ - gpio_direction_output(issp_tkey_i2c->pdata->gpio_sda, 1); -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetSDATALow() -* Make SDATA pin Low -* ***************************************************************************/ -void SetSDATALow(void) -{ - gpio_direction_output(issp_tkey_i2c->pdata->gpio_sda, 0); -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetSDATAHiZ() -* Set SDATA pin to an input (HighZ drive mode). -* ***************************************************************************/ -void SetSDATAHiZ(void) -{ - gpio_direction_input(issp_tkey_i2c->pdata->gpio_sda); /*ENA-> DIS */ -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetSDATAStrong() -* Set SDATA for transmission (Strong drive mode) -- as opposed to being set to -* High Z for receiving data. -* ***************************************************************************/ -void SetSDATAStrong(void) -{ - /*gpio_direction_output(issp_tkey_i2c->pdata->gpio_sda, 1); */ -} - -#ifdef RESET_MODE -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetXRESStrong() -* Set external reset (XRES) to an output (Strong drive mode). -* ***************************************************************************/ -void SetXRESStrong(void) -{ - /*gpio_tlmm_config(EXT_TSP_RST); - gpio_out(EXT_TSP_RST, GPIO_HIGH_VALUE); - clk_busy_wait(1000); - clk_busy_wait(1000); - clk_busy_wait(1000); */ -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* AssertXRES() -* Set XRES pin High -* ***************************************************************************/ -void AssertXRES(void) -{ -#if 0 - gpio_tlmm_config(EXT_TSP_RST); - gpio_out(EXT_TSP_RST, GPIO_HIGH_VALUE); - clk_busy_wait(1000); - clk_busy_wait(1000); - clk_busy_wait(1000); -#endif -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* DeassertXRES() -* Set XRES pin low. -* ***************************************************************************/ -void DeassertXRES(void) -{ - /*gpio_out(EXT_TSP_RST, GPIO_LOW_VALUE); */ -} -#else -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* SetTargetVDDStrong() -* Set VDD pin (PWR) to an output (Strong drive mode). -* ***************************************************************************/ -void SetTargetVDDStrong(void) -{ -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* ApplyTargetVDD() -* Provide power to the target PSoC's Vdd pin through a GPIO. -* ***************************************************************************/ -void ApplyTargetVDD(void) -{ - int ret; - - gpio_direction_input(issp_tkey_i2c->pdata->gpio_sda); - gpio_direction_input(issp_tkey_i2c->pdata->gpio_scl); - - /* enable ldo */ - ret = issp_tkey_i2c->pdata->resume(); - if (ret == 0) - printk(KERN_ERR "[Touchkey]regulator get fail!!!\n"); - - mdelay(1); -} - -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* RemoveTargetVDD() -* Remove power from the target PSoC's Vdd pin. -* ***************************************************************************/ -void RemoveTargetVDD(void) -{ - issp_tkey_i2c->pdata->suspend(); -} -#endif - -#ifdef USE_TP -/* ********************* LOW-LEVEL ISSP SUBROUTINE SECTION ******************** -* **************************************************************************** -* **** PROCESSOR SPECIFIC **** -* **************************************************************************** -* **** USER ATTENTION REQUIRED **** -* **************************************************************************** -* A "Test Point" sets a GPIO pin of the host processor high or low. -* This GPIO pin can be observed with an oscilloscope to verify the timing of -* key programming steps. TPs have been added in main() that set Port 0, pin 1 -* high during bulk erase, during each block write and during security write. -* The timing of these programming steps should be verified as correct as part -* of the validation process of the final program. -* ***************************************************************************/ -void InitTP(void) -{ -} - -void SetTPHigh(void) -{ -} - -void SetTPLow(void) -{ -} - -void ToggleTP(void) -{ -} -#endif -#endif /*(PROJECT_REV_) */ |