Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
ULONG
LlbHwRtcRead(VOID)
{
    /* Issue the GET_TIME request on the RTC control register */
    LlbHwOmap3TwlWrite1(0x4B, 0x29, 0x41);

    /* Read the BCD registers and convert them */
    LlbTime.Second = BCD_INT(LlbHwOmap3TwlRead1(0x4B, 0x1C));
    LlbTime.Minute = BCD_INT(LlbHwOmap3TwlRead1(0x4B, 0x1D));
    LlbTime.Hour = BCD_INT(LlbHwOmap3TwlRead1(0x4B, 0x1E));
    LlbTime.Day = BCD_INT(LlbHwOmap3TwlRead1(0x4B, 0x1F));
    LlbTime.Month = BCD_INT(LlbHwOmap3TwlRead1(0x4B, 0x20));
    LlbTime.Year = BCD_INT(LlbHwOmap3TwlRead1(0x4B, 0x21));
    LlbTime.Year += (LlbTime.Year > 80) ? 1900 : 2000;
    return 0;
}
Exemplo n.º 4
0
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);
}