reactos/boot/armllb/hw/omap3-zoom2/hwsynkp.c
Hermès Bélusca-Maïto 9393fc320e
[FORMATTING] Remove trailing whitespace. Addendum to 34593d93.
Excluded: 3rd-party code (incl. wine) and most of the win32ss.
2021-09-13 03:52:22 +02:00

84 lines
2 KiB
C

/*
* PROJECT: ReactOS Boot Loader
* LICENSE: BSD - See COPYING.ARM in the top level directory
* FILE: boot/armllb/hw/omap3-zoom2/hwsynkp.c
* PURPOSE: LLB Synpatics Keypad Support for OMAP3 ZOOM 2
* PROGRAMMERS: ReactOS Portable Systems Group
*/
#include "precomp.h"
/* FUNCTIONS ******************************************************************/
VOID
NTAPI
LlbHwOmap3SynKpdInitialize(VOID)
{
/* Set GPIO pin 8 on the TWL4030 as an output pin */
LlbHwOmap3TwlWrite1(0x49, 0x9B, 0xC0);
/* Set GPIO pin 8 signal on the TWL4030 ON. This powers the keypad backlight */
LlbHwOmap3TwlWrite1(0x49, 0xA4, 0xC0);
/* Set PENDDIS and COR on the the keypad interrupt controller */
LlbHwOmap3TwlWrite1(0x4A, 0xE9, 0x06);
/* Only falling edge detection for key pressed */
LlbHwOmap3TwlWrite1(0x4A, 0xE8, 0x01);
/* Unmask key-pressed events */
LlbHwOmap3TwlWrite1(0x4A, 0xE4, 0x0E);
/* Set the keypad control register to turn hardware sequencing and turn it on */
LlbHwOmap3TwlWrite1(0x4A, 0xD2, 0x0);
LlbHwOmap3TwlRead1(0x4A, 0xE3);
LlbHwOmap3TwlWrite1(0x4A, 0xD2, 0x43);
}
UCHAR KeyboardMatrixStatus[8];
BOOLEAN LastState = FALSE;
BOOLEAN
NTAPI
LlbHwKbdReady(VOID)
{
UCHAR Value;
Value = LlbHwOmap3TwlRead1(0x4A, 0xE3);
if (!Value) return FALSE;
LastState ^= 1;
if (!LastState) return FALSE;
/* Return whether or not an interrupt is pending */
return TRUE;
}
INT
NTAPI
LlbHwKbdRead(VOID)
{
UCHAR ActiveCol = 0, ActiveRow = 0, col, coldata, row;
for (col = 0; col < 8; col++)
{
coldata = LlbHwOmap3TwlRead1(0x4A, 0xDB + col);
if (coldata)
{
for (row = 0; row < 8; row++)
{
if (coldata == (1 << row))
{
ActiveRow = row;
ActiveCol = col;
break;
}
}
}
}
return ((ActiveCol << 4) | ActiveRow);
}
/* EOF */