1 /* 2 * PROJECT: ReactOS Boot Loader 3 * LICENSE: BSD - See COPYING.ARM in the top level directory 4 * FILE: boot/armllb/hw/omap3-zoom2/hwtwl40x.c 5 * PURPOSE: LLB Synpatics Keypad Support for OMAP3 ZOOM 2 6 * PROGRAMMERS: ReactOS Portable Systems Group 7 */ 8 9 #include "precomp.h" 10 11 /* FUNCTIONS ******************************************************************/ 12 13 UCHAR 14 NTAPI 15 LlbHwOmap3TwlRead1(IN UCHAR ChipAddress, 16 IN UCHAR RegisterAddress) 17 { 18 volatile int i = 1000; 19 20 /* Select the register */ 21 LlbHwOmap3TwlWrite(ChipAddress, RegisterAddress, 0, NULL); 22 23 /* Now read it */ 24 WRITE_REGISTER_USHORT(0x48070024, 0x8401); 25 for (i = 1000; i > 0; i--); 26 return READ_REGISTER_USHORT(0x4807001c); 27 } 28 29 VOID 30 NTAPI 31 LlbHwOmap3TwlWrite(IN UCHAR ChipAddress, 32 IN UCHAR RegisterAddress, 33 IN UCHAR Length, 34 IN PUCHAR Values) 35 { 36 volatile int i = 1000; 37 ULONG j; 38 39 /* Select chip address */ 40 WRITE_REGISTER_USHORT(0x4807002c, ChipAddress); 41 WRITE_REGISTER_USHORT(0x48070018, Length + 1); 42 43 /* Enable master transmit mode */ 44 WRITE_REGISTER_USHORT(0x48070024, 0x8601); 45 WRITE_REGISTER_USHORT(0x4807001c, RegisterAddress); 46 47 /* Loop each byte */ 48 for (j = 0; j < Length; j++) 49 { 50 /* Write the data */ 51 WRITE_REGISTER_USHORT(0x4807001c, Values[j]); 52 } 53 54 /* Issue stop command */ 55 WRITE_REGISTER_USHORT(0x48070024, 0x8602); 56 for (i = 1000; i > 0; i--); 57 } 58 59 VOID 60 NTAPI 61 LlbHwOmap3TwlWrite1(IN UCHAR ChipAddress, 62 IN UCHAR RegisterAddress, 63 IN UCHAR Value) 64 { 65 /* Do the actual write */ 66 LlbHwOmap3TwlWrite(ChipAddress, RegisterAddress, 1, &Value); 67 } 68 69 /* EOF */ 70