diff options
-rw-r--r-- | drivers/input/keyboard/cypress/Makefile | 2 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/cypress-touchkey.c | 296 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_defs.h | 101 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_delays.h | 87 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_directives.h | 474 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_driver_routines.c | 461 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_errors.h | 65 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_extern.h | 100 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_main.c | 937 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_revision.h | 65 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_routines.c | 1044 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_vectors.h | 1146 |
12 files changed, 1 insertions, 4777 deletions
diff --git a/drivers/input/keyboard/cypress/Makefile b/drivers/input/keyboard/cypress/Makefile index dd0d5b66ea6b..51454c37720c 100644 --- a/drivers/input/keyboard/cypress/Makefile +++ b/drivers/input/keyboard/cypress/Makefile @@ -2,4 +2,4 @@ # Makefile for the Cypress touchkey driver # -obj-$(CONFIG_KEYBOARD_CYPRESS_TOUCH) += cypress-touchkey.o issp_driver_routines.o issp_main.o issp_routines.o
\ No newline at end of file +obj-$(CONFIG_KEYBOARD_CYPRESS_TOUCH) += cypress-touchkey.o diff --git a/drivers/input/keyboard/cypress/cypress-touchkey.c b/drivers/input/keyboard/cypress/cypress-touchkey.c index 8aafaad73fae..bec49e8bab51 100644 --- a/drivers/input/keyboard/cypress/cypress-touchkey.c +++ b/drivers/input/keyboard/cypress/cypress-touchkey.c @@ -36,7 +36,6 @@ #include <linux/regulator/driver.h> #include <linux/regulator/machine.h> -#include "issp_extern.h" #ifdef CONFIG_TOUCHSCREEN_ATMEL_MXT540E #include <linux/i2c/mxt540e.h> #else @@ -125,7 +124,6 @@ static const struct i2c_device_id sec_touchkey_id[] = { MODULE_DEVICE_TABLE(i2c, sec_touchkey_id); -extern int get_touchkey_firmware(char *version); static int touchkey_led_status; static int touchled_cmd_reversed; @@ -527,140 +525,6 @@ static ssize_t touchkey_threshold_show(struct device *dev, } #endif -#if defined(TK_HAS_FIRMWARE_UPDATE) -static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c) -{ - int retry = 3; - int ret = 0; - char data[3]; - - disable_irq(tkey_i2c->irq); - - - ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3); - if (ret < 0) { - printk(KERN_DEBUG - "[TouchKey] i2c read fail. do not excute firm update.\n"); - data[1] = 0; - data[2] = 0; - } - - printk(KERN_ERR "%s F/W version: 0x%x, Module version:0x%x\n", __func__, - data[1], data[2]); - - tkey_i2c->firmware_ver = data[1]; - tkey_i2c->module_ver = data[2]; - -#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1) \ -|| defined(CONFIG_MACH_M3) || defined(CONFIG_MACH_T0) - if ((tkey_i2c->firmware_ver < TK_FIRMWARE_VER) && - (tkey_i2c->module_ver <= TK_MODULE_VER)) { -#else - if ((tkey_i2c->firmware_ver < TK_FIRMWARE_VER) && - (tkey_i2c->module_ver == TK_MODULE_VER)) { -#endif - printk(KERN_DEBUG "[TouchKey] firmware auto update excute\n"); - - tkey_i2c->update_status = TK_UPDATE_DOWN; - - while (retry--) { - if (ISSP_main(tkey_i2c) == 0) { - printk(KERN_DEBUG - "[TouchKey]firmware update succeeded\n"); - tkey_i2c->update_status = TK_UPDATE_PASS; - msleep(50); - break; - } - msleep(50); - printk(KERN_DEBUG - "[TouchKey] firmware update failed. retry\n"); - } - if (retry <= 0) { - tkey_i2c->pdata->power_on(0); - tkey_i2c->update_status = TK_UPDATE_FAIL; - printk(KERN_DEBUG - "[TouchKey] firmware update failed.\n"); - } - ret = touchkey_i2c_check(tkey_i2c); - if (ret < 0) { - printk(KERN_DEBUG - "[TouchKey] i2c read fail.\n"); - return TK_UPDATE_FAIL; - } -#if defined(CONFIG_TARGET_LOCALE_KOR) - ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3); - if (ret < 0) { - printk(KERN_DEBUG - "[TouchKey] i2c read fail. do not excute firm update.\n"); - } - tkey_i2c->firmware_ver = data[1]; - tkey_i2c->module_ver = data[2]; -#endif - printk(KERN_DEBUG "[TouchKey] firm ver = %d, module ver = %d\n", - tkey_i2c->firmware_ver, tkey_i2c->module_ver); - } else { - printk(KERN_DEBUG - "[TouchKey] firmware auto update do not excute\n"); - printk(KERN_DEBUG - "[TouchKey] firmware_ver(banary=%d, current=%d)\n", - TK_FIRMWARE_VER, tkey_i2c->firmware_ver); - printk(KERN_DEBUG - "[TouchKey] module_ver(banary=%d, current=%d)\n", - TK_MODULE_VER, tkey_i2c->module_ver); - } - enable_irq(tkey_i2c->irq); - return TK_UPDATE_PASS; -} -#else -static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c) -{ - char data[3]; - int retry; - int ret = 0; - - ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3); - if (ret < 0) { - printk(KERN_DEBUG - "[TouchKey] i2c read fail. do not excute firm update.\n"); - return ret; - } - - printk(KERN_ERR "%s F/W version: 0x%x, Module version:0x%x\n", __func__, - data[1], data[2]); - retry = 3; - - tkey_i2c->firmware_ver = data[1]; - tkey_i2c->module_ver = data[2]; - - if (tkey_i2c->firmware_ver < 0x0A) { - tkey_i2c->update_status = TK_UPDATE_DOWN; - while (retry--) { - if (ISSP_main(tkey_i2c) == 0) { - printk(KERN_ERR - "[TOUCHKEY]Touchkey_update succeeded\n"); - tkey_i2c->update_status = TK_UPDATE_PASS; - break; - } - printk(KERN_ERR "touchkey_update failed...retry...\n"); - } - if (retry <= 0) { - tkey_i2c->pdata->power_on(0); - tkey_i2c->update_status = TK_UPDATE_FAIL; - ret = TK_UPDATE_FAIL; - } - } else { - if (tkey_i2c->firmware_ver >= 0x0A) { - printk(KERN_ERR - "[TouchKey] Not F/W update. Cypess touch-key F/W version is latest\n"); - } else { - printk(KERN_ERR - "[TouchKey] Not F/W update. Cypess touch-key version(module or F/W) is not valid\n"); - } - } - return ret; -} -#endif - #ifndef TEST_JIG_MODE static irqreturn_t touchkey_interrupt(int irq, void *dev_id) { @@ -856,11 +720,6 @@ static int sec_touchkey_early_suspend(struct early_suspend *h) int i; disable_irq(tkey_i2c->irq); - ret = cancel_work_sync(&tkey_i2c->update_work); - if (ret) { - printk(KERN_DEBUG "[Touchkey] enable_irq ret=%d\n", ret); - enable_irq(tkey_i2c->irq); - } /* release keys */ for (i = 1; i < touchkey_count; ++i) { @@ -948,17 +807,6 @@ static int touchkey_i2c_check(struct touchkey_i2c *tkey_i2c) return ret; } -ssize_t touchkey_update_read(struct file *filp, char *buf, size_t count, - loff_t *f_pos) -{ - char data[3] = { 0, }; - - get_touchkey_firmware(data); - put_user(data[1], buf); - - return 1; -} - static ssize_t touch_version_read(struct device *dev, struct device_attribute *attr, char *buf) { @@ -985,67 +833,6 @@ static ssize_t touch_version_write(struct device *dev, return size; } -void touchkey_update_func(struct work_struct *work) -{ - struct touchkey_i2c *tkey_i2c = - container_of(work, struct touchkey_i2c, update_work); - int retry = 3; -#if defined(CONFIG_TARGET_LOCALE_NAATT) - char data[3]; - i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3); - printk(KERN_DEBUG "[%s] F/W version: 0x%x, Module version:0x%x\n", - __func__, data[1], data[2]); -#endif - tkey_i2c->update_status = TK_UPDATE_DOWN; - printk(KERN_DEBUG "[TouchKey] %s start\n", __func__); - touchkey_enable = 0; - while (retry--) { - if (ISSP_main(tkey_i2c) == 0) { - printk(KERN_DEBUG - "[TouchKey] touchkey_update succeeded\n"); - msleep(50); - touchkey_enable = 1; -#if defined(TK_HAS_AUTOCAL) - touchkey_autocalibration(tkey_i2c); -#endif - tkey_i2c->update_status = TK_UPDATE_PASS; - enable_irq(tkey_i2c->irq); - return; - } - tkey_i2c->pdata->power_on(0); - } - enable_irq(tkey_i2c->irq); - tkey_i2c->update_status = TK_UPDATE_FAIL; - printk(KERN_DEBUG "[TouchKey] touchkey_update failed\n"); - return; -} - -static ssize_t touch_update_write(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t size) -{ - struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev); -#ifdef CONFIG_TARGET_LOCALE_NA - if (tkey_i2c->module_ver < 8) { - printk(KERN_DEBUG - "[TouchKey] Skipping f/w update : module_version =%d\n", - tkey_i2c->module_ver); - tkey_i2c->update_status = TK_UPDATE_PASS; - return 1; - } else { -#endif /* CONFIG_TARGET_LOCALE_NA */ - printk(KERN_DEBUG "[TouchKey] touchkey firmware update\n"); - - if (*buf == 'S') { - disable_irq(tkey_i2c->irq); - schedule_work(&tkey_i2c->update_work); - } - return size; -#ifdef CONFIG_TARGET_LOCALE_NA - } -#endif /* CONFIG_TARGET_LOCALE_NA */ -} - static ssize_t touch_update_read(struct device *dev, struct device_attribute *attr, char *buf) { @@ -1320,64 +1107,6 @@ static ssize_t touch_sensitivity_control(struct device *dev, return size; } -static ssize_t set_touchkey_firm_version_show(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - return sprintf(buf, "0x%x\n", TK_FIRMWARE_VER); -} - -static ssize_t set_touchkey_update_show(struct device *dev, - struct device_attribute *attr, - char *buf) -{ - struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev); - int count = 0; - int retry = 3; - - tkey_i2c->update_status = TK_UPDATE_DOWN; - - disable_irq(tkey_i2c->irq); - -#ifdef TEST_JIG_MODE - unsigned char get_touch = 0x40; -#endif - - while (retry--) { - if (ISSP_main(tkey_i2c) == 0) { - printk(KERN_ERR - "[TouchKey]Touchkey_update succeeded\n"); - tkey_i2c->update_status = TK_UPDATE_PASS; - count = 1; - msleep(50); - break; - } - printk(KERN_ERR "touchkey_update failed... retry...\n"); - } - if (retry <= 0) { - /* disable ldo11 */ - tkey_i2c->pdata->power_on(0); - count = 0; - printk(KERN_ERR "[TouchKey]Touchkey_update fail\n"); - tkey_i2c->update_status = TK_UPDATE_FAIL; - enable_irq(tkey_i2c->irq); - return count; - } - -#ifdef TEST_JIG_MODE - i2c_touchkey_write(tkey_i2c->client, &get_touch, 1); -#endif - -#if defined(TK_HAS_AUTOCAL) - touchkey_autocalibration(tkey_i2c); -#endif - - enable_irq(tkey_i2c->irq); - - return count; - -} - static ssize_t set_touchkey_firm_version_read_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -1451,8 +1180,6 @@ static DEVICE_ATTR(keypad_enable, S_IRUGO|S_IWUSR, sec_keypad_enable_show, static DEVICE_ATTR(recommended_version, S_IRUGO | S_IWUSR | S_IWGRP, touch_version_read, touch_version_write); -static DEVICE_ATTR(updated_version, S_IRUGO | S_IWUSR | S_IWGRP, - touch_update_read, touch_update_write); static DEVICE_ATTR(brightness, S_IRUGO | S_IWUSR | S_IWGRP, NULL, touchkey_led_control); static DEVICE_ATTR(touchkey_menu, S_IRUGO | S_IWUSR | S_IWGRP, @@ -1467,12 +1194,8 @@ static DEVICE_ATTR(touchkey_search, S_IRUGO, touchkey_search_show, NULL); static DEVICE_ATTR(touch_sensitivity, S_IRUGO | S_IWUSR | S_IWGRP, NULL, touch_sensitivity_control); -static DEVICE_ATTR(touchkey_firm_update, S_IRUGO | S_IWUSR | S_IWGRP, - set_touchkey_update_show, NULL); static DEVICE_ATTR(touchkey_firm_update_status, S_IRUGO | S_IWUSR | S_IWGRP, set_touchkey_firm_status_show, NULL); -static DEVICE_ATTR(touchkey_firm_version_phone, S_IRUGO | S_IWUSR | S_IWGRP, - set_touchkey_firm_version_show, NULL); static DEVICE_ATTR(touchkey_firm_version_panel, S_IRUGO | S_IWUSR | S_IWGRP, set_touchkey_firm_version_read_show, NULL); #ifdef LED_LDO_WITH_REGULATOR @@ -1503,7 +1226,6 @@ static DEVICE_ATTR(autocal_stat, S_IRUGO | S_IWUSR | S_IWGRP, static struct attribute *touchkey_attributes[] = { &dev_attr_recommended_version.attr, - &dev_attr_updated_version.attr, &dev_attr_brightness.attr, &dev_attr_touchkey_menu.attr, &dev_attr_touchkey_back.attr, @@ -1512,10 +1234,6 @@ static struct attribute *touchkey_attributes[] = { &dev_attr_touchkey_search.attr, #endif &dev_attr_touch_sensitivity.attr, - &dev_attr_touchkey_firm_update.attr, - &dev_attr_touchkey_firm_update_status.attr, - &dev_attr_touchkey_firm_version_phone.attr, - &dev_attr_touchkey_firm_version_panel.attr, #ifdef LED_LDO_WITH_REGULATOR &dev_attr_touchkey_brightness.attr, #endif @@ -1617,8 +1335,6 @@ static int i2c_touchkey_probe(struct i2c_client *client, return err; } - INIT_WORK(&tkey_i2c->update_work, touchkey_update_func); - tkey_i2c->pdata->power_on(1); msleep(50); @@ -1680,18 +1396,6 @@ static int i2c_touchkey_probe(struct i2c_client *client, tkey_i2c->pdata->led_power_on(1); -#if defined(TK_HAS_FIRMWARE_UPDATE) - ret = touchkey_firmware_update(tkey_i2c); - if (ret < 0) { - printk(KERN_ERR - "[Touchkey]: failed firmware updating process (%d)\n", - ret); - input_unregister_device(input_dev); - touchkey_probe = false; - return -EBUSY; - } -#endif - #ifdef CONFIG_HAS_EARLYSUSPEND tkey_i2c->early_suspend.suspend = (void *)sec_touchkey_early_suspend; diff --git a/drivers/input/keyboard/cypress/issp_defs.h b/drivers/input/keyboard/cypress/issp_defs.h deleted file mode 100644 index 58783002e2e7..000000000000 --- a/drivers/input/keyboard/cypress/issp_defs.h +++ /dev/null @@ -1,101 +0,0 @@ -// filename: ISSP_Defs.h -#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. - ---------------------------------------------------------------------------*/ -#ifndef INC_ISSP_DEFS -#define INC_ISSP_DEFS - -#include "issp_directives.h" - -// Block-Verify Uses 64-Bytes of RAM -// #define TARGET_DATABUFF_LEN 64 -#define TARGET_DATABUFF_LEN 128 // **** CY8C20x66 Device **** - -// The number of Flash blocks in each part is defined here. This is used in -// main programming loop when programming and verifying the blocks. - -#ifdef CY8CTMx30x // **** CY8C20x66 Device **** -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 256 -#define SECURITY_BYTES_PER_BANK 64 -#endif - -#ifdef CY8C20x66 // **** CY8C20x66 Device **** -#ifdef CY8C20246 // **** CY8C20x66 Device **** -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 128 -#define SECURITY_BYTES_PER_BANK 64 -#elif defined(CY8C20236) -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 64 -#define SECURITY_BYTES_PER_BANK 64 -#else -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 256 -#define SECURITY_BYTES_PER_BANK 64 -#endif -#endif -#ifdef CY8C21x23 -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 64 -#define SECURITY_BYTES_PER_BANK 64 -#endif -#ifdef CY8C21x34 -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 128 -#define SECURITY_BYTES_PER_BANK 64 -#endif -#ifdef CY8C24x23A -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 64 -#define SECURITY_BYTES_PER_BANK 64 -#endif -#ifdef CY8C24x94 -#define NUM_BANKS 2 -#define BLOCKS_PER_BANK 128 -#define SECURITY_BYTES_PER_BANK 32 -#endif -#ifdef CY8C27x43 -#define NUM_BANKS 1 -#define BLOCKS_PER_BANK 256 -#define SECURITY_BYTES_PER_BANK 64 -#endif -#ifdef CY8C29x66 -#define NUM_BANKS 4 -#define BLOCKS_PER_BANK 128 -#define SECURITY_BYTES_PER_BANK 32 -#endif -#endif //(INC_ISSP_DEFS) -#endif //(PROJECT_REV_) -//end of file ISSP_Defs.h diff --git a/drivers/input/keyboard/cypress/issp_delays.h b/drivers/input/keyboard/cypress/issp_delays.h deleted file mode 100644 index e727310ff125..000000000000 --- a/drivers/input/keyboard/cypress/issp_delays.h +++ /dev/null @@ -1,87 +0,0 @@ -// filename: ISSP_Delays.h -#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. - ------------------------------------------------------------------------------*/ -#ifndef INC_ISSP_DELAYS -#define INC_ISSP_DELAYS - -// The Delay() routine, in ISSP_Driver_Routines.c, has a delay of n+3 usec, -// where n is the value passed to the routine. This is true for the m8c micro- -// processor in the PSoC when it is running at a CPU clock of 24MHz. -// -// PROCESSOR_SPECIFIC -// If another processor is used, or if the m8c is running at a slower clock -// speed, then the delay parameters will be different. This file makes changing -// the delays simpiler when porting the program to other processors. - -// DELAY_M is the slope of the Delay = Mx + B equation -#define DELAY_M 1 -// DELAY_B is the offset of the delay in Delay = Mx + B. -#define DELAY_B 3 - -/////////////////////////////////////////////////////////////////////////////// -// CAUTION: -// For the above parameters the minimum delay value is 3 (this would result in -// 0 being passed for a minimum delay. A value less than 3 would actually -// create a negative number, causing a very long delay -/////////////////////////////////////////////////////////////////////////////// - -// TRANSITION_TIMEOUT is a loop counter for a 100msec timeout when waiting for -// a high-to-low transition. This is used in the polling loop of -// fDetectHiLoTransition(). Each pass through the loop takes approximately 15 -// usec. 100 msec is about 6740 loops. 13480 -#define TRANSITION_TIMEOUT 0x100000 //6740 - -// XRES_DELAY is the time duration for which XRES is asserted. This defines -// a 63 usec delay. -// The minimum Xres time (from the device datasheet) is 10 usec. -//mhsong #define XRES_CLK_DELAY ((63 - DELAY_B) / DELAY_M) -#define XRES_CLK_DELAY 63 - -// POWER_CYCLE_DELAY is the time required when power is cycled to the target -// device to create a power reset after programming has been completed. The -// actual time of this delay will vary from system to system depending on the -// bypass capacitor size. A delay of 150 usec is used here. -//mhsong #define POWER_CYCLE_DELAY ((150 - DELAY_B) / DELAY_M) -#define POWER_CYCLE_DELAY 150 - -// DELAY_100us delays 100 usec. This is used in fXRESInitializeTargetForISSP to -// time the wait for Vdd to become stable after a power up. A loop runs 10 of -// these for a total delay of 1 msec. -//mhsong #define DELAY100us ((100 - DELAY_B) / DELAY_M) -#define DELAY100us 100 - -#endif //(INC_ISSP_DELAYS) -#endif //(PROJECT_REV_) -//end of file ISSP_Delays.h diff --git a/drivers/input/keyboard/cypress/issp_directives.h b/drivers/input/keyboard/cypress/issp_directives.h deleted file mode 100644 index b6cdddc78fda..000000000000 --- a/drivers/input/keyboard/cypress/issp_directives.h +++ /dev/null @@ -1,474 +0,0 @@ -// filename: ISSP_Directives.h -#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. - -----------------------------------------------------------------------------*/ - -// --------------------- Compiler Directives ---------------------------------- -#ifndef INC_ISSP_DIRECTIVES -#define INC_ISSP_DIRECTIVES - -// This directive will enable a Genral Purpose test-point on P1.7 -// It can be toggled as needed to measure timing, execution, etc... -// 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. - -//JBA -//#define USE_TP - -// **************************************************************************** -// ************* USER ATTENTION REQUIRED: TARGET SUPPLY VOLTAGE *************** -// **************************************************************************** -// This directive causes the proper Initialization vector #3 to be sent -// to the Target, based on what the Target Vdd programming voltage will -// be. Either 5V (if #define enabled) or 3.3V (if #define disabled). - -//JBA -//#define TARGET_VOLTAGE_IS_5V - -// **************************************************************************** -// **************** USER ATTENTION REQUIRED: PROGRAMMING MODE ***************** -// **************************************************************************** -// This directive selects whether code that uses reset programming mode or code -// that uses power cycle programming is use. Reset programming mode uses the -// external reset pin (XRES) to enter programming mode. Power cycle programming -// mode uses the power-on reset to enter programming mode. -// Applying signals to various pins on the target device must be done in a -// deliberate order when using power cycle mode. Otherwise, high signals to GPIO -// pins on the target will power the PSoC through the protection diodes. - -//JBA -// choose the RESET MODE or POWER MODE -// #define RESET_MODE - -// **************************************************************************** -// ****************** USER ATTENTION REQUIRED: TARGET PSOC ******************** -// **************************************************************************** -// The directives below enable support for various PSoC devices. The root part -// number to be programmed should be un-commented so that its value becomes -// defined. All other devices should be commented out. -// Select one device to be supported below: - -/*************** CY8CTMA30x, CY8CTMG30x, CY8CTST30x series by KIMC, 2009.08.11 ***********************************/ -//#define CY8CTST300_36 // CY8CTST300_36LQXI // 2009.08.11, not tested. -//#define CY8CTST300_48 // CY8CTST300_48LTXI // 2009.08.11, not tested. -//#define CY8CTST300_49 // CY8CTST300_49FNXI // 2009.08.11, not tested. -//#define CY8CTMA300_36 // CY8CTMA300_36LQXI // 2009.08.11, Test OK. -//#define CY8CTMA300_48 // CY8CTMA300_48LTXI // 2009.08.11, not tested. -//#define CY8CTMA300_49 // CY8CTMA300_49FNXI // 2009.08.11, not tested. -//#define CY8CTMG300_36 // CY8CTMG300_36LQXI // 2009.08.11, not tested. -//#define CY8CTMG300_48 // CY8CTMG300_48LTXI // 2009.08.11, not tested. -//#define CY8CTMG300_49 // CY8CTMG300_49FNXI // 2009.08.11, not tested. -//#define CY8CTMG300B_36 // CY8CTMG300B_36LQXI // 2009.08.11, not tested. -//#define CY8CTMA300B_36 // CY8CTMA300B_36LQXI // 2009.08.11, not tested. -//#define CY8CTST300B_36 // CY8CTST300B_36LQXI // 2009.08.11, not tested. -//#define CY8CTMA301_36 // CY8CTMA301_36LQXI // 2009.08.11, not tested. -//#define CY8CTMA301_48 // CY8CTMA301_48LTXI // 2009.08.11, not tested. -//#define CY8CTMA301D_36 // CY8CTMA301D_36LQXI // 2009.08.11, not tested. -//#define CY8CTMA301D_48 // CY8CTMA301D_48LTXI // 2009.08.11, not tested. -//#define CY8CTMA300D_36 // CY8CTMA300D_36LQXI // 2009.08.11, not tested. -//#define CY8CTMA300D_48 // CY8CTMA300D_48LTXI // 2009.08.11, not tested. -//#define CY8CTMA300D_49 // CY8CTMA300D_49FNXIT // 2009.08.11, not tested. -/****************************************************************************************************/ - -/*************** CY8CTMG/TST series modified by KJHW, 2009.08.14 *********************************************/ -//#define CY8CTMG110 -//#define CY8CTST200_24PIN -//#define CY8CTST200_32PIN -//#define CY8CTMG200_24PIN -//#define CY8CTMG200_32PIN -/***************************************************************************************************/ - -#define CY8C20236 -// **** CY8C20x66 devices **** -//#define CY8C20246 /// 2009.03.26. kimc -//#define CY8C20266 -//#define CY8C20366 -//#define CY8C20466 -//#define CY8C20566 -//#define CY8C20666 -//#define CY8C20066 -//#define CY8C200661 - -// **** CY8C21x23 devices **** -//#define CY8C21123 -//#define CY8C21223 -//#define CY8C21323 -//#define CY8C21002 - -// **** CY8C21x34 devices **** -//#define CY8C21234 -//#define CY8C21334 -//#define CY8C21434 -//#define CY8C21534 -//#define CY8C21634 -//#define CY8C21001 - -// **** CY8C24x23A devices **** -//#define CY8C24123A -//#define CY8C24223A -//#define CY8C24423A -//#define CY8C24000A - -// **** CY8C24x94 devices **** -//#define CY8C24794 -//#define CY8C24894 -//#define CY8C24994 -//#define CY8C24094 - -// **** CY8C27x34 devices **** -//#define CY8C27143 -//#define CY8C27243 -//#define CY8C27443 -//#define CY8C27543 -//#define CY8C27643 -//#define CY8C27002 - -// **** CY8C29x66 devices **** -//#define CY8C29466 -//#define CY8C29566 -//#define CY8C29666 -//#define CY8C29866 -//#define CY8C29002 - -//----------------------------------------------------------------------------- -// This section sets the Family that has been selected. These are used to -// simplify other conditional compilation blocks. -//----------------------------------------------------------------------------- - -/*************** CY8CTMA30x, CY8CTMG30x, CY8CTST30x series by KIMC, 2009.08.11 ***********************************/ -#ifdef CY8CTST300_36 // CY8CTST300_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTST300_48 // CY8CTST300_48LTXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTST300_49 // CY8CTST300_49FNXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA300_36 // CY8CTMA300_36LQXI // 2009.08.11, test OK -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA300_48 // CY8CTMA300_48LTXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA300_49 // CY8CTMA300_49FNXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMG300_36 // CY8CTMG300_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMG300_48 // CY8CTMG300_48LTXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMG300_49 // CY8CTMG300_49FNXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMG300B_36 // CY8CTMG300B_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA300B_36 // CY8CTMA300B_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTST300B_36 // CY8CTST300B_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA301_36 // CY8CTMA301_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA301_48 // CY8CTMA301_48LTXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA301D_36 // CY8CTMA301D_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA301D_48 // CY8CTMA301D_48LTXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA300D_36 // CY8CTMA300D_36LQXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA300D_48 // CY8CTMA300D_48LTXI // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -#ifdef CY8CTMA300D_49 // CY8CTMA300D_49FNXIT // 2009.08.11, not tested. -#define CY8CTMx30x -#define CY8C20x66 -#endif -/**************************************************/ - -/*************** CY8CTMG/TST series modified by KJHW, 2009.08.14 *********************************************/ - -#ifdef CY8CTMG110 -#define CY8C21x34 -#endif -#ifdef CY8CTST200_24PIN -#define CY8C20x66 -#endif -#ifdef CY8CTST200_32PIN -#define CY8C20x66 -#endif -#ifdef CY8CTMG200_24PIN -#define CY8C20x66 -#endif -#ifdef CY8CTMG200_32PIN -#define CY8C20x66 -#endif - -/***************************************************************************************************/ -#ifdef CY8C20236 -#define CY8C20x66 -#endif -#ifdef CY8C20246 /// 2009.03.26. kimc -#define CY8C20x66 -#endif -#ifdef CY8C20266 -#define CY8C20x66 -#endif -#ifdef CY8C20366 -#define CY8C20x66 -#endif -#ifdef CY8C20466 -#define CY8C20x66 -#endif -#ifdef CY8C20566 -#define CY8C20x66 -#endif -#ifdef CY8C20666 -#define CY8C20x66 -#endif -#ifdef CY8C20066 -#define CY8C20x66 -#endif -#ifdef CY8C200661 -#define CY8C20x66 -#endif - -#ifdef CY8C21123 -#define CY8C21x23 -#endif -#ifdef CY8C21223 -#define CY8C21x23 -#endif -#ifdef CY8C21323 -#define CY8C21x23 -#endif -#ifdef CY8C21002 -#define CY8C21x23 -#endif -#ifdef CY8C21234 -#define CY8C21x34 -#endif -#ifdef CY8C21334 -#define CY8C21x34 -#endif -#ifdef CY8C21434 -#define CY8C21x34 -#endif -#ifdef CY8C21534 -#define CY8C21x34 -#endif -#ifdef CY8C21634 -#define CY8C21x34 -#endif -#ifdef CY8C21001 -#define CY8C21x34 -#endif -#ifdef CY8C24123A -#define CY8C24x23A -#endif -#ifdef CY8C24223A -#define CY8C24x23A -#endif -#ifdef CY8C24423A -#define CY8C24x23A -#endif -#ifdef CY8C24000A -#define CY8C24x23A -#endif -#ifdef CY8C24794 -#define CY8C24x94 -#endif -#ifdef CY8C24894 -#define CY8C24x94 -#endif -#ifdef CY8C24994 -#define CY8C24x94 -#endif -#ifdef CY8C24094 -#define CY8C24x94 -#endif -#ifdef CY8C27143 -#define CY8C27x43 -#endif -#ifdef CY8C27243 -#define CY8C27x43 -#endif -#ifdef CY8C27443 -#define CY8C27x43 -#endif -#ifdef CY8C27543 -#define CY8C27x43 -#endif -#ifdef CY8C27643 -#define CY8C27x43 -#endif -#ifdef CY8C27002 -#define CY8C27x43 -#endif -#ifdef CY8C29466 -#define CY8C29x66 -#endif -#ifdef CY8C29566 -#define CY8C29x66 -#endif -#ifdef CY8C29666 -#define CY8C29x66 -#endif -#ifdef CY8C29866 -#define CY8C29x66 -#endif -#ifdef CY8C29002 -#define CY8C29x66 -#endif - -//----------------------------------------------------------------------------- -// The directives below are used for Krypton. -// See the Krypton programming spec 001-15870 rev *A for more details. (The -// spec uses "mnemonics" instead of "directives" -//----------------------------------------------------------------------------- -#ifdef CY8C20x66 -#define TSYNC - -#define ID_SETUP_1 //PTJ: ID_SETUP_1 is similar to init1_v -#define ID_SETUP_2 //PTJ: ID_SETUP_2 is similar to init2_v -#define SET_BLOCK_NUM -#define CHECKSUM_SETUP //PTJ: CHECKSUM_SETUP_20x66 is the same as CHECKSUM-SETUP in 001-15870 -#define READ_CHECKSUM -#define PROGRAM_AND_VERIFY //PTJ: PROGRAM_BLOCK_20x66 is the same as PROGRAM-AND-VERIFY in 001-15870 -#define ERASE -#define SECURE -#define READ_SECURITY -#define READ_WRITE_SETUP -#define WRITE_BYTE -#define VERIFY_SETUP -#define READ_STATUS -#define READ_BYTE - //READ_ID_WORD //PTJ: 3rd Party Progrmmer will have to write code to handle this directive, we do it out own way in this code, see read_id_v -#endif -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// The directives below are used to define various sets of vectors that differ -// for more than one set of PSoC parts. -//----------------------------------------------------------------------------- -// **** Select a Checksum Setup Vector **** -#ifdef CY8C21x23 -#define CHECKSUM_SETUP_21_27 -#endif -#ifdef CY8C21x34 -#define CHECKSUM_SETUP_21_27 -#endif -#ifdef CY8C24x23A -#define CHECKSUM_SETUP_24_24A -#endif -#ifdef CY8C24x94 -#define CHECKSUM_SETUP_24_29 -#endif -#ifdef CY8C27x43 -#define CHECKSUM_SETUP_21_27 -#endif -#ifdef CY8C29x66 -#define CHECKSUM_SETUP_24_29 -#endif - -// **** Select a Program Block Vector **** - -#ifdef CY8C21x23 -#define PROGRAM_BLOCK_21_24_29 -#endif -#ifdef CY8C21x34 -#define PROGRAM_BLOCK_21_24_29 -#endif -#ifdef CY8C24x23A -#define PROGRAM_BLOCK_21_24_29 -#endif -#ifdef CY8C24x94 -#define PROGRAM_BLOCK_21_24_29 -#endif -#ifdef CY8C27x43 -#define PROGRAM_BLOCK_27 -#endif -#ifdef CY8C29x66 -#define PROGRAM_BLOCK_21_24_29 -#endif - -//----------------------------------------------------------------------------- -// The directives below are used to control switching banks if the device is -// has multiple banks of Flash. -//----------------------------------------------------------------------------- -// **** Select a Checksum Setup Vector **** -#ifdef CY8C24x94 -#define MULTI_BANK -#endif -#ifdef CY8C29x66 -#define MULTI_BANK -#endif - -// ---------------------------------------------------------------------------- -#endif //(INC_ISSP_DIRECTIVES) -#endif //(PROJECT_REV_) -//end of file ISSP_Directives.h 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 f80c96361b02..000000000000 --- 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_) */ diff --git a/drivers/input/keyboard/cypress/issp_errors.h b/drivers/input/keyboard/cypress/issp_errors.h deleted file mode 100644 index e6f0673e286a..000000000000 --- a/drivers/input/keyboard/cypress/issp_errors.h +++ /dev/null @@ -1,65 +0,0 @@ -// filename: ISSP_Errors.h -#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. - ---------------------------------------------------------------------------*/ -#ifndef INC_ISSP_ERRORS -#define INC_ISSP_ERRORS - -// The following are defines for error messages from the ISSP program. -#define PASS 0 -// PASS is used to indicate that a function completed successfully. -#define ERROR -1 -// ERROR is a generic failure used within lower level functions before the -// error is reported. This should not be seen as an error that is reported -// from main. -#define INIT_ERROR 1 -// INIT_ERROR means a step in chip initialization failed. -#define SiID_ERROR 2 -// SiID_ERROR means that the Silicon ID check failed. This happens if the -// target part does not match the device type that the ISSP program is -// configured for. -#define ERASE_ERROR 3 -// ERASE_ERROR means that the bulk erase step failed. -#define BLOCK_ERROR 4 -// BLOCK_ERROR means that a step in programming a Flash block or the verify -// of the block failed. -#define VERIFY_ERROR 5 -// VERIFY_ERROR means that the checksum verification failed. -#define SECURITY_ERROR 6 -// SECURITY_ERROR means that the write of the security information failed. -#define STATUS_ERROR 7 - -#endif //(INC_ISSP_ERRORS) -#endif //(PROJECT_REV_) -//end of file ISSP_Errors.h diff --git a/drivers/input/keyboard/cypress/issp_extern.h b/drivers/input/keyboard/cypress/issp_extern.h deleted file mode 100644 index 94aa536cd857..000000000000 --- a/drivers/input/keyboard/cypress/issp_extern.h +++ /dev/null @@ -1,100 +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. -*/ - -#ifndef INC_ISSP_EXTERN -#define INC_ISSP_EXTERN - -#include "issp_directives.h" -#include <linux/i2c/touchkey_i2c.h> - -extern signed char fXRESInitializeTargetForISSP(void); -extern signed char fPowerCycleInitializeTargetForISSP(void); -extern signed char fEraseTarget(void); -extern unsigned int iLoadTarget(void); -extern void ReStartTarget(void); -extern signed char fVerifySiliconID(void); -extern signed char fAccTargetBankChecksum(unsigned int *); -extern void SetBankNumber(unsigned char); -extern signed char fProgramTargetBlock(unsigned char, unsigned char); -extern signed char fVerifyTargetBlock(unsigned char, unsigned char); -extern signed char fVerifySetup(unsigned char, unsigned char); -extern signed char fReadByteLoop(void); /*PTJ: read bytes after VERIFY-SETUP*/ -extern signed char fSecureTargetFlash(void); - -extern signed char fReadStatus(void); /*PTJ: READ-STATUS*/ -extern signed char fReadCalRegisters(void); -extern signed char fReadWriteSetup(void); /*PTJ: READ-WRITE-SETUP*/ -extern signed char fReadSecurity(void); /*PTJ: READ-SECURITY*/ - -extern signed char fSyncDisable(void); /*PTJ: SYNC-DISABLE rev 307*/ -extern signed char fSyncEnable(void); /*PTJ: SYNC-ENABLE rev 307*/ - -extern void InitTargetTestData(void); -extern void LoadArrayWithSecurityData(unsigned char, unsigned char, - unsigned char); - -extern void LoadProgramData(unsigned char, unsigned char); -extern signed char fLoadSecurityData(unsigned char); -extern void Delay(unsigned char); -extern unsigned char fSDATACheck(void); -extern void SCLKHigh(void); -extern void SCLKLow(void); -#ifndef RESET_MODE /*only needed when power cycle mode*/ -extern void SetSCLKHiZ(void); -#endif -extern void SetSCLKStrong(void); -extern void SetSDATAHigh(void); -extern void SetSDATALow(void); -extern void SetSDATAHiZ(void); -extern void SetSDATAStrong(void); -extern void AssertXRES(void); -extern void DeassertXRES(void); -extern void SetXRESStrong(void); -extern void ApplyTargetVDD(void); -extern void RemoveTargetVDD(void); -extern void SetTargetVDDStrong(void); - -extern unsigned char fIsError; - -#ifdef USE_TP -extern void InitTP(void); -extern void SetTPHigh(void); -extern void SetTPLow(void); -extern void ToggleTP(void); -#endif - -extern int ISSP_main(struct touchkey_i2c *tkey_i2c); - -#endif /*(INC_ISSP_EXTERN)*/ -#endif /*(PROJECT_REV_)*/ diff --git a/drivers/input/keyboard/cypress/issp_main.c b/drivers/input/keyboard/cypress/issp_main.c deleted file mode 100644 index ef273770fd8a..000000000000 --- a/drivers/input/keyboard/cypress/issp_main.c +++ /dev/null @@ -1,937 +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. - ----------------------------------------------------------------------------*/ - -/* ############################################################################ -################### CRITICAL PROJECT CONSTRAINTS ######################## -############################################################################ - -ISSP programming can only occur within a temperature range of 5C to 50C. -- This project is written without temperature compensation and using -programming pulse-widths that match those used by programmers such as the -Mini-Prog and the ISSP Programmer. -This means that the die temperature of the PSoC device cannot be outside -of the above temperature range. -If a wider temperature range is required, contact your Cypress Semi- -conductor FAE or sales person for assistance. - -The project can be configured to program devices at 5V or at 3.3V. -- Initialization of the device is different for different voltages. The -initialization is hardcoded and can only be set for one voltage range. -The supported voltages ranges are 3.3V (3.0V to 3.6V) and 5V (4.75V to -5.25V). See the device datasheet for more details. If varying voltage -ranges must be supported, contact your Cypress Semiconductor FAE or sales -person for assistance. -- ISSP programming for the 2.7V range (2.7V to 3.0V) is not supported. - -This program does not support programming all PSoC Devices -- It does not support obsoleted PSoC devices. A list of devices that are -not supported is shown here: -CY8C22x13 - not supported -CY8C24x23 - not supported (CY8C24x23A is supported) -CY8C25x43 - not supported -CY8C26x43 - not supported -- It does not suport devices that have not been released for sale at the -time this version was created. If you need to ISSP program a newly released -device, please contact Cypress Semiconductor Applications, your FAE or -sales person for assistance. -The CY8C20x23 devices are not supported at the time of this release. - -############################################################################ -##########################################################################*/ - -/* This program uses information found in Cypress Semiconductor application -notes "Programming - In-System Serial Programming Protocol", AN2026. The -version of this application note that applies to the specific PSoC that is -being In-System Serial Programmed should be read and and understood when -using this program. (http:www.cypress.com) - -This project is included with releases of PSoC Programmer software. It is -important to confirm that the latest revision of this software is used when -it is used. The revision of this copy can be found in the Project History -table below. -*/ - -/* -PROJECT HISTORY -date revision author description --------- -------- ------ ----------------------------------------------- -7/23/08 3.04 ptj 1. CPU clock speed set to to 12MHz (default) after - TSYNC is disabled. Previously, it was being set - to 3MHz on accident. This affects the following - mnemonics: - ID_SETUP_1, - VERIFY_SETUP, - ERASE, - SECURE, - CHECKSUM_SETUP, - PROGRAM_AND_VERIFY, - ID_SETUP_2, - SYNC_DISABLE - -6/06/08 3.03 ptj 1. The Verify_Setup section can tell when flash - is fully protected. bTargetStatus[0] shows a - 01h when flash is "W" Full Protection -7/23/08 2. READ-ID-WORD updated to read Revision ID from - Accumulator A and X, registers T,F0h and T,F3h - -5/30/08 3.02 ptj 1. All vectors work. - 2. Main function will execute the - following programming sequence: - . id setup 1 - . id setup 2 - . erase - . program and verify - . verify (although not necessary) - . secure flash - . read security - . checksum - -05/28/08 3.01 ptj TEST CODE - NOT COMPLETE - 1. The sequence surrounding PROGRAM-AND-VERIFY was - improved and works according to spec. - 2. The sequence surroudning VERIFY-SETUP was devel- - oped and improved. - 3. TSYNC Enable is used to in a limited way - 4. Working Vectors: ID-SETUP-1, ID-SETUP-2, ERASE, - PROGRAM-AND-VERIFY, SECURE, VERIFY-SETUP, - CHECKSUM-SETUP - 5. Un-tested Vectors: READ-SECURITY - -05/23/08 3.00 ptj TEST CODE - NOT COMPLETE - 1. This code is a test platform for the development - of the Krypton (cy8c20x66) Programming Sequence. - See 001-15870 rev *A. This code works on "rev B" - silicon. - 2. Host is Hydra 29000, Target is Krypton "rev B" - 3. Added Krypton device support - 4. TYSNC Enable/Disable is not used. - 5. Working Vectors: ID-SETUP-1, ID-SETUP-2, ERASE, - PROGRAM-AND-VERIFY, SECURE - 6. Non-working Vectors: CHECKSUM-SETUP - 7. Un-tested Vectors: READ-SECURITY, VERIFY-SETUP - 8. Other minor (non-SROM) vectors not listed. - -09/23/07 2.11 dkn 1. Added searchable comments for the HSSP app note. - 2. Added new device vectors. - 3. Verified write and erase pulsewidths. - 4. Modified some functions for easier porting to - other processors. - -09/23/06 2.10 mwl 1. Added #define SECURITY_BYTES_PER_BANK to - file issp_defs.h. Modified function - fSecureTargetFlashMain() in issp_routines.c - to use new #define. Modified function - fLoadSecurityData() in issp_driver_routines.c - to accept a bank number. Modified the secure - data loop in main.c to program multiple banks. - - 2. Created function fAccTargetBankChecksum to - read and add the target bank checksum to the - referenced accumulator. This allows the - checksum loop in main.c to function at the - same level of abstraction as the other - programming steps. Accordingly, modified the - checksum loop in main.c. Deleted previous - function fVerifyTargetChecksum(). - -09/08/06 2.00 mwl 1. Array variable abTargetDataOUT was not - getting intialized anywhere and compiled as a - one-byte array. Modified issp_driver_routines.c - line 44 to initialize with TARGET_DATABUFF_LEN. - - 2. Function void LoadProgramData(unsigned char - bBlockNum) in issp_driver_routines.c had only - one parameter bBlockNum but was being called - from function main() with two parameters, - LoadProgramData(bBankCounter, (unsigned char) - iBlockCounter). Modified function - LoadProgramData() to accept both parameters, - and in turn modified InitTargetTestData() to - accept and use both as well. - - 3. Corrected byte set_bank_number[1] - inissp_vectors.h. Was 0xF2, correct value is - 0xE2. - - 4. Corrected the logic to send the SET_BANK_NUM - vectors per the AN2026B flow chart.The previous - code version was sending once per block, but - should have been once per bank. Removed the - conditionally-compiled bank setting code blocks - from the top of fProgramTargetBlock() and - fVerifyTargetBlock() int issp_routines.c and - created a conditionally-compiled subroutine in - that same file called SetBankNumber(). Two - conditionally-compiled calls to SetBankNumber() - were added to main.c(). - - 5. Corrected CY8C29x66 NUM_BANKS and - BLOCKS_PER_BANK definitions in ISSP_Defs.h. - Was 2 and 256 respectively, correct values are - 4 and 128. - - 6. Modified function fVerifyTargetChecksum() - in issp_routines.c to read and accumulate multiple - banks of checksums as required for targets - CY8C24x94 and CY8C29x66. Would have kept same - level of abstraction as other multi-bank functions - in main.c, but this implementation impacted the - code the least. - - 7. Corrected byte checksum_v[26] of - CHECKSUM_SETUP_24_29 in issp_vectors.h. Was 0x02, - correct value is 0x04. - -06/30/06 1.10 jvy Added support for 24x94 and 29x66 devices. -06/09/06 1.00 jvy Changed CPU Clk to 12MHz (from 24MHz) so the - host can run from 3.3V. - Simplified init of security data. -06/05/06 0.06 jvy Version #ifdef added to each file to make sure - all of the file are from the same revision. - Added flags to prevent multiple includes of H - files. - Changed pre-determined data for demo to be - unique for each block. - Changed block verify to check all blocks after - block programming has been completed. - Added SetSCLKHiZ to explicitly set the Clk to - HighZ before power cycle acquire. - Fixed wrong vectors in setting Security. - Fixed wrong vectors in Block program. - Added support for pods -06/05/06 0.05 jvy Comments from code review. First copy checked - into perforce. Code has been updated enough to - compile, by implementing some comments and - fixing others. -06/04/06 0.04 jvy made code more efficient in bReceiveByte(), and - SendVector() by re-arranging so that local vars - could be eliminated. - added defines for the delays used in the code. -06/02/06 0.03 jvy added number of Flash block adjustment to - programming. added power cycle programming - mode support. This is the version initially - sent out for peer review. -06/02/06 0.02 jvy added framework for multiple chip support from - one source code set using compiler directives. - added timeout to high-low trasition detection. - added multiple error message to allow tracking - of failures. -05/30/06 0.01 jvy initial version, - created from DBD's issp_27xxx_v3 program. -*/ - -/* - PSoC In-System Serial Programming (ISSP) Template - This PSoC Project is designed to be used as a template for designs that - require PSoC ISSP Functions. - - This project is based on the AN2026 series of Application Notes. That app - note should be referenced before any modifications to this project are made. - - The subroutines and files were created in such a way as to allow easy cut & - paste as needed. There are no customer-specific functions in this project. - This demo of the code utilizes a PSoC as the Host. - - Some of the subroutines could be merged, or otherwise reduced, but they have - been written as independently as possible so that the specific steps involved - within each function can easily be seen. By merging things, some code-space - savings could be realized. - - As is, and with all features enabled, the project consumes approximately 3500 - bytes of code space, and 19-Bytes of RAM (not including stack usage). The - Block-Verify requires a 64-Byte buffer for read-back verification. This same - buffer could be used to hold the (actual) incoming program data. - - Please refer to the compiler-directives file "directives.h" to see the various - features. - - The pin used in this project are assigned as shown below. The HOST pins are - arbitrary and any 3 pins could be used (the masks used to control the pins - must be changed). The TARGET pins cannot be changed, these are fixed function - pins on the PSoC. - The PWR pin is used to provide power to the target device if power cycle - programming mode is used. - The compiler directive RESET_MODE in ISSP_directives.h - is used to select the programming mode. This pin could control the enable on - a voltage regulator, or could control the gate of a FET that is used to turn - the power to the PSoC on. - The TP pin is a Test Point pin that can be used signal from the host processor - that the program has completed certain tasks. Predefined test points are - included that can be used to observe the timing for bulk erasing, block - programming and security programming. - - SIGNAL HOST TARGET - --------------------- - SDATA P1.7 P1.0 - SCLK P1.6 P1.1 - XRES P2.0 XRES - PWR P2.3 Vdd - TP P0.7 n/a - - For test & demonstration, this project generates the program data internally. - It does not take-in the data from an external source such as I2C, UART, SPI, - etc. However, the program was written in such a way to be portable into such - designs. The spirit of this project was to keep it stripped to the minimum - functions required to do the ISSP functions only, thereby making a portable - framework for integration with other projects. - - The high-level functions have been written in C in order to be portable to - other processors. The low-level functions that are processor dependent, such - as toggling pins and implementing specific delays, are all found in the file - ISSP_Drive_Routines.c. These functions must be converted to equivalent - functions for the HOST processor. Care must be taken to meet the timing - requirements when converting to a new processor. ISSP timing information can - be found in Application Note AN2026. All of the sections of this program - that need to be modified for the host processor have "PROCESSOR_SPECIFIC" in - the comments. By performing a "Find in files" using "PROCESSOR_SPECIFIC" these - sections can easily be identified. - - The variables in this project use Hungarian notation. Hungarian prepends a - lower case letter to each variable that identifies the variable type. The - prefixes used in this program are defined below: - b = byte length variable, signed char and unsigned char - i = 2-byte length variable, signed int and unsigned int - f = byte length variable used as a flag (TRUE = 0, FALSE != 0) - ab = an array of byte length variables - - After this program has been ported to the desired host processor the timing - of the signals must be confirmed. The maximum SCLK frequency must be checked - as well as the timing of the bulk erase, block write and security write - pulses. - - The maximum SCLK frequency for the target device can be found in the device - datasheet under AC Programming Specifications with a Symbol of "Fsclk". - An oscilloscope should be used to make sure that no half-cycles (the high - time or the low time) are shorter than the half-period of the maximum - freqency. In other words, if the maximum SCLK frequency is 8MHz, there can be - no high or low pulses shorter than 1/(2*8MHz), or 62.5 nsec. - - The test point (TP) functions, enabled by the define USE_TP, provide an output - from the host processor that brackets the timing of the internal bulk erase, - block write and security write programming pulses. An oscilloscope, along with - break points in the PSoC ICE Debugger should be used to verify the timing of - the programming. The Application Note, "Host-Sourced Serial Programming" - explains how to do these measurements and should be consulted for the expected - timing of the erase and program pulses.*/ - -/*C main line*/ -#include <linux/module.h> - -#include <linux/init.h> -#include <linux/fs.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/input.h> -#include <linux/gpio.h> -#include <linux/uaccess.h> -#include <linux/io.h> -/* -#include <m8c.h> part specific constants and macros -#include "PSoCAPI.h" PSoC API definitions for all User Modules - ------ Declarations Associated with ISSP Files & Routines ------- - Add these to your project as needed. -*/ -#include "issp_extern.h" -#include "issp_directives.h" -#include "issp_defs.h" -#include "issp_errors.h" -#include <linux/i2c/touchkey_i2c.h> - -struct touchkey_i2c *issp_tkey_i2c; - -unsigned char bBankCounter; -unsigned int iBlockCounter; -unsigned int iChecksumData; -unsigned int iChecksumTarget; - -#define EXT_I2C_SCL_HIGH\ - do {\ - int delay_count;\ - gpio_direction_output(issp_tkey_i2c->pdata->gpio_scl, 1);\ - gpio_direction_input(issp_tkey_i2c->pdata->gpio_scl);\ - delay_count = 100000;\ - while (delay_count--) {\ - if (gpio_get_value(issp_tkey_i2c->pdata->gpio_scl))\ - break;\ - udelay(1);\ - } \ - } while (0); -#define EXT_I2C_SCL_LOW gpio_direction_output(\ - issp_tkey_i2c->pdata->gpio_scl, 0); -#define EXT_I2C_SDA_HIGH gpio_direction_output(\ - issp_tkey_i2c->pdata->gpio_sda, 1); -#define EXT_I2C_SDA_LOW gpio_direction_output(\ - issp_tkey_i2c->pdata->gpio_sda, 0); -#define TRUE 1 -#define FALSE 0 - -static void EXT_I2C_LOW(u32 delay) -{ - EXT_I2C_SDA_LOW; - /*udelay(delay); */ - EXT_I2C_SCL_HIGH; - /*udelay(delay); */ - EXT_I2C_SCL_LOW; - /*udelay(delay); */ -} - -static void EXT_I2C_HIGH(u32 delay) -{ - EXT_I2C_SDA_HIGH; - /*udelay(delay); */ - EXT_I2C_SCL_HIGH; - /*udelay(delay); */ - EXT_I2C_SCL_LOW; - /*udelay(delay); */ -} - -static void EXT_I2C_START(u32 delay) -{ - EXT_I2C_SDA_HIGH; - EXT_I2C_SCL_HIGH; - /*udelay(delay); */ - EXT_I2C_SDA_LOW; - /*udelay(delay); */ - EXT_I2C_SCL_LOW; - /*udelay(delay); */ - -} - -static void EXT_I2C_END(u32 delay) -{ - EXT_I2C_SDA_LOW; - EXT_I2C_SCL_HIGH; - /*udelay(delay); */ - EXT_I2C_SDA_HIGH; -} - -static int EXT_I2C_ACK(u32 delay) -{ - u32 ack; - - /* SDA -> Input */ - gpio_direction_input(issp_tkey_i2c->pdata->gpio_sda); - - udelay(delay); - EXT_I2C_SCL_HIGH; - /*udelay(delay); */ - ack = gpio_get_value(issp_tkey_i2c->pdata->gpio_sda); - EXT_I2C_SCL_LOW; - /*udelay(delay); */ - if (ack) - printk(KERN_DEBUG"EXT_I2C No ACK\n"); - - return ack; -} - -static void EXT_I2C_NACK(u32 delay) -{ - EXT_I2C_SDA_HIGH; - EXT_I2C_SCL_HIGH; - /*udelay(delay); */ - EXT_I2C_SCL_LOW; - /*udelay(delay); */ -} - -static void EXT_I2C_SEND_ACK(u32 delay) -{ - gpio_direction_output(issp_tkey_i2c->pdata->gpio_sda, 0); - EXT_I2C_SCL_HIGH; - /*udelay(delay); */ - EXT_I2C_SCL_LOW; - /*udelay(delay); */ - -} - -#define EXT_I2C_DELAY 1 -/*============================================================ - -Porting section 6. I2C function calling - -Connect baseband i2c function - -Warning 1. !!!! Burst mode is not supported. Transfer 1 byte Only. - -Every i2c packet has to -" START > Slave address > One byte > STOP " at download mode. - -Warning 2. !!!! Check return value of i2c function. - -_i2c_read_(), _i2c_write_() must return -TRUE (1) if success, -FALSE(0) if failed. - -If baseband i2c function returns different value, convert return value. -ex> baseband_return = baseband_i2c_read( slave_addr, pData, cLength ); -return ( baseband_return == BASEBAND_RETURN_VALUE_SUCCESS ); - -Warning 3. !!!! Check Slave address - -Slave address is '0x7F' at download mode. -( Diffrent with Normal touch working mode ) -'0x7F' is original address, -If shift << 1 bit, It becomes '0xFE' - -============================================================*/ - -static int _i2c_read_(unsigned char SlaveAddr, - unsigned char *pData, unsigned char cLength) -{ - unsigned int i; - int delay_count = 10000; - - EXT_I2C_START(EXT_I2C_DELAY); - - SlaveAddr = SlaveAddr << 1; - for (i = 8; i > 1; i--) { - if ((SlaveAddr >> (i - 1)) & 0x1) - EXT_I2C_HIGH(EXT_I2C_DELAY); - else - EXT_I2C_LOW(EXT_I2C_DELAY); - } - - EXT_I2C_HIGH(EXT_I2C_DELAY); - - if (EXT_I2C_ACK(EXT_I2C_DELAY)) { - EXT_I2C_END(EXT_I2C_DELAY); - return FALSE; - } - - udelay(10); - gpio_direction_input(issp_tkey_i2c->pdata->gpio_scl); - delay_count = 100000; - while (delay_count--) { - if (gpio_get_value(issp_tkey_i2c->pdata->gpio_scl)) - break; - udelay(1); - } - while (cLength--) { - *pData = 0; - for (i = 8; i > 0; i--) { - /*udelay(EXT_I2C_DELAY); */ - EXT_I2C_SCL_HIGH; - /*udelay(EXT_I2C_DELAY); */ - *pData |= - (!!(gpio_get_value(issp_tkey_i2c->pdata->gpio_sda)) - << (i - 1)); - /*udelay(EXT_I2C_DELAY); */ - EXT_I2C_SCL_LOW; - /*udelay(EXT_I2C_DELAY); */ - } - - if (cLength) { - EXT_I2C_SEND_ACK(EXT_I2C_DELAY); - udelay(10); - pData++; - gpio_direction_input(issp_tkey_i2c->pdata->gpio_sda); - gpio_direction_input(issp_tkey_i2c->pdata->gpio_scl); - delay_count = 100000; - while (delay_count--) { - if (gpio_get_value - (issp_tkey_i2c->pdata->gpio_scl)) - break; - udelay(1); - } - } else - EXT_I2C_NACK(EXT_I2C_DELAY); - } - - EXT_I2C_END(EXT_I2C_DELAY); - - return TRUE; - -} - -#define TOUCHKEY_ADDRESS 0x20 - -int get_touchkey_firmware(char *version) -{ - int retry = 3; - while (retry--) { - if (_i2c_read_(TOUCHKEY_ADDRESS, version, 3)) - return 0; - - } - return -1; - /*printk(KERN_DEBUG - "%s F/W version: 0x%x, Module version:0x%x\n", - __FUNCTION__, version[1],version[2]); */ -} - -/* ErrorTrap() - Return is not valid from main for PSOC, so this ErrorTrap routine is used. - For some systems returning an error code will work best. For those, the - calls to ErrorTrap() should be replaced with a return(bErrorNumber). For - other systems another method of reporting an error could be added to this - function -- such as reporting over a communcations port.*/ -void ErrorTrap(unsigned char bErrorNumber) -{ -#ifndef RESET_MODE - /* Set all pins to highZ to avoid back - powering the PSoC through the GPIO - protection diodes. */ - SetSCLKHiZ(); - SetSDATAHiZ(); - /* If Power Cycle programming, turn off the target */ - RemoveTargetVDD(); -#endif - printk(KERN_DEBUG"\r\nErrorTrap: errorNumber: %d\n", - bErrorNumber); - - return; -} - -/* ========================================================================= */ -/* MAIN LOOP */ -/* Based on the diagram in the AN2026 */ -/* ========================================================================= */ - -int ISSP_main(struct touchkey_i2c *tkey_i2c) -{ - unsigned long flags; - - issp_tkey_i2c = tkey_i2c; - -/* This example section of commands show the highlevel calls to -perform Target Initialization, SilcionID Test, BulkErase, Target -RAM Load, FLASHBlock Program, and Target Checksum Verification.*/ - - /* >>>> ISSP Programming Starts Here <<<< - Acquire the device through reset or power cycle */ - s3c_gpio_setpull(issp_tkey_i2c->pdata->gpio_scl, S3C_GPIO_PULL_NONE); - s3c_gpio_setpull(issp_tkey_i2c->pdata->gpio_sda, S3C_GPIO_PULL_NONE); - issp_tkey_i2c->pdata->suspend(); - /*msleep(1);*/ - usleep_range(1000, 1000); -#ifdef RESET_MODE - gpio_tlmm_config(LED_26V_EN); - gpio_tlmm_config(EXT_TSP_SCL); - gpio_tlmm_config(EXT_TSP_SDA); - gpio_tlmm_config(LED_RST); - - gpio_out(LED_RST, GPIO_LOW_VALUE); - clk_busy_wait(10); - - gpio_out(LED_26V_EN, GPIO_HIGH_VALUE); - for (temp = 0; temp < 16; temp++) { - clk_busy_wait(1000); - dog_kick(); - } - - /* Initialize the Host & Target for ISSP operations */ - printk(KERN_DEBUG"fXRESInitializeTargetForISSP Start\n"); - - /*INTLOCK(); */ - local_save_flags(flags); - local_irq_disable(); - fIsError = fXRESInitializeTargetForISSP(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - /*INTFREE(); */ -#else - /*INTLOCK(); */ - /*local_irq_save(flags);*/ - /* Initialize the Host & Target for ISSP operations */ - fIsError = fPowerCycleInitializeTargetForISSP(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - /*INTFREE(); */ -#endif /* RESET_MODE */ - -#if 0 /* issp_test_2010 block */ - printk(KERN_DEBUG"fXRESInitializeTargetForISSP END\n"); - - /* Run the SiliconID Verification, and proceed according to result. */ - printk(KERN_DEBUG"fVerifySiliconID START\n"); -#endif - - /*INTLOCK(); */ - /* issp_test_20100709 unblock */ - fVerifySiliconID(); -#if 0 - fIsError = fVerifySiliconID(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } -#endif - - /*INTFREE(); */ - /*local_irq_restore(flags);*/ - /*printk(KERN_DEBUG"fVerifySiliconID END\n"); */ - - /* Bulk-Erase the Device. */ - /*printk(KERN_DEBUG"fEraseTarget START\n"); */ - /*INTLOCK(); */ - fIsError = fEraseTarget(); - /*local_irq_save(flags);*/ - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - /*INTFREE(); */ - /*local_irq_restore(flags);*/ - /*printk(KERN_DEBUG"fEraseTarget END\n"); */ - -/*============================================================== -Program Flash blocks with predetermined data. -In the final application -this data should come from the HEX output of PSoC Designer.*/ - /*printk(KERN_DEBUG"Program Flash Blocks Start\n");*/ - - /* Calculte the device checksum as you go*/ - iChecksumData = 0; - /*PTJ: NUM_BANKS should be 1 for Krypton*/ - for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) { - /*local_irq_save(flags);*/ - for (iBlockCounter = 0; iBlockCounter < BLOCKS_PER_BANK; - iBlockCounter++) { - /*printk(KERN_DEBUG - "Program Loop : iBlockCounter %d\n", - iBlockCounter); */ - /*INTLOCK(); */ - /* local_irq_save(flags); */ - - /*PTJ: READ-WRITE-SETUP used here - to select SRAM Bank 1, and TSYNC Enable */ -#ifdef CY8C20x66 - fIsError = fSyncEnable(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - fIsError = fReadWriteSetup(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } -#endif - - iChecksumData += iLoadTarget(); - - /*dog_kick(); */ - fIsError = fProgramTargetBlock(bBankCounter, - (unsigned char)iBlockCounter); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - /*PTJ: READ-STATUS after PROGRAM-AND-VERIFY */ -#ifdef CY8C20x66 - fIsError = fReadStatus(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } -#endif - /*INTFREE(); */ - /*local_irq_restore(flags);*/ - } - /*local_irq_restore(flags);*/ - } - - /*printk(KERN_DEBUG"\r\n Program Flash Blocks End\n"); */ - -#if 0 /* verify check pass or check. */ - printk(KERN_DEBUG"\r\n Verify Start", 0, 0, 0); - /*======================================================= - PTJ: Doing Verify - PTJ: this code isnt needed in the program flow - because we use PROGRAM-AND-VERIFY (ProgramAndVerify SROM Func) - PTJ: which has Verify built into it. - Verify included for completeness in case host desires - to do a stand-alone verify at a later date.*/ - for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) { - for (iBlockCounter = 0; iBlockCounter < BLOCKS_PER_BANK; - iBlockCounter++) { - printk(KERN_DEBUG"Verify Loop: iBlockCounter %d", - iBlockCounter, 0, 0); - INTLOCK(); - - /*PTJ: READ-WRITE-SETUP used here - to select SRAM Bank 1, and TSYNC Enable */ -#ifdef CY8C20x66 - fIsError = fReadWriteSetup(); - if (fIsError) - ErrorTrap(fIsError); -#endif - - dog_kick(); - - fIsError = - fVerifySetup(bBankCounter, - (unsigned char)iBlockCounter); - if (fIsError) - ErrorTrap(fIsError); -#ifdef CY8C20x66 /*PTJ: READ-STATUS after VERIFY-SETUP */ - /*PTJ: 307, added for tsync enable testing */ - fIsError = fSyncEnable(); - if (fIsError) - ErrorTrap(fIsError); - fIsError = fReadStatus(); - if (fIsError) - ErrorTrap(fIsError); - /*PTJ: READ-WRITE-SETUP used here - to select SRAM Bank 1, and TSYNC Enable */ - fIsError = fReadWriteSetup(); - if (fIsError) - ErrorTrap(fIsError); - /*PTJ: 307, added for tsync enable testing */ - fIsError = fSyncDisable(); - if (fIsError) - ErrorTrap(fIsError); -#endif - INTFREE(); - } - } - printk(KERN_DEBUG"Verify End", 0, 0, 0); -#endif /* #if 1 */ -#if 1 /* security start */ - /*======================================================= - program security data into target psoc. - in the final application this data should - come from the hex output of psoc designer. - printk(KERN_DEBUG"program security data start\n");*/ - /*INTLOCK(); */ - /*local_irq_save(flags);*/ - for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) { - /*PTJ: READ-WRITE-SETUP used here to select SRAM Bank 1 */ -#ifdef CY8C20x66 - /*PTJ: 307, added for tsync enable testing */ - fIsError = fSyncEnable(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - fIsError = fReadWriteSetup(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } -#endif - /* Load one bank of security data from hex file into buffer */ - fIsError = fLoadSecurityData(bBankCounter); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - /* Secure one bank of the target flash */ - fIsError = fSecureTargetFlash(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - } - /*INTFREE(); */ - /*local_irq_restore(flags);*/ - - /*printk(KERN_DEBUG"Program security data END\n"); */ - - /*============================================================== - PTJ: Do READ-SECURITY after SECURE - Load one bank of security data from hex file into buffer - loads abTargetDataOUT[] with security data - that was used in secure bit stream*/ - /*INTLOCK(); */ - /*local_irq_save(flags);*/ - fIsError = fLoadSecurityData(bBankCounter); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } -#ifdef CY8C20x66 - fIsError = fReadSecurity(); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } -#endif - /*INTFREE(); */ - /*local_irq_restore(flags);*/ - /*printk(KERN_DEBUG"Load security data END\n"); */ -#endif /* security end */ - - /*======================================================= - PTJ: Doing Checksum after READ-SECURITY*/ - /*INTLOCK(); */ - /*local_irq_save(flags);*/ - iChecksumTarget = 0; - for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) { - fIsError = fAccTargetBankChecksum(&iChecksumTarget); - if (fIsError) { - ErrorTrap(fIsError); - return fIsError; - } - } - - /*INTFREE(); */ - /*local_irq_restore(flags);*/ - - /*printk(KERN_DEBUG"Checksum : iChecksumTarget (0x%X)\n", - (unsigned char)iChecksumTarget); - printk ("Checksum : iChecksumData (0x%X)\n", - (unsigned char)iChecksumData); */ - - if ((unsigned short)(iChecksumTarget & 0xffff) != - (unsigned short)(iChecksumData & 0xffff)) { - ErrorTrap(VERIFY_ERROR); - return fIsError; - } - /*printk(KERN_DEBUG"Doing Checksum END\n");*/ - - /**** SUCCESS *** - At this point, the Target has been successfully Initialize, - ID-Checked, Bulk-Erased, Block-Loaded, - Block-Programmed, Block-Verified, - and Device- Checksum Verified.*/ - - /* You may want to restart Your Target PSoC Here. */ - ReStartTarget(); - - /*printk(KERN_DEBUG"ReStartTarget\n"); */ - - return 0; -} - -#endif /*(PROJECT_REV_) end of file main.c */ diff --git a/drivers/input/keyboard/cypress/issp_revision.h b/drivers/input/keyboard/cypress/issp_revision.h deleted file mode 100644 index ca1990c3c30d..000000000000 --- a/drivers/input/keyboard/cypress/issp_revision.h +++ /dev/null @@ -1,65 +0,0 @@ -/* filename: ISSP_Revision.h - 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. - ---------------------------------------------------------------------------*/ -#ifndef INC_ISSP_REVISION -#define INC_ISSP_REVISION -// The PROJECT_REV_xyz is used to make sure that the files in the project -// are all from the same revision of the program. Each file starts with an -// ifdef that will prevent the file from being compiled if it is not the -// correct revision -// Set the revision to 3.04 -#define PROJECT_REV_304 - -#endif //(INC_ISSP_REVISION) -#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 <mach/regs-gpio.h> -#include <plat/gpio-cfg.h> -#include <asm/gpio.h> -#include <linux/miscdevice.h> -#include <asm/uaccess.h> -#include <linux/earlysuspend.h> -#include <asm/io.h> -//end of file ISSP_Revision.h diff --git a/drivers/input/keyboard/cypress/issp_routines.c b/drivers/input/keyboard/cypress/issp_routines.c deleted file mode 100644 index 0186e2b8fc7f..000000000000 --- a/drivers/input/keyboard/cypress/issp_routines.c +++ /dev/null @@ -1,1044 +0,0 @@ -// filename: ISSP_Routines.c -#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 <mach/regs-gpio.h> -#include <plat/gpio-cfg.h> -#include <asm/gpio.h> -#include <linux/miscdevice.h> -#include <asm/uaccess.h> -#include <linux/earlysuspend.h> -#include <asm/io.h> -#include <linux/hrtimer.h> -//mhsong #include <m8c.h> // part specific constants and macros -//mhsong #include "PSoCAPI.h" // PSoC API definitions for all User Modules -#include "issp_defs.h" -#include "issp_vectors.h" -#include "issp_extern.h" -#include "issp_errors.h" -#include "issp_directives.h" -#include "issp_delays.h" - -unsigned char bTargetDataIN; -unsigned char abTargetDataOUT[TARGET_DATABUFF_LEN]; - -unsigned char bTargetAddress; -unsigned char bTargetDataPtr = 0; -unsigned char bTargetID[10]; -unsigned char bTargetStatus[10]; //PTJ: created to support READ-STATUS in fReadStatus() - -unsigned char fIsError; - -/* ((((((((((((((((((((( LOW-LEVEL ISSP SUBROUTINE SECTION )))))))))))))))))))) - (( The subroutines in this section use functions from the C file )) - (( ISSP_Drive_Routines.c. The functions in that file interface to the )) - (( processor specific hardware. So, these functions should work as is, if )) - (( the routines in ISSP_Drive_Routines.c are correctly converted. )) - (((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))*/ - -// ============================================================================ -// RunClock() -// Description: -// Run Clock without sending/receiving bits. Use this when transitioning from -// write to read and read to write "num_cycles" is number of SCLK cycles, not -// number of counter cycles. -// -// SCLK cannot run faster than the specified maximum frequency of 8MHz. Some -// processors may need to have delays added after setting SCLK low and setting -// SCLK high in order to not exceed this specification. The maximum frequency -// of SCLK should be measured as part of validation of the final program -// -// ============================================================================ -void RunClock(unsigned int iNumCycles) -{ - int i; - - for (i = 0; i < iNumCycles; i++) { - SCLKLow(); - SCLKHigh(); - } - // function exits with CLK high. -} - -// ============================================================================ -// bReceiveBit() -// Clocks the SCLK pin (high-low-high) and reads the status of the SDATA pin -// after the rising edge. -// -// SCLK cannot run faster than the specified maximum frequency of 8MHz. Some -// processors may need to have delays added after setting SCLK low and setting -// SCLK high in order to not exceed this specification. The maximum frequency -// of SCLK should be measured as part of validation of the final program -// -// Returns: -// 0 if SDATA was low -// 1 if SDATA was high -// ============================================================================ -unsigned char bReceiveBit(void) -{ - SCLKLow(); - SCLKHigh(); - if (fSDATACheck()) { - return (1); - } else { - return (0); - } -} - -// ============================================================================ -// bReceiveByte() -// Calls ReceiveBit 8 times to receive one byte. -// Returns: -// The 8-bit values recieved. -// ============================================================================ -unsigned char bReceiveByte(void) -{ - unsigned char b; - unsigned char bCurrByte = 0x00; - - for (b = 0; b < 8; b++) { - bCurrByte = (bCurrByte << 1) + bReceiveBit(); - } - return (bCurrByte); -} - -// ============================================================================ -// SendByte() -// This routine sends up to one byte of a vector, one bit at a time. -// bCurrByte the byte that contains the bits to be sent. -// bSize the number of bits to be sent. Valid values are 1 to 8. -// -// SCLK cannot run faster than the specified maximum frequency of 8MHz. Some -// processors may need to have delays added after setting SCLK low and setting -// SCLK high in order to not exceed this specification. The maximum frequency -// of SCLK should be measured as part of validation of the final program -// -// There is no returned value. -// ============================================================================ -void SendByte(unsigned char bCurrByte, unsigned char bSize) -{ - unsigned char b = 0; - - for (b = 0; b < bSize; b++) { - if (bCurrByte & 0x80) { - // Send a '1' - SetSDATAHigh(); - SCLKHigh(); - SCLKLow(); - } else { - // Send a '0' - SetSDATALow(); - SCLKHigh(); - SCLKLow(); - } - bCurrByte = bCurrByte << 1; - } -} - -// ============================================================================ -// SendVector() -// This routine sends the vector specifed. All vectors constant strings found -// in ISSP_Vectors.h. The data line is returned to HiZ after the vector is -// sent. -// bVect a pointer to the vector to be sent. -// nNumBits the number of bits to be sent. -// bCurrByte scratch var to keep the byte to be sent. -// -// There is no returned value. -// ============================================================================ -void SendVector(const unsigned char *bVect, unsigned int iNumBits) -{ - SetSDATAStrong(); - while (iNumBits > 0) { - if (iNumBits >= 8) { - SendByte(*(bVect), 8); - iNumBits -= 8; - bVect++; - } else { - SendByte(*(bVect), iNumBits); - iNumBits = 0; - } - } - SetSDATALow(); // issp_test_20100709 add - SetSDATAHiZ(); -} - -// ============================================================================ -// fDetectHiLoTransition() -// Waits for transition from SDATA = 1 to SDATA = 0. Has a 100 msec timeout. -// TRANSITION_TIMEOUT is a loop counter for a 100msec timeout when waiting for -// a high-to-low transition. This is used in the polling loop of -// fDetectHiLoTransition(). The timing of the while(1) loops can be calculated -// and the number of loops is counted, using iTimer, to determine when 100 -// msec has passed. -// -//// SCLK cannot run faster than the specified maximum frequency of 8MHz. Some -// processors may need to have delays added after setting SCLK low and setting -// SCLK high in order to not exceed this specification. The maximum frequency -// of SCLK should be measured as part of validation of the final program -// -// Returns: -// 0 if successful -// -1 if timed out. -// ============================================================================ -signed char fDetectHiLoTransition(void) -{ - // nTimer breaks out of the while loops if the wait in the two loops totals - // more than 100 msec. Making this static makes the loop run a faster. - // This is really a processor/compiler dependency and it not needed. - static unsigned int iTimer; - - // NOTE: - // These loops look unconventional, but it is necessary to check SDATA_PIN - // as shown because the transition can be missed otherwise, due to the - // length of the SDATA Low-High-Low after certain commands. - - // Generate clocks for the target to pull SDATA High - //dog_kick(); - iTimer = TRANSITION_TIMEOUT; - printk(KERN_DEBUG - "Generate clocks for the target to pull SDATA High\n"); - while (1) { - SCLKLow(); - if (fSDATACheck()) // exit once SDATA goes HI - break; - SCLKHigh(); - // If the wait is too long then timeout - if (iTimer-- == 0) { - return (ERROR); - } - } - //dog_kick(); - // Generate Clocks and wait for Target to pull SDATA Low again - iTimer = TRANSITION_TIMEOUT; // reset the timeout counter - printk(KERN_DEBUG - "Generate Clocks and wait for Target to pull SDATA Low again\n"); - while (1) { - SCLKLow(); //issp_test_20100709 unblock - if (!fSDATACheck()) { // exit once SDATA returns LOW - break; - } - SCLKHigh(); //issp_test_20100709 unblock - // If the wait is too long then timeout - if (iTimer-- == 0) { - return (ERROR); - } - } - printk("fDetectHiLoTransition OUT!!!!\n"); - return (PASS); -} - -/* ((((((((((((((((((((( HIGH-LEVEL ISSP ROUTINE SECTION )))))))))))))))))))))) - (( These functions are mostly made of calls to the low level routines )) - (( above. This should isolate the processor-specific changes so that )) - (( these routines do not need to be modified. )) - (((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))*/ - -#ifdef RESET_MODE -// ============================================================================ -// fXRESInitializeTargetForISSP() -// Implements the intialization vectors for the device. -// Returns: -// 0 if successful -// INIT_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fXRESInitializeTargetForISSP(void) -{ - // Configure the pins for initialization - SetSDATAHiZ(); - SetSCLKStrong(); - SCLKLow(); - // Cycle reset and put the device in programming mode when it exits reset - AssertXRES(); - DeassertXRES(); - // !!! NOTE: - // The timing spec that requires that the first Init-Vector happen within - // 1 msec after the reset/power up. For this reason, it is not advisable - // to separate the above RESET_MODE or POWER_CYCLE_MODE code from the - // Init-Vector instructions below. Doing so could introduce excess delay - // and cause the target device to exit ISSP Mode. - - //PTJ: Send id_setup_1 instead of init1_v - //PTJ: both send CA Test Key and do a Calibrate1 SROM function - SendVector(id_setup_1, num_bits_id_setup_1); - if (fIsError = fDetectHiLoTransition()) { -// TX8SW_CPutString("\r\n fDetectHiLoTransition Error"); - printk("\r\n fDetectHiLoTransition Error\n"); - return (INIT_ERROR); - } - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - - // NOTE: DO NOT not wait for HiLo on SDATA after vector Init-3 - // it does not occur (per spec). - return (PASS); -} -#else //else = the part is power cycle programmed - -// ============================================================================ -// fPowerCycleInitializeTargetForISSP() -// Implements the intialization vectors for the device. -// The first time fDetectHiLoTransition is called the Clk pin is highZ because -// the clock is not needed during acquire. -// Returns: -// 0 if successful -// INIT_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fPowerCycleInitializeTargetForISSP(void) -{ - // unsigned char n; - - // Set all pins to highZ to avoid back powering the PSoC through the GPIO - // protection diodes. - SetSCLKHiZ(); - SetSDATAHiZ(); - - // Turn on power to the target device before other signals - SetTargetVDDStrong(); - ApplyTargetVDD(); - // wait 1msec for the power to stabilize -#if 0 - for (n = 0; n < 10; n++) { - Delay(DELAY100us); - } -#endif - // Set SCLK to high Z so there is no clock and wait for a high to low - // transition on SDAT. SCLK is not needed this time. - SetSCLKHiZ(); -// printk(KERN_DEBUG "fDetectHiLoTransition\n"); - if ((fIsError = fDetectHiLoTransition())) { - return (INIT_ERROR); - } - // Configure the pins for initialization -// SetSDATAHiZ(); // issp_test_20100709 block - SetSCLKStrong(); - SCLKLow(); //PTJ: DO NOT SET A BREAKPOINT HERE AND EXPECT SILICON ID TO PASS! - - // !!! NOTE: - // The timing spec that requires that the first Init-Vector happen within - // 1 msec after the reset/power up. For this reason, it is not advisable - // to separate the above RESET_MODE or POWER_CYCLE_MODE code from the - // Init-Vector instructions below. Doing so could introduce excess delay - // and cause the target device to exit ISSP Mode. - - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); //PTJ: rev308, added to match spec -// printk("SendVector(id_setup_1)\n",0,0,0); - SendVector(id_setup_1, num_bits_id_setup_1); - if ((fIsError = fDetectHiLoTransition())) { - return (INIT_ERROR); - } - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - - // NOTE: DO NOT not wait for HiLo on SDATA after vector Init-3 - // it does not occur (per spec). - return (PASS); -} -#endif - -// ============================================================================ -// fVerifySiliconID() -// Returns: -// 0 if successful -// Si_ID_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fVerifySiliconID(void) -{ - SendVector(id_setup_2, num_bits_id_setup_2); - printk("fVerifySiliconID: SendVector id_stup2 END\n"); - - if ((fIsError = fDetectHiLoTransition())) { - printk("fVerifySiliconID(): fDetectHiLoTransition Error\n"); - return (SiID_ERROR); - } - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - SendVector(tsync_enable, num_bits_tsync_enable); - printk - ("fVerifySiliconID: SendVector(wait_and_poll_end) (tsync_enable) END\n"); - - //Send Read ID vector and get Target ID - SendVector(read_id_v, 11); // Read-MSB Vector is the first 11-Bits - RunClock(2); // Two SCLK cycles between write & read - bTargetID[0] = bReceiveByte(); - RunClock(1); - SendVector(read_id_v + 2, 12); // 1+11 bits starting from the 3rd byte - - RunClock(2); // Read-LSB Command - bTargetID[1] = bReceiveByte(); - - RunClock(1); - SendVector(read_id_v + 4, 1); // 1 bit starting from the 5th byte - - //read Revision ID from Accumulator A and Accumulator X - SendVector(read_id_v + 5, 11); //11 bits starting from the 6th byte - RunClock(2); - bTargetID[2] = bReceiveByte(); //Read from Acc.X - RunClock(1); - SendVector(read_id_v + 7, 12); //1+11 bits starting from the 8th byte - - RunClock(2); - bTargetID[3] = bReceiveByte(); //Read from Acc.A - - RunClock(1); - SendVector(read_id_v + 4, 1); //1bit starting from the 5th byte, - - SendVector(tsync_disable, num_bits_tsync_disable); - - // Print READ-ID - /* - TX8SW_CPutString("\r\n Silicon-ID : "); - TX8SW_PutChar(' '); - TX8SW_PutSHexByte(bTargetID[0]); - TX8SW_PutChar(' '); - TX8SW_PutSHexByte(bTargetID[1]); - TX8SW_PutChar(' '); - TX8SW_PutSHexByte(bTargetID[2]); - TX8SW_PutChar(' '); - TX8SW_PutSHexByte(bTargetID[3]); - TX8SW_PutChar(' '); - */ -#if 0 // issp_test_20100709 block - printk("issp_routines.c: ID0:0x%X, ID1:0x%X, ID2: 0x%X, ID2: 0x%X\n", - bTargetID[0], bTargetID[1], bTargetID[2], bTargetID[3]); - - if ((bTargetID[0] != target_id_v[0]) || (bTargetID[1] != target_id_v[1]) - || (bTargetID[2] != target_id_v[2]) - || (bTargetID[3] != target_id_v[3])) { - return (SiID_ERROR); - } else { - return (PASS); - } -#else - return (PASS); - -#endif -} - -// PTJ: ======================================================================= -// fReadStatus() -// Returns: -// 0 if successful -// _____ if timed out on handshake to the device. -// ============================================================================ -signed char fReadStatus(void) -{ - SendVector(tsync_enable, num_bits_tsync_enable); //PTJ: - - //Send Read ID vector and get Target ID - SendVector(read_id_v, 11); // Read-MSB Vector is the first 11-Bits - RunClock(2); // Two SCLK cycles between write & read - bTargetStatus[0] = bReceiveByte(); - RunClock(1); - //SendVector(read_id_v+2, 12); // 12 bits starting from the 3rd character - - //RunClock(2); // Read-LSB Command - //bTargetStatus[1] = bReceiveByte(); - - //RunClock(1); - SendVector(read_id_v + 4, 1); // 1 bit starting from the 5th character - - SendVector(tsync_disable, num_bits_tsync_disable); - - if (bTargetStatus[0] == target_status00_v) { - return (PASS); //PTJ: Status = 00 means Success, the SROM function did what it was supposed to - } - if (bTargetStatus[0] == target_status01_v) { - return (STATUS_ERROR); //PTJ: Status = 01 means that function is not allowed because of block level protection, for test with verify_setup (VERIFY-SETUP) - } - if (bTargetStatus[0] == target_status03_v) { - return (STATUS_ERROR); //PTJ: Status = 03 is fatal error, SROM halted - } - if (bTargetStatus[0] == target_status04_v) { - return (STATUS_ERROR); //PTJ: Status = 04 means there was a checksum faliure with either the smart write code checksum, or the smart write paramters checksum, for test with PROGRAM-AND-VERIFY - } - if (bTargetStatus[0] == target_status06_v) { - return (STATUS_ERROR); //PTJ: Status = 06 means that Calibrate1 failed, for test with id_setup_1 (ID-SETUP-1) - } else { - return (STATUS_ERROR); - } -} - -// PTJ: ======================================================================= -// fReadCalRegisters() -// PTJ: use this to read some cal registers that should be loaded by Calibrate1 in id_setup_1 -// Returns: -// 0 if successful -// _____ if timed out on handshake to the device. -// ============================================================================ -signed char fReadCalRegisters(void) -{ - SendVector(tsync_enable, num_bits_tsync_enable); - - SendVector(Switch_Bank1, 22); - - SendVector(read_IMOtrim, 11); // Read-MSB Vector is the first 11-Bits - RunClock(2); // Two SCLK cycles between write & read - bTargetStatus[0] = bReceiveByte(); - RunClock(1); - // Set SDATA to Strong Drive here because SendByte() does not - SetSDATAStrong(); - SendByte(read_reg_end, 1); - - SendVector(read_SPCtrim, 11); // Read-MSB Vector is the first 11-Bits - RunClock(2); // Two SCLK cycles between write & read - bTargetStatus[1] = bReceiveByte(); - RunClock(1); - // Set SDATA to Strong Drive here because SendByte() does not - SetSDATAStrong(); - SendByte(read_reg_end, 1); - - SendVector(read_VBGfinetrim, 11); // Read-MSB Vector is the first 11-Bits - RunClock(2); // Two SCLK cycles between write & read - bTargetStatus[2] = bReceiveByte(); - RunClock(1); - // Set SDATA to Strong Drive here because SendByte() does not - SetSDATAStrong(); - SendByte(read_reg_end, 1); - - SendVector(Switch_Bank0, 22); - - SendVector(tsync_disable, num_bits_tsync_disable); - - if (bTargetStatus[0] == target_status00_v) { - return (PASS); //PTJ: Status = 00 means Success, the SROM function did what it was supposed to - } - return PASS; -} - -// PTJ: ======================================================================= -// fReadWriteSetup() -// PTJ: The READ-WRITE-SETUP vector will enable TSYNC and switches the device -// to SRAM bank1 for PROGRAM-AND-VERIFY, SECURE and VERIFY-SETUP. -// Returns: -// 0 if successful -// _____ if timed out on handshake to the device. -// ============================================================================ -signed char fReadWriteSetup(void) -{ - SendVector(read_write_setup, num_bits_read_write_setup); - return (PASS); //PTJ: is there anything else that should be done? -} - -// PTJ: ======================================================================= -// fSyncEnable() -// PTJ: The SYNC-ENABLE vector will enable TSYNC -// -// Returns: -// 0 if successful -// _____ if timed out on handshake to the device. -// ============================================================================ -signed char fSyncEnable(void) -{ - SendVector(tsync_enable, num_bits_tsync_enable); //PTJ: 307 for tsync enable testing - return (PASS); //PTJ: is there anything else that should be done? -} - -// PTJ: ======================================================================= -// fSyncDisable() -// PTJ: The SYNC-ENABLE vector will enable TSYNC -// -// Returns: -// 0 if successful -// _____ if timed out on handshake to the device. -// ============================================================================ -signed char fSyncDisable(void) -{ - SendVector(tsync_disable, num_bits_tsync_disable); //PTJ: 307 for tsync enable testing - return (PASS); -} - -// ============================================================================ -// fEraseTarget() -// Perform a bulk erase of the target device. -// Returns: -// 0 if successful -// ERASE_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fEraseTarget(void) -{ - SendVector(erase, num_bits_erase); - if ((fIsError = fDetectHiLoTransition())) { -// TX8SW_CPutString("\r\n fDetectHiLoTransition"); - //printk("\r\n fDetectHiLoTransition\n"); // issp_test_2010 block - return (ERASE_ERROR); - } - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - return (PASS); -} - -extern unsigned int iBlockCounter; -// ============================================================================ -// LoadTarget() -// Transfers data from array in Host to RAM buffer in the target. -// Returns the checksum of the data. -// ============================================================================ -unsigned int iLoadTarget(void) -{ - unsigned char bTemp; - unsigned int iChecksumData = 0; - - // Set SDATA to Strong Drive here because SendByte() does not - SetSDATAStrong(); - - // Transfer the temporary RAM array into the target. - // In this section, a 128-Byte array was specified by #define, so the entire - // 128-Bytes are written in this loop. - bTargetAddress = 0x00; - bTargetDataPtr = 0x00; - - while (bTargetDataPtr < TARGET_DATABUFF_LEN) { - bTemp = abTargetDataOUT[bTargetDataPtr]; - iChecksumData += bTemp; - - SendByte(write_byte_start, 4); //PTJ: we need to be able to write 128 bytes from address 0x80 to 0xFF - SendByte(bTargetAddress, 7); //PTJ: we need to be able to write 128 bytes from address 0x80 to 0xFF - SendByte(bTemp, 8); - SendByte(write_byte_end, 3); - - // !!!NOTE: - // SendByte() uses MSbits, so inc by '2' to put the 0..128 address into - // the seven MSBit locations. - // - // This can be confusing, but check the logic: - // The address is only 7-Bits long. The SendByte() subroutine will - // send however-many bits, BUT...always reads them bits from left-to- - // right. So in order to pass a value of 0..128 as the address using - // SendByte(), we have to left justify the address by 1-Bit. - // This can be done easily by incrementing the address each time by - // '2' rather than by '1'. - - bTargetAddress += 2; //PTJ: inc by 2 in order to support a 128 byte address space, MSB~1 for address - bTargetDataPtr++; - } - - return (iChecksumData); -} - -#ifdef MULTI_BANK -// ============================================================================ -// SetBankNumber() -// Set the bank number in the target device. -// Returns: -// none -// ============================================================================ -void SetBankNumber(unsigned char bBankNumber) -{ - // Send the bank-select vector. - SendVector(set_bank_number, 33); - - // Set the drive here because SendByte() does not. - SetSDATAStrong(); - SendByte(bBankNumber, 8); - SendVector(set_bank_number_end, 25); -} -#endif - -// ============================================================================ -// fProgramTargetBlock() -// Program one block with data that has been loaded into a RAM buffer in the -// target device. -// Returns: -// 0 if successful -// BLOCK_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fProgramTargetBlock(unsigned char bBankNumber, - unsigned char bBlockNumber) -{ - - SendVector(tsync_enable, num_bits_tsync_enable); - - SendVector(set_block_num, num_bits_set_block_num); - - // Set the drive here because SendByte() does not. - SetSDATAStrong(); - SendByte(bBlockNumber, 8); - SendByte(set_block_num_end, 3); - - SendVector(tsync_disable, num_bits_tsync_disable); //PTJ: - - // Send the program-block vector. - SendVector(program_and_verify, num_bits_program_and_verify); //PTJ: PROGRAM-AND-VERIFY - // wait for acknowledge from target. - if ((fIsError = fDetectHiLoTransition())) { - return (BLOCK_ERROR); - } - // Send the Wait-For-Poll-End vector - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - return (PASS); - - //PTJ: Don't do READ-STATUS here because that will - //PTJ: require that we return multiple error values, if error occurs -} - -// ============================================================================ -// fAddTargetBankChecksum() -// Reads and adds the target bank checksum to the referenced accumulator. -// Returns: -// 0 if successful -// VERIFY_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fAccTargetBankChecksum(unsigned int *pAcc) -{ - unsigned int wCheckSumData; - - SendVector(checksum_setup, num_bits_checksum_setup); //PTJ:CHECKSUM-SETUP, it is taking 100ms > time > 200ms to complete the checksum - if ((fIsError = fDetectHiLoTransition())) { //100ms is default - return (VERIFY_ERROR); - } - - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - - SendVector(tsync_enable, num_bits_tsync_enable); - - //Send Read Checksum vector and get Target Checksum - SendVector(read_checksum_v, 11); // first 11-bits is ReadCKSum-MSB - RunClock(2); // Two SCLKs between write & read - bTargetDataIN = bReceiveByte(); - wCheckSumData = bTargetDataIN << 8; - - RunClock(1); // See Fig. 6 - SendVector(read_checksum_v + 2, 12); // 12 bits starting from 3rd character - RunClock(2); // Read-LSB Command - bTargetDataIN = bReceiveByte(); - wCheckSumData |= (bTargetDataIN & 0xFF); - RunClock(1); - SendVector(read_checksum_v + 3, 1); // Send the final bit of the command //PTJ: read_checksum_v may have to change if TSYNC needs to be enabled - - SendVector(tsync_disable, num_bits_tsync_disable); - - *pAcc = wCheckSumData; - - return (PASS); -} - -// ============================================================================ -// ReStartTarget() -// After programming, the target PSoC must be reset to take it out of -// programming mode. This routine performs a reset. -// ============================================================================ -void ReStartTarget(void) -{ -#ifdef RESET_MODE - // Assert XRES, then release, then disable XRES-Enable - AssertXRES(); - Delay(XRES_CLK_DELAY); - DeassertXRES(); -#else - // Set all pins to highZ to avoid back powering the PSoC through the GPIO - // protection diodes. - SetSCLKHiZ(); - SetSDATAHiZ(); - // Cycle power on the target to cause a reset - RemoveTargetVDD(); - mdelay(300); - ApplyTargetVDD(); -#endif -} - -// ============================================================================ -// fVerifySetup() -// Verify the block just written to. This can be done byte-by-byte before the -// protection bits are set. -// Returns: -// 0 if successful -// BLOCK_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fVerifySetup(unsigned char bBankNumber, unsigned char bBlockNumber) -{ - SendVector(tsync_enable, num_bits_tsync_enable); - - SendVector(set_block_num, num_bits_set_block_num); - - //Set the drive here because SendByte() does not - SetSDATAStrong(); - SendByte(bBlockNumber, 8); - SendByte(set_block_num_end, 3); //PTJ: - - SendVector(tsync_disable, num_bits_tsync_disable); //PTJ: - - SendVector(verify_setup, num_bits_my_verify_setup); //PTJ: - if ((fIsError = fDetectHiLoTransition())) { - return (BLOCK_ERROR); - } - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - - return (PASS); -} - -// ============================================================================ -// fReadByteLoop() -// Reads the data back from Target SRAM and compares it to expected data in -// Host SRAM -// Returns: -// 0 if successful -// BLOCK_ERROR if timed out on handshake to the device. -// ============================================================================ - -signed char fReadByteLoop(void) -{ - bTargetAddress = 0; - bTargetDataPtr = 0; - - while (bTargetDataPtr < TARGET_DATABUFF_LEN) { - //Send Read Byte vector and then get a byte from Target - SendVector(read_byte_v, 4); - // Set the drive here because SendByte() does not - SetSDATAStrong(); - SendByte(bTargetAddress, 7); - - RunClock(2); // Run two SCLK cycles between writing and reading - SetSDATAHiZ(); // Set to HiZ so Target can drive SDATA - bTargetDataIN = bReceiveByte(); - - RunClock(1); - SendVector(read_byte_v + 1, 1); // Send the ReadByte Vector End - - // Test the Byte that was read from the Target against the original - // value (already in the 128-Byte array "abTargetDataOUT[]"). If it - // matches, then bump the address & pointer,loop-back and continue. - // If it does NOT match abort the loop and return and error. - if (bTargetDataIN != abTargetDataOUT[bTargetDataPtr]) { -#ifdef TX_ON - UART_PutCRLF(); - UART_CPutString("bTargetDataIN : "); - UART_PutHexByte(bTargetDataIN); - UART_CPutString(" abTargetDataOUT : "); - UART_PutHexByte(abTargetDataOUT[bTargetDataPtr]); -#endif - return (BLOCK_ERROR); - } - - bTargetDataPtr++; - // Increment the address by 2 to accomodate 7-Bit addressing - // (puts the 7-bit address into MSBit locations for "SendByte()"). - bTargetAddress += 2; - - } - - return (PASS); -} - -// ============================================================================ -// fVerifyTargetBlock() -// Verify the block just written to. This can be done byte-by-byte before the -// protection bits are set. -// Returns: -// 0 if successful -// BLOCK_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fVerifyTargetBlock(unsigned char bBankNumber, - unsigned char bBlockNumber) -{ - SendVector(set_block_number, 11); - - //Set the drive here because SendByte() does not - SetSDATAStrong(); - SendByte(bBlockNumber, 8); - SendByte(set_block_number_end, 3); - - SendVector(verify_setup_v, num_bits_verify_setup); - if ((fIsError = fDetectHiLoTransition())) { - return (BLOCK_ERROR); - } - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - - bTargetAddress = 0; - bTargetDataPtr = 0; - - while (bTargetDataPtr < TARGET_DATABUFF_LEN) { - //Send Read Byte vector and then get a byte from Target - SendVector(read_byte_v, 4); //PTJ 308: this was changed from sending the first 5 bits to sending the first 4 - // Set the drive here because SendByte() does not - SetSDATAStrong(); - SendByte(bTargetAddress, 6); - - RunClock(2); // Run two SCLK cycles between writing and reading - SetSDATAHiZ(); // Set to HiZ so Target can drive SDATA - bTargetDataIN = bReceiveByte(); - - RunClock(1); - SendVector(read_byte_v + 1, 1); // Send the ReadByte Vector End - - // Test the Byte that was read from the Target against the original - // value (already in the 128-Byte array "abTargetDataOUT[]"). If it - // matches, then bump the address & pointer,loop-back and continue. - // If it does NOT match abort the loop and return an error. - if (bTargetDataIN != abTargetDataOUT[bTargetDataPtr]) - return (BLOCK_ERROR); - - bTargetDataPtr++; - // Increment the address by four to accomodate 6-Bit addressing - // (puts the 6-bit address into MSBit locations for "SendByte()"). - bTargetAddress += 4; - } - return (PASS); -} - -// ============================================================================ -// fSecureTargetFlash() -// Before calling, load the array, abTargetDataOUT, with the desired security -// settings using LoadArrayWithSecurityData(StartAddress,Length,SecurityType). -// The can be called multiple times with different SecurityTypes as needed for -// particular Flash Blocks. Or set them all the same using the call below: -// LoadArrayWithSecurityData(0,SECURITY_BYTES_PER_BANK, 0); -// Returns: -// 0 if successful -// SECURITY_ERROR if timed out on handshake to the device. -// ============================================================================ -signed char fSecureTargetFlash(void) -{ - unsigned char bTemp; - - // Transfer the temporary RAM array into the target - bTargetAddress = 0x00; - bTargetDataPtr = 0x00; - - SetSDATAStrong(); - while (bTargetDataPtr < SECURITY_BYTES_PER_BANK) { - bTemp = abTargetDataOUT[bTargetDataPtr]; - SendByte(write_byte_start, 4); - SendByte(bTargetAddress, 7); - SendByte(bTemp, 8); - SendByte(write_byte_end, 3); - - // SendBytes() uses MSBits, so increment the address by '2' to put - // the 0..n address into the seven MSBit locations - bTargetAddress += 2; //PTJ: inc by 2 in order to support a 128 byte address space - bTargetDataPtr++; - } - - SendVector(secure, num_bits_secure); //PTJ: - if ((fIsError = fDetectHiLoTransition())) { - return (SECURITY_ERROR); - } - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - return (PASS); -} - -// ============================================================================ -// PTJ: fReadSecurity() -// This reads from SM0 with Read Supervisory SPC command. -// Need to have SPC Test Mode enabled before using these commands? -// Returns: -// 0 if successful -// __________ if timed out on handshake to the device. -// ============================================================================ -signed char fReadSecurity(void) -{ - SendVector(ReadSecuritySetup, num_bits_ReadSecuritySetup); -// SendVector(SPCTestMode_enable, num_bits_SPCTestMode_enable); - - bTargetAddress = 0x00; - while (bTargetAddress < (SECURITY_BYTES_PER_BANK * 2)) { //PTJ: we do SECURITY_BYTES_PER_BANK * 2 because we bTargetAddress += 2 - - //PTJ: TSYNC Enable - SendVector(tsync_enable, num_bits_tsync_enable); - - SendVector(read_security_pt1, num_bits_read_security_pt1); //PTJ: - // Set the drive here because SendByte() does not. - SetSDATAStrong(); - SendByte(bTargetAddress, 7); //PTJ: hardcode MSb of address as 0 in bit stream - SendVector(read_security_pt1_end, - num_bits_read_security_pt1_end); - - //PTJ: TSYNC Disable - SendVector(tsync_disable, num_bits_tsync_disable); - - SendVector(read_security_pt2, num_bits_read_security_pt2); - - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - - SendVector(read_security_pt3, num_bits_read_security_pt3); - - SetSDATAStrong(); - SendByte(bTargetAddress, 7); - - SendVector(read_security_pt3_end, - num_bits_read_security_pt3_end); - - SendVector(wait_and_poll_end, num_bits_wait_and_poll_end); - - bTargetAddress += 2; - } - - bTargetAddress = 0x00; - bTargetDataPtr = 0x00; - - SendVector(tsync_enable, num_bits_tsync_enable); //PTJ: 307, added for tsync testing - while (bTargetAddress < (SECURITY_BYTES_PER_BANK * 2)) { //PTJ: we do SECURITY_BYTES_PER_BANK * 2 because we bTargetAddress += 2 - - //Send Read Byte vector and then get a byte from Target - SendVector(read_byte_v, 4); - // Set the drive here because SendByte() does not - SetSDATAStrong(); - SendByte(bTargetAddress, 7); - - RunClock(2); // Run two SCLK cycles between writing and reading - SetSDATAHiZ(); // Set to HiZ so Target can drive SDATA - bTargetDataIN = bReceiveByte(); - - RunClock(1); - SendVector(read_byte_v + 1, 1); // Send the ReadByte Vector End - - // Test the Byte that was read from the Target against the original - // value (already in the 128-Byte array "abTargetDataOUT[]"). If it - // matches, then bump the address & pointer,loop-back and continue. - // If it does NOT match abort the loop and return and error. - if (bTargetDataIN != abTargetDataOUT[bTargetDataPtr]) -// return(BLOCK_ERROR); - - // Increment the address by two to accomodate 7-Bit addressing - // (puts the 7-bit address into MSBit locations for "SendByte()"). - bTargetDataPtr++; - bTargetAddress += 2; - } - - SendVector(tsync_disable, num_bits_tsync_disable); //PTJ: 307, added for tsync testing - return (PASS); -} - -#endif //(PROJECT_REV_) -// end of file ISSP_Routines.c diff --git a/drivers/input/keyboard/cypress/issp_vectors.h b/drivers/input/keyboard/cypress/issp_vectors.h deleted file mode 100644 index 35d5ef1b3a4c..000000000000 --- a/drivers/input/keyboard/cypress/issp_vectors.h +++ /dev/null @@ -1,1146 +0,0 @@ -// filename: ISSP_Vectors.h -#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. - ------------------------------------------------------------------------------*/ -#ifndef INC_ISSP_VECTORS -#define INC_ISSP_VECTORS - -#include "issp_directives.h" - -#define HEX_DEFINE -// ------------------------- PSoC CY8C20x66 Devices --------------------------- - -#ifdef CY8C20236 /// 2009.03.26. kimc -unsigned char target_id_v[] = { 0x00, 0xb3, 0x52, 0x21 }; //ID for CY8C20236 -#endif -#ifdef CY8C20246 /// 2009.03.26. kimc -unsigned char target_id_v[] = { 0x00, 0xAA, 0x52, 0x21 }; //ID for CY8C20246 -#endif -#ifdef CY8C20266 -unsigned char target_id_v[] = { 0x00, 0x96, 0x52, 0x21 }; //ID for CY8C20266 -#endif -#ifdef CY8C20366 -unsigned char target_id_v[] = { 0x00, 0x97, 0x52, 0x21 }; //ID for CY8C20366 -#endif -#ifdef CY8C20466 -unsigned char target_id_v[] = { 0x00, 0x98, 0x52, 0x21 }; //ID for CY8C20466 -#endif -#ifdef CY8C20566 -unsigned char target_id_v[] = { 0x00, 0x99, 0x52, 0x21 }; //ID for CY8C20566 -#endif -#ifdef CY8C20666 -unsigned char target_id_v[] = { 0x00, 0x9c, 0x52, 0x21 }; //ID for CY8C20666 -#endif -#ifdef CY8C20066 -unsigned char target_id_v[] = { 0x00, 0x9a, 0x52, 0x21 }; //ID for CY8C20066 -#endif -#ifdef CY8C200661 -unsigned char target_id_v[] = { 0x00, 0x9b, 0x52, 0x21 }; //ID for CY8C200661 -#endif - -#ifdef CY8C20x66 -unsigned char target_status00_v = 0x00; //PTJ: Status = 00 means Success, the SROM function did what it was supposed to -unsigned char target_status01_v = 0x01; //PTJ: Status = 01 means that function is not allowed because of block level protection, for test with verify_setup (VERIFY-SETUP) -unsigned char target_status03_v = 0x03; //PTJ: Status = 03 is fatal error, SROM halted -unsigned char target_status04_v = 0x04; //PTJ: Status = 04 means that ___ for test with ___ (PROGRAM-AND-VERIFY) -unsigned char target_status06_v = 0x06; //PTJ: Status = 06 means that Calibrate1 failed, for test with id_setup_1 (ID-SETUP-1) -#endif - -/*************** CY8CTMA30x, CY8CTMG30x, CY8CTST30x series by KIMC, 2009.08.11 ***********************************/ -// ------------------------- PSoC CY8CTMA30x, CY8CTMG30x, CY8CTST30x Devices --------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8CTST300_36 // CY8CTST300_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x06, 0x71, 0x70, 0x11 }; -#endif -#ifdef CY8CTST300_48 // CY8CTST300_48LTXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x06, 0x72, 0x70, 0x11 }; -#endif -#ifdef CY8CTST300_49 // CY8CTST300_49FNXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x06, 0x73, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA300_36 // CY8CTMA300_36LQXI // 2009.08.11, Test OK. -unsigned char target_id_v[] = { 0x05, 0x71, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA300_48 // CY8CTMA300_48LTXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x72, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA300_49 // CY8CTMA300_49FNXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x73, 0x70, 0x11 }; -#endif -#ifdef CY8CTMG300_36 // CY8CTMG300_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x07, 0x71, 0x70, 0x11 }; -#endif -#ifdef CY8CTMG300_48 // CY8CTMG300_48LTXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x07, 0x72, 0x70, 0x11 }; -#endif -#ifdef CY8CTMG300_49 // CY8CTMG300_49FNXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x07, 0x73, 0x70, 0x11 }; -#endif -#ifdef CY8CTMG300B_36 // CY8CTMG300B_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x07, 0x75, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA300B_36 // CY8CTMA300B_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x74, 0x70, 0x11 }; -#endif -#ifdef CY8CTST300B_36 // CY8CTST300B_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x06, 0x74, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA301_36 // CY8CTMA301_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x75, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA301_48 // CY8CTMA301_48LTXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x76, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA301D_36 // CY8CTMA301D_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x77, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA301D_48 // CY8CTMA301D_48LTXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x78, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA300D_36 // CY8CTMA300D_36LQXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x79, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA300D_48 // CY8CTMA300D_48LTXI // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x80, 0x70, 0x11 }; -#endif -#ifdef CY8CTMA300D_49 // CY8CTMA300D_49FNXIT // 2009.08.11, not tested. -unsigned char target_id_v[] = { 0x05, 0x81, 0x70, 0x11 }; -#endif -/********************************************************************************************************/ - -/*************** CY8CTMG/TST series modified by KJHW, 2009.08.14 ***********************************/ -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8CTMG110 -unsigned char target_id_v[] = { 0x07, 0x38 }; //ID for CY8CTMG110 - -unsigned char target_status00_v = 0x00; //PTJ: Status = 00 means Success, the SROM function did what it was supposed to -unsigned char target_status01_v = 0x01; //PTJ: Status = 01 means that function is not allowed because of block level protection, for test with verify_setup (VERIFY-SETUP) -unsigned char target_status03_v = 0x03; //PTJ: Status = 03 is fatal error, SROM halted -unsigned char target_status04_v = 0x04; //PTJ: Status = 04 means that ___ for test with ___ (PROGRAM-AND-VERIFY) -unsigned char target_status06_v = 0x06; //PTJ: Status = 06 means that Calibrate1 failed, for test with id_setup_1 (ID-SETUP-1) -#endif - -#ifdef CY8CTST200_24PIN -unsigned char target_id_v[] = { 0x06, 0x6D, 0x52, 0x21 }; //ID for CY8CTST200 -#endif -#ifdef CY8CTST200_32PIN -unsigned char target_id_v[] = { 0x06, 0x6E, 0x52, 0x21 }; //ID for CY8CTST200 -#endif -#ifdef CY8CTMG200_24PIN -unsigned char target_id_v[] = { 0x07, 0x6D, 0x52, 0x21 }; //ID for CY8CTMG200 -#endif -#ifdef CY8CTMG200_32PIN -unsigned char target_id_v[] = { 0x07, 0x6E, 0x52, 0x21 }; //ID for CY8CTMG200 -#endif - -/********************************************************************************************************/ - -// ------------------------- PSoC CY8C21x23 Devices --------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8C21123 -unsigned char target_id_v[] = { 0x00, 0x17 }; //ID for CY8C21123 -#endif -#ifdef CY8C21223 -unsigned char target_id_v[] = { 0x00, 0x18 }; //ID for CY8C21223 -#endif -#ifdef CY8C21323 -unsigned char target_id_v[] = { 0x00, 0x19 }; //ID for CY8C2132 -#endif -#ifdef CY8C21002 -unsigned char target_id_v[] = { 0x00, 0x3F }; //ID for CY8C21x23 ICE pod -#endif - -// ------------------------- PSoC CY8C21x34 Devices --------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8C21234 -unsigned char target_id_v[] = { 0x00, 0x36 }; //ID for CY8C21234 -#endif -#ifdef CY8C21334 -unsigned char target_id_v[] = { 0x00, 0x37 }; //ID for CY8C21334 -#endif -#ifdef CY8C21434 -unsigned char target_id_v[] = { 0x00, 0x38 }; //ID for CY8C21434 -#endif -#ifdef CY8C21534 -unsigned char target_id_v[] = { 0x00, 0x40 }; //ID for CY8C21534 -#endif -#ifdef CY8C21634 -unsigned char target_id_v[] = { 0x00, 0x49 }; //ID for CY8C21634 -#endif -#ifdef CY8C21001 -unsigned char target_id_v[] = { 0x00, 0x39 }; //ID for CY8C21x34 ICE pod -#endif - -// ------------------------- PSoC CY8C24x23A Devices -------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8C24123A -unsigned char target_id_v[] = { 0x00, 0x32 }; //ID for CY8C24123A -#endif -#ifdef CY8C24223A -unsigned char target_id_v[] = { 0x00, 0x33 }; //ID for CY8C24223A -#endif -#ifdef CY8C24423A -unsigned char target_id_v[] = { 0x00, 0x34 }; //ID for CY8C24423A -#endif -#ifdef CY8C24000A -unsigned char target_id_v[] = { 0x00, 0x35 }; //ID for CY8C24x23A ICE pod -#endif - -// ------------------------- PSoC CY8C24x94 Devices --------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8C24794 -unsigned char target_id_v[] = { 0x00, 0x1D }; //ID for CY8C24794 -#endif -#ifdef CY8C24894 -unsigned char target_id_v[] = { 0x00, 0x1F }; //ID for CY8C24894 -#endif -#ifdef CY8C24994 -unsigned char target_id_v[] = { 0x00, 0x59 }; //ID for CY8C24994 -#endif -#ifdef CY8C24094 -unsigned char target_id_v[] = { 0x00, 0x1B }; //ID for CY8C24094 -#endif - -// ------------------------- PSoC CY8C27x43 Devices --------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8C27143 -unsigned char target_id_v[] = { 0x00, 0x09 }; //ID for CY8C27143 -#endif -#ifdef CY8C27243 -unsigned char target_id_v[] = { 0x00, 0x0A }; //ID for CY8C27243 -#endif -#ifdef CY8C27443 -unsigned char target_id_v[] = { 0x00, 0x0B }; //ID for CY8C27443 -#endif -#ifdef CY8C27543 -unsigned char target_id_v[] = { 0x00, 0x0C }; //ID for CY8C27543 -#endif -#ifdef CY8C27643 -unsigned char target_id_v[] = { 0x00, 0x0D }; //ID for CY8C27643 -#endif -#ifdef CY8C27002 -unsigned char target_id_v[] = { 0x00, 0x0E }; //ID for CY8C27x43 ICE pod -#endif - -// ------------------------- PSoC CY8C29x66 Devices --------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CY8C29466 -unsigned char target_id_v[] = { 0x00, 0x2A }; //ID for CY8C29466 -#endif -#ifdef CY8C29566 -unsigned char target_id_v[] = { 0x00, 0x2B }; //ID for CY8C29566 -#endif -#ifdef CY8C29666 -unsigned char target_id_v[] = { 0x00, 0x2C }; //ID for CY8C29666 -#endif -#ifdef CY8C29866 -unsigned char target_id_v[] = { 0x00, 0x2D }; //ID for CY8C29866 -#endif -#ifdef CY8C29002 -unsigned char target_id_v[] = { 0x00, 0x2E }; //ID for CY8C29002 -#endif - -// --------- CY8C20x66 Vectors ------------------------------------------------ -// ---------------------------------------------------------------------------- -#ifdef TSYNC -const unsigned int num_bits_tsync_enable = 110; -const unsigned char tsync_enable[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE2, 0x1F, 0x7F, 0x02, 0x7D, 0xC4, 0x09, - 0xF7, 0x00, 0x1F, 0xDE, 0xE0, 0x1C -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01111111, 0 b00000010, - 0 b01111101, 0 b11000100, 0 b00001001, - 0 b11110111, 0 b00000000, 0 b00011111, 0 b11011110, 0 b11100000, - 0 b00011100 -#endif -}; - -const unsigned int num_bits_tsync_disable = 110; -const unsigned char tsync_disable[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE2, 0x1F, 0x71, 0x00, 0x7D, 0xFC, 0x01, - 0xF7, 0x00, 0x1F, 0xDE, 0xE0, 0x1C -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01110001, 0 b00000000, - 0 b01111101, 0 b11111100, 0 b00000001, - 0 b11110111, 0 b00000000, 0 b00011111, 0 b11011110, 0 b11100000, - 0 b00011100 -#endif -}; -#endif - -#ifdef CY8CTMx30x -#ifdef ID_SETUP_1 -const unsigned int num_bits_id_setup_1 = 616; //KIMC, 2009.08.11, PTJ: id_setup_1 with TSYNC enabled for MW and disabled for IOW -const unsigned char id_setup_1[] = { - 0 b11001010, 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00001101, 0 b11101110, 0 b00100001, 0 b11110111, 0 b11110000, - 0 b00100111, 0 b11011100, 0 b01000000, - 0 b10011111, 0 b01110000, 0 b00000001, 0 b11111101, 0 b11101110, - 0 b00000001, 0 b11100111, 0 b11000001, - 0 b11010111, 0 b10011111, 0 b00100000, 0 b01111110, 0 b00111111, - 0 b10011101, 0 b01111000, 0 b11110110, - 0 b00100001, 0 b11110111, 0 b10111000, 0 b10000111, 0 b11011111, - 0 b11000000, 0 b00011111, 0 b01110001, - 0 b00000000, 0 b01111101, 0 b11000000, 0 b00000111, 0 b11110111, - 0 b10111000, 0 b00000111, 0 b11011110, - 0 b10000000, 0 b01111111, 0 b01111010, 0 b10000000, 0 b01111101, - 0 b11101100, 0 b00000001, 0 b11110111, - 0 b10000000, 0 b01001111, 0 b11011111, 0 b00000000, 0 b00011111, - 0 b01111100, 0 b10100000, 0 b01111101, - 0 b11110100, 0 b01100001, 0 b11110111, 0 b11111000, 0 b10010111 -}; -#endif -#else -#ifdef ID_SETUP_1 -const unsigned int num_bits_id_setup_1 = 594; //PTJ: id_setup_1 with TSYNC enabled for MW and disabled for IOW -const unsigned char id_setup_1[] = { -#ifdef HEX_DEFINE - 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0D, 0xEE, 0x21, 0xF7, 0xF0, 0x27, 0xDC, 0x40, - 0x9F, 0x70, 0x01, 0xFD, 0xEE, 0x01, /*0x21, */ 0xE7, 0xC1, - 0xD7, 0x9F, 0x20, 0x7E, 0x7D, 0x88, 0x7D, 0xEE, - 0x21, 0xF7, 0xF0, 0x07, 0xDC, 0x40, 0x1F, 0x70, - 0x01, 0xFD, 0xEE, 0x01, 0xF7, 0xA0, 0x1F, 0xDE, - 0xA0, 0x1F, 0x7B, 0x00, 0x7D, 0xE0, 0x13, 0xF7, - 0xC0, 0x07, 0xDF, 0x28, 0x1F, 0x7D, 0x18, 0x7D, - 0xFE, 0x25, 0xC0 -#else - 0 b11001010, 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00001101, 0 b11101110, 0 b00100001, 0 b11110111, 0 b11110000, - 0 b00100111, 0 b11011100, 0 b01000000, - 0 b10011111, 0 b01110000, 0 b00000001, 0 b11111101, 0 b11101110, - 0 b00100001, 0 b11100111, 0 b11000001, - 0 b11010111, 0 b10011111, 0 b00100000, 0 b01111110, 0 b01111101, - 0 b10001000, 0 b01111101, 0 b11101110, - 0 b00100001, 0 b11110111, 0 b11110000, 0 b00000111, 0 b11011100, - 0 b01000000, 0 b00011111, 0 b01110000, - 0 b00000001, 0 b11111101, 0 b11101110, 0 b00000001, 0 b11110111, - 0 b10100000, 0 b00011111, 0 b11011110, - 0 b10100000, 0 b00011111, 0 b01111011, 0 b00000000, 0 b01111101, - 0 b11100000, 0 b00010011, 0 b11110111, - 0 b11000000, 0 b00000111, 0 b11011111, 0 b00101000, 0 b00011111, - 0 b01111101, 0 b00011000, 0 b01111101, - 0 b11111110, 0 b00100101, 0 b11000000 -#endif -}; -#endif -#endif - -#ifdef SET_BLOCK_NUM -const unsigned int num_bits_set_block_num = 11; //PTJ: -const unsigned char set_block_num[] = { -#ifdef HEX_DEFINE - 0x9f, 0x40, 0x1c -#else - 0 b11011110, 0 b11100000, 0 b00011110, 0 b01111101, 0 b00000000, - 0 b01110000 -#endif -}; - -const unsigned int num_bits_set_block_num_end = 3; //PTJ: this selects the first three bits of set_block_num_end -const unsigned char set_block_num_end = 0xE0; -#endif - -#ifdef READ_WRITE_SETUP -const unsigned int num_bits_read_write_setup = 66; //PTJ: -const unsigned char read_write_setup[] = { -#ifdef HEX_DEFINE - 0xde, 0xf0, 0x1f, 0x78, 0x00, 0x7d, 0xa0, 0x03, - 0xc0 -#else - 0 b11011110, 0 b11110000, 0 b00011111, 0 b01111000, 0 b00000000, - 0 b01111101, 0 b10100000, 0 b00000011, - 0 b11000000 -#endif -}; -#endif - -#ifdef VERIFY_SETUP -const unsigned int num_bits_my_verify_setup = 440; -const unsigned char verify_setup[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x7f, 0x02, 0x7d, 0xc4, 0x09, - 0xf7, 0x00, 0x1f, 0x9f, 0x07, 0x5e, 0xfc, 0x81, - 0xf9, 0xf7, 0x01, 0xf7, 0xf0, 0x07, 0xdc, 0x40, - 0x1f, 0x70, 0x01, 0xfd, 0xee, 0x01, 0xf6, 0xa8, - 0x0f, 0xde, 0x80, 0x7f, 0x7a, 0x80, 0x7d, 0xec, - 0x01, 0xf7, 0x80, 0x0f, 0xdf, 0x00, 0x1f, 0x7c, - 0xa0, 0xfd, 0xf4, 0x61, 0xf7, 0xf8, 0x97 -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01111111, 0 b00000010, - 0 b01111101, 0 b11000100, 0 b00001001, - 0 b11110111, 0 b00000000, 0 b00011111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111001, 0 b11110111, 0 b00000001, 0 b11110111, 0 b11110000, - 0 b00000111, 0 b11011100, 0 b01000000, - 0 b00011111, 0 b01110000, 0 b00000001, 0 b11111101, 0 b11101110, - 0 b00000001, 0 b11110110, 0 b10101000, - 0 b00001111, 0 b11011110, 0 b10000000, 0 b01111111, 0 b01111010, - 0 b10000000, 0 b01111101, 0 b11101100, - 0 b00000001, 0 b11110111, 0 b10000000, 0 b00001111, 0 b11011111, - 0 b00000000, 0 b00011111, 0 b01111100, - 0 b10100000, 0 b01111101, 0 b11110100, 0 b01100001, 0 b11110111, - 0 b11111000, 0 b10010111 -#endif -}; -#endif - -#ifdef ERASE -const unsigned int num_bits_erase = 396; //PTJ: erase with TSYNC Enable and Disable -const unsigned char erase[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x7f, 0x02, 0x7d, 0xc4, 0x09, - 0xf7, 0x00, 0x1f, 0x9f, 0x07, 0x5e, 0x7c, 0x85, - 0xfd, 0xfc, 0x01, 0xf7, 0x10, 0x07, 0xdc, 0x00, - 0x7f, 0x7b, 0x80, 0x7d, 0xe0, 0x0b, 0xf7, 0xa0, - 0x1f, 0xd7, 0xa0, 0x1f, 0x7b, 0x04, 0x7d, 0xf0, - 0x01, 0xf7, 0xc9, 0x87, 0xdf, 0x48, 0x1f, 0x7f, - 0x89, 0x70 -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01111111, 0 b00000010, - 0 b01111101, 0 b11000100, 0 b00001001, - 0 b11110111, 0 b00000000, 0 b00011111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000101, - 0 b11111101, 0 b11111100, 0 b00000001, 0 b11110111, 0 b00010000, - 0 b00000111, 0 b11011100, 0 b00000000, - 0 b01111111, 0 b01111011, 0 b10000000, 0 b01111101, 0 b11100000, - 0 b00001011, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b11011110, 0 b10100000, 0 b00011111, 0 b01111011, - 0 b00000100, 0 b01111101, 0 b11110000, - 0 b00000001, 0 b11110111, 0 b11001001, 0 b10000111, 0 b11011111, - 0 b01001000, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000 -#endif -}; -#endif - -#ifdef SECURE -const unsigned int num_bits_secure = 440; //PTJ: secure with TSYNC Enable and Disable -const unsigned char secure[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x7f, 0x02, 0x7d, 0xc4, 0x09, - 0xf7, 0x00, 0x1f, 0x9f, 0x07, 0x5e, 0x7c, 0x81, - 0xf9, 0xf7, 0x01, 0xf7, 0xf0, 0x07, 0xdc, 0x40, - 0x1f, 0x70, 0x01, 0xfd, 0xee, 0x01, 0xf6, 0xa0, - 0x0f, 0xde, 0x80, 0x7f, 0x7a, 0x80, 0x7d, 0xec, - 0x01, 0xf7, 0x80, 0x27, 0xdf, 0x00, 0x1f, 0x7c, - 0xa0, 0x7d, 0xf4, 0x61, 0xf7, 0xf8, 0x97 -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01111111, 0 b00000010, - 0 b01111101, 0 b11000100, 0 b00001001, - 0 b11110111, 0 b00000000, 0 b00011111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111001, 0 b11110111, 0 b00000001, 0 b11110111, 0 b11110000, - 0 b00000111, 0 b11011100, 0 b01000000, - 0 b00011111, 0 b01110000, 0 b00000001, 0 b11111101, 0 b11101110, - 0 b00000001, 0 b11110110, 0 b10100000, - 0 b00001111, 0 b11011110, 0 b10000000, 0 b01111111, 0 b01111010, - 0 b10000000, 0 b01111101, 0 b11101100, - 0 b00000001, 0 b11110111, 0 b10000000, 0 b00100111, 0 b11011111, - 0 b00000000, 0 b00011111, 0 b01111100, - 0 b10100000, 0 b01111101, 0 b11110100, 0 b01100001, 0 b11110111, - 0 b11111000, 0 b10010111 -#endif -}; -#endif - -#ifdef READ_SECURITY -const unsigned int num_bits_ReadSecuritySetup = 88; //PTJ: READ-SECURITY-SETUP -const unsigned char ReadSecuritySetup[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x60, 0x88, 0x7d, 0x84, 0x21, - 0xf7, 0xb8, 0x07 -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01100000, 0 b10001000, - 0 b01111101, 0 b10000100, 0 b00100001, - 0 b11110111, 0 b10111000, 0 b00000111 -#endif -}; - -const unsigned int num_bits_read_security_pt1 = 78; //PTJ: This sends the beginning of the Read Supervisory command -const unsigned char read_security_pt1[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x72, 0x87, 0x7d, 0xca, 0x01, - 0xf7, 0x28 -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01110010, 0 b10000111, - 0 b01111101, 0 b11001010, 0 b00000001, - 0 b11110111, 0 b00101000 -#endif -}; - -const unsigned int num_bits_read_security_pt1_end = 25; //PTJ: this finishes the Address Low command and sends the Address High command -const unsigned char read_security_pt1_end[] = { -#ifdef HEX_DEFINE - 0xfb, 0x94, 0x03, 0x80 -#else - 0 b11111011, 0 b10010100, 0 b00000011, 0 b10000000 -#endif -}; - -const unsigned int num_bits_read_security_pt2 = 198; //PTJ: load the test queue with the op code for MOV 1,E5h register into Accumulator A -const unsigned char read_security_pt2[] = { -#ifdef HEX_DEFINE - 0xde, 0xe0, 0x1f, 0x7a, 0x01, 0xfd, 0xea, 0x01, - 0xf7, 0xb0, 0x07, 0xdf, 0x0b, 0xbf, 0x7c, 0xf2, - 0xfd, 0xf4, 0x61, 0xf7, 0xb8, 0x87, 0xdf, 0xe2, - 0x5c -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111101, 0 b11101010, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b00000111, 0 b11011111, 0 b00001011, - 0 b10111111, 0 b01111100, 0 b11110010, - 0 b11111101, 0 b11110100, 0 b01100001, 0 b11110111, 0 b10111000, - 0 b10000111, 0 b11011111, 0 b11100010, - 0 b01011100 -#endif -}; - -const unsigned int num_bits_read_security_pt3 = 122; //PTJ: -const unsigned char read_security_pt3[] = { -#ifdef HEX_DEFINE - 0xde, 0xe0, 0x1f, 0x7a, 0x01, 0xfd, 0xea, 0x01, - 0xf7, 0xb0, 0x07, 0xdf, 0x0a, 0x7f, 0x7c, 0xc0 -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111101, 0 b11101010, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b00000111, 0 b11011111, 0 b00001010, - 0 b01111111, 0 b01111100, 0 b11000000 -#endif -}; - -const unsigned int num_bits_read_security_pt3_end = 47; //PTJ: -const unsigned char read_security_pt3_end[] = { -#ifdef HEX_DEFINE - 0xfb, 0xe8, 0xc3, 0xef, 0xf1, 0x2e -#else - 0 b11111011, 0 b11101000, 0 b11000011, 0 b11101111, 0 b11110001, - 0 b00101110 -#endif -}; - -#endif - -// --------- CY8C20x66 Checksum Setup Vector ---------------------------------- -// ---------------------------------------------------------------------------- -#ifdef CHECKSUM_SETUP -const unsigned int num_bits_checksum_setup = 418; //PTJ: Checksum with TSYNC Enable and Disable -const unsigned char checksum_setup[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x7f, 0x02, 0x7d, 0xc4, 0x09, - 0xf7, 0x00, 0x1f, 0x9f, 0x07, 0x5e, 0x7c, 0x81, - 0xf9, 0xf4, 0x01, 0xf7, 0xf0, 0x07, 0xdc, 0x40, - 0x1f, 0x70, 0x01, 0xfd, 0xee, 0x01, 0xf7, 0xa0, - 0x1f, 0xde, 0xa0, 0x1f, 0x7b, 0x00, 0x7d, 0xe0, - 0x0f, 0xf7, 0xc0, 0x07, 0xdf, 0x28, 0x1f, 0x7d, - 0x18, 0x7d, 0xfe, 0x25, 0xc0 -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01111111, 0 b00000010, - 0 b01111101, 0 b11000100, 0 b00001001, - 0 b11110111, 0 b00000000, 0 b00011111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111001, 0 b11110100, 0 b00000001, 0 b11110111, 0 b11110000, - 0 b00000111, 0 b11011100, 0 b01000000, - 0 b00011111, 0 b01110000, 0 b00000001, 0 b11111101, 0 b11101110, - 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b11011110, 0 b10100000, 0 b00011111, 0 b01111011, - 0 b00000000, 0 b01111101, 0 b11100000, - 0 b00001111, 0 b11110111, 0 b11000000, 0 b00000111, 0 b11011111, - 0 b00101000, 0 b00011111, 0 b01111101, - 0 b00011000, 0 b01111101, 0 b11111110, 0 b00100101, 0 b11000000 -#endif -}; -#endif - -// --------- CY8C21x23, CY8C21x34 & CY8C27x43 Checksum Setup Vectors ---------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CHECKSUM_SETUP_21_27 -const unsigned int num_bits_checksum = 286; -const unsigned char checksum_v[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE0, 0x1F, 0x7B, 0x00, 0x79, 0xF0, 0x75, - 0xE7, 0xC8, 0x1F, 0xDE, 0xA0, 0x1F, 0x7A, 0x01, - 0xF9, 0xF7, 0x01, 0xF7, 0xC9, 0x87, 0xDF, 0x48, - 0x1E, 0x7D, 0x00, 0x7D, 0xE0, 0x0F, 0xF7, 0xC0, - 0x07, 0xDF, 0xE2, 0x5C -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111011, 0 b00000000, - 0 b01111001, 0 b11110000, 0 b01110101, - 0 b11100111, 0 b11001000, 0 b00011111, 0 b11011110, 0 b10100000, - 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111001, 0 b11110111, 0 b00000001, 0 b11110111, 0 b11001001, - 0 b10000111, 0 b11011111, 0 b01001000, - 0 b00011110, 0 b01111101, 0 b00000000, 0 b01111101, 0 b11100000, - 0 b00001111, 0 b11110111, 0 b11000000, - 0 b00000111, 0 b11011111, 0 b11100010, 0 b01011100 -#endif -}; -#endif - -// -------------- CY8C24x23 & CY8C24x23A Checksum Setup Vectors --------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CHECKSUM_SETUP_24_24A -const unsigned int num_bits_checksum = 286; -const unsigned char checksum_v[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE0, 0x1F, 0x7B, 0x00, 0x79, 0xF0, 0x75, - 0xE7, 0xC8, 0x1F, 0xDE, 0xA0, 0x1F, 0x7A, 0x01, - 0xF9, 0xF7, 0x01, 0xF7, 0xC9, 0x87, 0xDF, 0x48, - 0x1E, 0x7D, 0x20, 0x7D, 0xE0, 0x0F, 0xF7, 0xC0, - 0x07, 0xDF, 0xE2, 0x5C -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111011, 0 b00000000, - 0 b01111001, 0 b11110000, 0 b01110101, - 0 b11100111, 0 b11001000, 0 b00011111, 0 b11011110, 0 b10100000, - 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111001, 0 b11110111, 0 b00000001, 0 b11110111, 0 b11001001, - 0 b10000111, 0 b11011111, 0 b01001000, - 0 b00011110, 0 b01111101, 0 b00100000, 0 b01111101, 0 b11100000, - 0 b00001111, 0 b11110111, 0 b11000000, - 0 b00000111, 0 b11011111, 0 b11100010, 0 b01011100 -#endif -}; -#endif - -// -------------- CY8C24x94 & CY8C29x66 Checksum Setup Vectors ---------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef CHECKSUM_SETUP_24_29 -const unsigned int num_bits_checksum = 286; -const unsigned char checksum_v[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE0, 0x1F, 0x7B, 0x00, 0x79, 0xF0, 0x75, - 0xE7, 0xC8, 0x1F, 0xDE, 0xA0, 0x1F, 0x7A, 0x01, - 0xF9, 0xF6, 0x01, 0xF7, 0xC9, 0x87, 0xDF, 0x48, - 0x1E, 0x7D, 0x40, 0x7D, 0xE0, 0x0F, 0xF7, 0xC0, - 0x07, 0xDF, 0xE2, 0x5C -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111011, 0 b00000000, - 0 b01111001, 0 b11110000, 0 b01110101, - 0 b11100111, 0 b11001000, 0 b00011111, 0 b11011110, 0 b10100000, - 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111001, 0 b11110110, 0 b00000001, 0 b11110111, 0 b11001001, - 0 b10000111, 0 b11011111, 0 b01001000, - 0 b00011110, 0 b01111101, 0 b00100000, 0 b01111101, 0 b11100000, - 0 b00001111, 0 b11110111, 0 b11000000, - 0 b00000111, 0 b11011111, 0 b11100010, 0 b01011100 -#endif -}; -#endif - -// ---- CY8C20x66 Program Block Vector ---------------------------------------- -// -// ---------------------------------------------------------------------------- -#ifdef PROGRAM_AND_VERIFY -const unsigned int num_bits_program_and_verify = 440; //KIMC, PTJ: length of program_block[], not including zero padding at end -const unsigned char program_and_verify[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x7f, 0x02, 0x7d, 0xc4, 0x09, - 0xf7, 0x00, 0x1f, 0x9f, 0x07, 0x5e, 0x7c, 0x81, - 0xf9, 0xf7, 0x01, 0xf7, 0xf0, 0x07, 0xdc, 0x40, - 0x1f, 0x70, 0x01, 0xfd, 0xee, 0x01, 0xf6, 0xa0, - 0x0f, 0xde, 0x80, 0x7f, 0x7a, 0x80, 0x7d, 0xec, - 0x01, 0xf7, 0x80, 0x57, 0xdf, 0x00, 0x1f, 0x7c, - 0xa0, 0x7d, 0xf4, 0x61, 0xf7, 0xf8, 0x97 -#else - 0 b00011011110, 0 b11100010, 0 b00011111, 0 b01111111, 0 b00000010, - 0 b01111101, 0 b11000100, 0 b00001001, - 0 b00011110111, 0 b00000000, 0 b00011111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b00011111001, 0 b11110111, 0 b00000001, 0 b11110111, 0 b11110000, - 0 b00000111, 0 b11011100, 0 b01000000, - 0 b00000011111, 0 b01110000, 0 b00000001, 0 b11111101, 0 b11101110, - 0 b00000001, 0 b11110110, 0 b10100000, - 0 b00000001111, 0 b11011110, 0 b10000000, 0 b01111111, 0 b01111010, - 0 b10000000, 0 b01111101, 0 b11101100, - 0 b00000000001, 0 b11110111, 0 b10000000, 0 b01010111, 0 b11011111, - 0 b00000000, 0 b00011111, 0 b01111100, - 0 b00010100000, 0 b01111101, 0 b11110100, 0 b01100001, 0 b11110111, - 0 b11111000, 0 b10010111 -#endif -}; -#endif - -// ---- CY8C21xxx, CY8C24x23A, CY8C24x94 & CY8C29x66 Program Block Vectors ---- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef PROGRAM_BLOCK_21_24_29 -const unsigned int num_bits_program_block = 308; -const unsigned char program_block[] = { -#ifdef HEX_DEFINE - 0x9F, 0x8A, 0x9E, 0x7F, 0x2B, 0x7D, 0xEE, 0x01, - 0xF7, 0xB0, 0x07, 0x9F, 0x07, 0x5E, 0x7C, 0x81, - 0xFD, 0xEA, 0x01, 0xF7, 0xA0, 0x1F, 0x9F, 0x70, - 0x1F, 0x7C, 0x98, 0x7D, 0xF4, 0x81, 0xF7, 0x80, - 0x17, 0xDF, 0x00, 0x1F, 0x7F, 0x89, 0x70 -#else - 0 b10011111, 0 b10001010, 0 b10011110, 0 b01111111, 0 b00101011, - 0 b01111101, 0 b11101110, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b00000111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111101, 0 b11101010, 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b10011111, 0 b01110000, - 0 b00011111, 0 b01111100, 0 b10011000, 0 b01111101, 0 b11110100, - 0 b10000001, 0 b11110111, 0 b10000000, - 0 b00010111, 0 b11011111, 0 b00000000, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000 -#endif -}; -#endif - -// --------------------- CY8C27x43 Program Block Vectors----------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -#ifdef PROGRAM_BLOCK_27 -const unsigned int num_bits_program_block = 308; - -const unsigned char program_block[] = { -#ifdef HEX_DEFINE - 0x9F, 0x82, 0xBE, 0x7F, 0x2B, 0x7D, 0xEE, 0x01, - 0xF7, 0xB0, 0x07, 0x9F, 0x07, 0x5E, 0x7C, 0x81, - 0xFD, 0xEA, 0x01, 0xF7, 0xA0, 0x1F, 0x9F, 0x70, - 0x1F, 0x7C, 0x98, 0x7D, 0xF4, 0x81, 0xF7, 0x80, - 0x17, 0xDF, 0x00, 0x1F, 0x7F, 0x89, 0x70 -#else - 0 b10011111, 0 b10000010, 0 b10111110, 0 b01111111, 0 b00101011, - 0 b01111101, 0 b11101110, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b00000111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111101, 0 b11101010, 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b10011111, 0 b01110000, - 0 b00011111, 0 b01111100, 0 b10011000, 0 b01111101, 0 b11110100, - 0 b10000001, 0 b11110111, 0 b10000000, - 0 b00010111, 0 b11011111, 0 b00000000, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000 -#endif -}; -#endif - -// ----------------------------- General PSoC Vectors-------------------------- -// Modifying these tables is NOT recommendended. Doing so will all but -// guarantee an ISSP error, unless updated vectors have been recommended or -// provided by Cypress Semiconductor. -// ---------------------------------------------------------------------------- -const unsigned int num_bits_init1 = 396; -const unsigned char init1_v[] = { -#ifdef HEX_DEFINE - 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0D, 0xEE, 0x01, 0xF7, 0xB0, 0x07, 0x9F, 0x07, - 0x5E, 0x7C, 0x81, 0xFD, 0xEA, 0x01, 0xF7, 0xA0, - 0x1F, 0x9F, 0x70, 0x1F, 0x7C, 0x98, 0x7D, 0xF4, - 0x81, 0xF7, 0x80, 0x4F, 0xDF, 0x00, 0x1F, 0x7F, - 0x89, 0x70 -#else - 0 b11001010, 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00000000, 0 b00000000, 0 b00000000, - 0 b00001101, 0 b11101110, 0 b00000001, 0 b11110111, 0 b10110000, - 0 b00000111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, 0 b11111101, 0 b11101010, - 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b10011111, 0 b01110000, 0 b00011111, 0 b01111100, - 0 b10011000, 0 b01111101, 0 b11110100, - 0 b10000001, 0 b11110111, 0 b10000000, 0 b01001111, 0 b11011111, - 0 b00000000, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000 -#endif -}; - -const unsigned int num_bits_init2 = 286; -const unsigned char init2_v[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE0, 0x1F, 0x7B, 0x00, 0x79, 0xF0, 0x75, - 0xE7, 0xC8, 0x1F, 0xDE, 0xA0, 0x1F, 0x7A, 0x01, - 0xF9, 0xF7, 0x01, 0xF7, 0xC9, 0x87, 0xDF, 0x48, - 0x1E, 0x7D, 0x00, 0xFD, 0xE0, 0x0D, 0xF7, 0xC0, - 0x07, 0xDF, 0xE2, 0x5C -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111011, 0 b00000000, - 0 b01111001, 0 b11110000, 0 b01110101, - 0 b11100111, 0 b11001000, 0 b00011111, 0 b11011110, 0 b10100000, - 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111001, 0 b11110111, 0 b00000001, 0 b11110111, 0 b11001001, - 0 b10000111, 0 b11011111, 0 b01001000, - 0 b00011110, 0 b01111101, 0 b00000000, 0 b11111101, 0 b11100000, - 0 b00001101, 0 b11110111, 0 b11000000, - 0 b00000111, 0 b11011111, 0 b11100010, 0 b01011100 -#endif -}; - -const unsigned int num_bits_init3_5v = 836; -const unsigned char init3_5v[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE0, 0x1F, 0x7A, 0x01, 0xFD, 0xEA, 0x01, - 0xF7, 0xB0, 0x47, 0xDF, 0x0A, 0x3F, 0x7C, 0xFE, - 0x7D, 0xF4, 0x61, 0xF7, 0xF8, 0x97, 0x00, 0x00, - 0x03, 0x7B, 0x80, 0x7D, 0xE8, 0x07, 0xF7, 0xA8, - 0x07, 0xDE, 0xC1, 0x1F, 0x7C, 0x30, 0x7D, 0xF3, - 0xD5, 0xF7, 0xD1, 0x87, 0xDE, 0xE2, 0x1F, 0x7F, - 0x89, 0x70, 0x00, 0x00, 0x37, 0xB8, 0x07, 0xDE, - 0x80, 0x7F, 0x7A, 0x80, 0x7D, 0xEC, 0x11, 0xF7, - 0xC2, 0x8F, 0xDF, 0x3F, 0xBF, 0x7D, 0x18, 0x7D, - 0xFE, 0x25, 0xC0, 0x00, 0x00, 0xDE, 0xE0, 0x1F, - 0x7A, 0x01, 0xFD, 0xEA, 0x01, 0xF7, 0xB0, 0x47, - 0xDF, 0x0C, 0x1F, 0x7C, 0xF4, 0x7D, 0xF4, 0x61, - 0xF7, 0xB8, 0x87, 0xDF, 0xE2, 0x5C, 0x00, 0x00, - 0x00 -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111101, 0 b11101010, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b01000111, 0 b11011111, 0 b00001010, - 0 b00111111, 0 b01111100, 0 b11111110, - 0 b01111101, 0 b11110100, 0 b01100001, 0 b11110111, 0 b11111000, - 0 b10010111, 0 b00000000, 0 b00000000, - 0 b00000011, 0 b01111011, 0 b10000000, 0 b01111101, 0 b11101000, - 0 b00000111, 0 b11110111, 0 b10101000, - 0 b00000111, 0 b11011110, 0 b11000001, 0 b00011111, 0 b01111100, - 0 b00110000, 0 b01111101, 0 b11110011, - 0 b11010101, 0 b11110111, 0 b11010001, 0 b10000111, 0 b11011110, - 0 b11100010, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000, 0 b00000000, 0 b00000000, 0 b00110111, - 0 b10111000, 0 b00000111, 0 b11011110, - 0 b10000000, 0 b01111111, 0 b01111010, 0 b10000000, 0 b01111101, - 0 b11101100, 0 b00010001, 0 b11110111, - 0 b11000010, 0 b10001111, 0 b11011111, 0 b00111111, 0 b10111111, - 0 b01111101, 0 b00011000, 0 b01111101, - 0 b11111110, 0 b00100101, 0 b11000000, 0 b00000000, 0 b00000000, - 0 b11011110, 0 b11100000, 0 b00011111, - 0 b01111010, 0 b00000001, 0 b11111101, 0 b11101010, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b01000111, - 0 b11011111, 0 b00001100, 0 b00011111, 0 b01111100, 0 b11110100, - 0 b01111101, 0 b11110100, 0 b01100001, - 0 b11110111, 0 b10111000, 0 b10000111, 0 b11011111, 0 b11100010, - 0 b01011100, 0 b00000000, 0 b00000000, - 0 b00000000 -#endif -}; - -const unsigned int num_bits_init3_3v = 836; -const unsigned char init3_3v[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE0, 0x1F, 0x7A, 0x01, 0xFD, 0xEA, 0x01, - 0xF7, 0xB0, 0x47, 0xDF, 0x0A, 0x3F, 0x7C, 0xFC, - 0x7D, 0xF4, 0x61, 0xF7, 0xF8, 0x97, 0x00, 0x00, - 0x03, 0x7B, 0x80, 0x7D, 0xE8, 0x07, 0xF7, 0xA8, - 0x07, 0xDE, 0xC1, 0x1F, 0x7C, 0x30, 0x7D, 0xF3, - 0xD5, 0xF7, 0xD1, 0x87, 0xDE, 0xE2, 0x1F, 0x7F, - 0x89, 0x70, 0x00, 0x00, 0x37, 0xB8, 0x07, 0xDE, - 0x80, 0x7F, 0x7A, 0x80, 0x7D, 0xEC, 0x11, 0xF7, - 0xC2, 0x8F, 0xDF, 0x3F, 0x3F, 0x7D, 0x18, 0x7D, - 0xFE, 0x25, 0xC0, 0x00, 0x00, 0xDE, 0xE0, 0x1F, - 0x7A, 0x01, 0xFD, 0xEA, 0x01, 0xF7, 0xB0, 0x47, - 0xDF, 0x0C, 0x1F, 0x7C, 0xF4, 0x7D, 0xF4, 0x61, - 0xF7, 0xB8, 0x87, 0xDF, 0xE2, 0x5C, 0x00, 0x00, - 0x00 -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111101, 0 b11101010, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b01000111, 0 b11011111, 0 b00001010, - 0 b00111111, 0 b01111100, 0 b11111100, - 0 b01111101, 0 b11110100, 0 b01100001, 0 b11110111, 0 b11111000, - 0 b10010111, 0 b00000000, 0 b00000000, - 0 b00000011, 0 b01111011, 0 b10000000, 0 b01111101, 0 b11101000, - 0 b00000111, 0 b11110111, 0 b10101000, - 0 b00000111, 0 b11011110, 0 b11000001, 0 b00011111, 0 b01111100, - 0 b00110000, 0 b01111101, 0 b11110011, - 0 b11010101, 0 b11110111, 0 b11010001, 0 b10000111, 0 b11011110, - 0 b11100010, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000, 0 b00000000, 0 b00000000, 0 b00110111, - 0 b10111000, 0 b00000111, 0 b11011110, - 0 b10000000, 0 b01111111, 0 b01111010, 0 b10000000, 0 b01111101, - 0 b11101100, 0 b00010001, 0 b11110111, - 0 b11000010, 0 b10001111, 0 b11011111, 0 b00111111, 0 b00111111, - 0 b01111101, 0 b00011000, 0 b01111101, - 0 b11111110, 0 b00100101, 0 b11000000, 0 b00000000, 0 b00000000, - 0 b11011110, 0 b11100000, 0 b00011111, - 0 b01111010, 0 b00000001, 0 b11111101, 0 b11101010, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b01000111, - 0 b11011111, 0 b00001100, 0 b00011111, 0 b01111100, 0 b11110100, - 0 b01111101, 0 b11110100, 0 b01100001, - 0 b11110111, 0 b10111000, 0 b10000111, 0 b11011111, 0 b11100010, - 0 b01011100, 0 b00000000, 0 b00000000, - 0 b00000000 -#endif -}; - -#if 0 // -const unsigned int num_bits_id_setup = 330; -const unsigned char id_setup_v[] = { - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01110000, 0 b00000001, - 0 b01111101, 0 b11101110, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b00000111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111101, 0 b11101010, 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b10011111, 0 b01110000, - 0 b00011111, 0 b01111100, 0 b10011000, 0 b01111101, 0 b11110100, - 0 b10000001, 0 b11100111, 0 b11010000, - 0 b00000111, 0 b11011110, 0 b00000000, 0 b11011111, 0 b01111100, - 0 b00000000, 0 b01111101, 0 b11111110, - 0 b00100101, 0 b11000000 -}; -#endif -#ifdef ID_SETUP_2 -const unsigned int num_bits_id_setup_2 = 418; //PTJ: id_setup_2 with TSYNC Disable (TSYNC enabled before with SendVector(tsync_enable....) -const unsigned char id_setup_2[] = { -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1f, 0x7f, 0x02, 0x7d, 0xc4, 0x09, - 0xf7, 0x00, 0x1f, 0x9f, 0x07, 0x5e, 0x7c, 0x81, - 0xf9, 0xf4, 0x01, 0xf7, 0xf0, 0x07, 0xdc, 0x40, - 0x1f, 0x70, 0x01, 0xfd, 0xee, 0x01, 0xf7, 0xa0, - 0x1f, 0xde, 0xa0, 0x1f, 0x7b, 0x00, 0x7d, 0xe0, - 0x0d, 0xf7, 0xc0, 0x07, 0xdf, 0x28, 0x1f, 0x7d, - 0x18, 0x7d, 0xfe, 0x25, 0xc0 -#else - 0 b11011110, 0 b11100010, 0 b00011111, 0 b01111111, 0 b00000010, - 0 b01111101, 0 b11000100, 0 b00001001, - 0 b11110111, 0 b00000000, 0 b00011111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111001, 0 b11110100, 0 b00000001, 0 b11110111, 0 b11110000, - 0 b00000111, 0 b11011100, 0 b01000000, - 0 b00011111, 0 b01110000, 0 b00000001, 0 b11111101, 0 b11101110, - 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b11011110, 0 b10100000, 0 b00011111, 0 b01111011, - 0 b00000000, 0 b01111101, 0 b11100000, - 0 b00001101, 0 b11110111, 0 b11000000, 0 b00000111, 0 b11011111, - 0 b00101000, 0 b00011111, 0 b01111101, - 0 b00011000, 0 b01111101, 0 b11111110, 0 b00100101, 0 b11000000 -#endif -}; -#endif - -const unsigned int num_bits_erase_all = 308; -const unsigned char erase_all_v[] = { -#ifdef HEX_DEFINE - 0x9F, 0x82, 0xBE, 0x7F, 0x2B, 0x7D, 0xEE, 0x01, - 0xF7, 0xB0, 0x07, 0x9F, 0x07, 0x5E, 0x7C, 0x81, - 0xFD, 0xEA, 0x01, 0xF7, 0xA0, 0x1F, 0x9F, 0x70, - 0x1F, 0x7C, 0x98, 0x7D, 0xF4, 0x81, 0xF7, 0x80, - 0x2F, 0xDF, 0x00, 0x1F, 0x7F, 0x89, 0x70 -#else - 0 b10011111, 0 b10000010, 0 b10111110, 0 b01111111, 0 b00101011, - 0 b01111101, 0 b11101110, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b00000111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111101, 0 b11101010, 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b10011111, 0 b01110000, - 0 b00011111, 0 b01111100, 0 b10011000, 0 b01111101, 0 b11110100, - 0 b10000001, 0 b11110111, 0 b10000000, - 0 b00101111, 0 b11011111, 0 b00000000, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000 -#endif -}; - -const unsigned char read_id_v[] = { -#ifdef HEX_DEFINE - 0xBF, 0x00, 0xDF, 0x90, 0x00, 0xFE, 0x60, 0xFF, 0x00 -#else - 0 b10111111, 0 b00000000, 0 b11011111, 0 b10010000, 0 b00000000, - 0 b11111110, 0 b0110000, 0 b11111111, 0 b00000000 -#endif -}; - -const unsigned char Switch_Bank1[] = //PTJ: use this to switch between register banks -{ -#ifdef HEX_DEFINE - 0xde, 0xe2, 0x1c -#else - 0 b11011110, 0 b11100010, 0 b00011100 -#endif -}; - -const unsigned char Switch_Bank0[] = //PTJ: use this to switch between register banks -{ -#ifdef HEX_DEFINE - 0xde, 0xe0, 0x1c -#else - 0 b11011110, 0 b11100000, 0 b00011100 -#endif -}; - -const unsigned char read_IMOtrim[] = //PTJ: read the 1,E8h register after id__setup_1 to see if the cal data was loaded properly. -{ -#ifdef HEX_DEFINE - 0xfd, 0x00, 0x10 -#else - 0 b11111101, 0 b00000000, 0 b00010000 -#endif -}; - -const unsigned char read_SPCtrim[] = //PTJ: read the 1,E7h register after id__setup_1 to see if the cal data was loaded properly. -{ -#ifdef HEX_DEFINE - 0xfc, 0xe0, 0x10 -#else - 0 b11111100, 0 b11100000, 0 b00010000 -#endif -}; - -const unsigned char read_VBGfinetrim[] = //PTJ: read the 1,D7h register after id__setup_1 to see if the cal data was loaded properly. -{ -#ifdef HEX_DEFINE - 0xfa, 0xe0, 0x08 -#else - 0 b11111010, 0 b11100000, 0 b0001000 -#endif -}; - -const unsigned char read_reg_end = 0x80; //PTJ: this is the final '1' after a MR command - -const unsigned char write_byte_start = 0x90; //PTJ: this is set to SRAM 0x80 -const unsigned char write_byte_end = 0xE0; - -const unsigned char set_block_number[] = { 0x9F, 0x40, 0xE0 }; - -const unsigned char set_block_number_end = 0xE0; -#ifdef MULTI_BANK -const unsigned char set_bank_number[] = { 0xDE, 0xE2, 0x1F, 0x7D, 0x00 }; -const unsigned char set_bank_number_end[] = { 0xFB, 0xDC, 0x03, 0x80 }; -#endif - -// const unsigned char num_bits_wait_and_poll_end = 40; //PTJ 308: commented out -const unsigned char num_bits_wait_and_poll_end = 30; //PTJ 308: added to match spec -const unsigned char wait_and_poll_end[] = { -// 0x00, 0x00, 0x00, 0x00, 0x00 //PTJ 308: commented out - 0x00, 0x00, 0x00, 0x00 //PTJ 308: added to match spec -}; // forty '0's per the spec - -const unsigned char read_checksum_v[] = { -#ifdef HEX_DEFINE - 0xBF, 0x20, 0xDF, 0x80, 0x80 -#else - 0 b10111111, 0 b00100000, 0 b11011111, 0 b10000000, 0 b10000000 -#endif -}; - -const unsigned char read_byte_v[] = { -#ifdef HEX_DEFINE - 0xB0, 0x80 -#else - 0 b10110000, 0 b10000000 -#endif -}; - -const unsigned int num_bits_verify_setup = 264; -const unsigned char verify_setup_v[] = { -#ifdef HEX_DEFINE - 0xDE, 0xE0, 0x1F, 0x7B, 0x00, 0x79, 0xF0, 0x75, - 0xE7, 0xC8, 0x1F, 0xDE, 0xA0, 0x1F, 0x7A, 0x01, - 0xF9, 0xF7, 0x01, 0xF7, 0xC9, 0x87, 0xDF, 0x48, - 0x1F, 0x78, 0x00, 0xFD, 0xF0, 0x01, 0xF7, 0xF8, - 0x97 -#else - 0 b11011110, 0 b11100000, 0 b00011111, 0 b01111011, 0 b00000000, - 0 b01111001, 0 b11110000, 0 b01110101, - 0 b11100111, 0 b11001000, 0 b00011111, 0 b11011110, 0 b10100000, - 0 b00011111, 0 b01111010, 0 b00000001, - 0 b11111001, 0 b11110111, 0 b00000001, 0 b11110111, 0 b11001001, - 0 b10000111, 0 b11011111, 0 b01001000, - 0 b00011111, 0 b01111000, 0 b00000000, 0 b11111101, 0 b11110000, - 0 b00000001, 0 b11110111, 0 b11111000, - 0 b10010111 -#endif -}; - -const unsigned int num_bits_security = 308; -const unsigned char security_v[] = { -#ifdef HEX_DEFINE - 0x9F, 0x8A, 0x9E, 0x7F, 0x2B, 0x7D, 0xEE, 0x01, - 0xF7, 0xB0, 0x07, 0x9F, 0x07, 0x5E, 0x7C, 0x81, - 0xFD, 0xEA, 0x01, 0xF7, 0xA0, 0x1F, 0x9F, 0x70, - 0x1F, 0x7C, 0x98, 0x7D, 0xF4, 0x81, 0xF7, 0x80, - 0x27, 0xDF, 0x00, 0x1F, 0x7F, 0x89, 0x70 -#else - 0 b10011111, 0 b10001010, 0 b10011110, 0 b01111111, 0 b00101011, - 0 b01111101, 0 b11101110, 0 b00000001, - 0 b11110111, 0 b10110000, 0 b00000111, 0 b10011111, 0 b00000111, - 0 b01011110, 0 b01111100, 0 b10000001, - 0 b11111101, 0 b11101010, 0 b00000001, 0 b11110111, 0 b10100000, - 0 b00011111, 0 b10011111, 0 b01110000, - 0 b00011111, 0 b01111100, 0 b10011000, 0 b01111101, 0 b11110100, - 0 b10000001, 0 b11110111, 0 b10000000, - 0 b00100111, 0 b11011111, 0 b00000000, 0 b00011111, 0 b01111111, - 0 b10001001, 0 b01110000 -#endif -}; - -#endif //(INC_ISSP_VECTORS) -#endif //(PROJECT_REV_) -//end of file ISSP_Vectors.h |