Subversion Repositories freemyipod

Rev

Rev 560 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 560 Rev 581
Line 39... Line 39...
39
 
39
 
40
static bool lcd_dma_busy IDATA_ATTR;
40
static bool lcd_dma_busy IDATA_ATTR;
41
static bool lcd_in_irq IDATA_ATTR;
41
static bool lcd_in_irq IDATA_ATTR;
42
 
42
 
43
 
43
 
44
void lcd_init()
-
 
45
{
-
 
46
    mutex_init(&lcd_mutex);
-
 
47
    wakeup_init(&lcd_wakeup);
-
 
48
    lcd_in_irq = false;
-
 
49
    lcd_dma_busy = true;
-
 
50
    clockgate_dma(0, 4, true);
-
 
51
    if (!(DMAC0C4CONFIG & 1))
-
 
52
    {
-
 
53
        lcd_dma_busy = false;
-
 
54
        clockgate_dma(0, 4, false);
-
 
55
    }
-
 
56
}
-
 
57
 
-
 
58
int lcd_get_width()
44
int lcd_get_width()
59
{
45
{
60
    return LCD_WIDTH;
46
    return LCD_WIDTH;
61
}
47
}
62
 
48
 
Line 93... Line 79...
93
static uint32_t lcd_detect()
79
static uint32_t lcd_detect()
94
{
80
{
95
    return (PDAT6 & 0x30) >> 4;
81
    return (PDAT6 & 0x30) >> 4;
96
}
82
}
97
 
83
 
-
 
84
void lcd_init()
-
 
85
{
-
 
86
    mutex_init(&lcd_mutex);
-
 
87
    wakeup_init(&lcd_wakeup);
-
 
88
    lcd_in_irq = false;
-
 
89
    lcd_dma_busy = true;
-
 
90
    clockgate_dma(0, 4, true);
-
 
91
    if (!(DMAC0C4CONFIG & 1))
-
 
92
    {
-
 
93
        lcd_dma_busy = false;
-
 
94
        clockgate_dma(0, 4, false);
-
 
95
    }
-
 
96
    switch (lcd_detect())
-
 
97
    {
-
 
98
    case 1:
-
 
99
        pmu_write(0x31, 0x0e);  // Vlcd @ 2.400V
-
 
100
        break;
-
 
101
    case 2:
-
 
102
        pmu_write(0x31, 0x12);  // Vlcd @ 2.700V
-
 
103
        break;
-
 
104
    default:
-
 
105
        pmu_write(0x31, 0x0b);  // Vlcd @ 2.000V
-
 
106
    }
-
 
107
}
-
 
108
 
98
bool displaylcd_busy() ICODE_ATTR;
109
bool displaylcd_busy() ICODE_ATTR;
99
bool displaylcd_busy()
110
bool displaylcd_busy()
100
{
111
{
101
    return lcd_dma_busy;
112
    return lcd_dma_busy;
102
}
113
}