mirror of
https://github.com/reactos/reactos.git
synced 2025-01-05 22:12:46 +00:00
9393fc320e
Excluded: 3rd-party code (incl. wine) and most of the win32ss.
83 lines
2 KiB
C
83 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 */
|