FreeCalypso > hg > freecalypso-tools
comparison target-utils/libbase/abbdrv.c @ 499:44a1de4264d8
target-utils: added support for secret register page 2 of Iota ABB
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sat, 25 May 2019 22:20:34 +0000 |
| parents | 74610c4f10f7 |
| children | a04a145098f1 |
comparison
equal
deleted
inserted
replaced
| 498:ca98f800bbf3 | 499:44a1de4264d8 |
|---|---|
| 22 */ | 22 */ |
| 23 | 23 |
| 24 #include "types.h" | 24 #include "types.h" |
| 25 #include "abbdefs.h" | 25 #include "abbdefs.h" |
| 26 | 26 |
| 27 /* TWL3025 */ | 27 /* TWL3025, modified for page 2 support */ |
| 28 #define REG_PAGE(n) ((n) >> 7) | 28 #define REG_PAGE(n) ((n) >> 6) |
| 29 #define REG_ADDR(n) ((n) & 0x1f) | 29 #define REG_ADDR(n) ((n) & 0x1f) |
| 30 | 30 |
| 31 #define TWL3025_DEV_IDX 0 /* On the SPI bus */ | 31 #define TWL3025_DEV_IDX 0 /* On the SPI bus */ |
| 32 #define TWL3025_TSP_DEV_IDX 0 /* On the TSP bus */ | 32 #define TWL3025_TSP_DEV_IDX 0 /* On the TSP bus */ |
| 33 | 33 |
| 68 } | 68 } |
| 69 | 69 |
| 70 /* Switch the register page of the TWL3025 */ | 70 /* Switch the register page of the TWL3025 */ |
| 71 abb_select_page(page) | 71 abb_select_page(page) |
| 72 { | 72 { |
| 73 if (page == 0) | 73 switch (page) { |
| 74 case 0: | |
| 74 abb_reg_write(PAGEREG, 1 << 0); | 75 abb_reg_write(PAGEREG, 1 << 0); |
| 75 else | 76 break; |
| 77 case 1: | |
| 76 abb_reg_write(PAGEREG, 1 << 1); | 78 abb_reg_write(PAGEREG, 1 << 1); |
| 79 break; | |
| 80 case 2: | |
| 81 /* not documented in datasheet, learned from TCS211 code */ | |
| 82 abb_reg_write(PAGEREG, 1 << 4); | |
| 83 break; | |
| 84 } | |
| 77 abb_state_page = page; | 85 abb_state_page = page; |
| 78 return(0); | 86 return(0); |
| 79 } | 87 } |
| 80 | 88 |
| 81 abb_init() | 89 abb_init() |
| 95 abb_state_initdone = 1; | 103 abb_state_initdone = 1; |
| 96 return(1); | 104 return(1); |
| 97 } | 105 } |
| 98 | 106 |
| 99 void | 107 void |
| 108 abb_unlock_page2() | |
| 109 { | |
| 110 abb_reg_write(TAPCTRL, 0x01); | |
| 111 abb_reg_write(TAPREG, 0x1B); | |
| 112 } | |
| 113 | |
| 114 void | |
| 100 abb_power_off() | 115 abb_power_off() |
| 101 { | 116 { |
| 102 abb_init(); | 117 abb_init(); |
| 103 serial_flush(); | 118 serial_flush(); |
| 104 abb_reg_write(VRPCDEV, 0x01); | 119 abb_reg_write(VRPCDEV, 0x01); |
