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
LlbHwOmap3TwlRead1(IN UCHAR ChipAddress,IN UCHAR RegisterAddress)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
LlbHwOmap3TwlWrite(IN UCHAR ChipAddress,IN UCHAR RegisterAddress,IN UCHAR Length,IN PUCHAR Values)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
LlbHwOmap3TwlWrite1(IN UCHAR ChipAddress,IN UCHAR RegisterAddress,IN UCHAR Value)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