summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Arigo <markarigo@gmail.com>2009-02-18 02:19:22 +0000
committerMark Arigo <markarigo@gmail.com>2009-02-18 02:19:22 +0000
commitf34cd80f638a6ca3b336f6ebd14cd958974b2760 (patch)
tree91195848e098a6f0f6372d39424306e32d3df9d2
parent42ef5b0c88f92418c79e7414063c808b7c36a9be (diff)
downloadrockbox-f34cd80f638a6ca3b336f6ebd14cd958974b2760.tar.gz
rockbox-f34cd80f638a6ca3b336f6ebd14cd958974b2760.zip
Backlight brightness and button lights for the Philips HDD1630
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20035 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/synaptics-mep.c66
-rwxr-xr-xfirmware/export/config-hdd1630.h10
-rw-r--r--firmware/export/synaptics-mep.h11
-rw-r--r--firmware/target/arm/olympus/mrobe-100/button-mr100.c30
-rwxr-xr-xfirmware/target/arm/philips/hdd1630/backlight-hdd1630.c59
-rwxr-xr-xfirmware/target/arm/philips/hdd1630/backlight-target.h2
-rwxr-xr-xfirmware/target/arm/philips/hdd1630/button-hdd1630.c48
-rwxr-xr-xfirmware/target/arm/philips/hdd1630/power-hdd1630.c23
8 files changed, 156 insertions, 93 deletions
diff --git a/firmware/drivers/synaptics-mep.c b/firmware/drivers/synaptics-mep.c
index 858edf54fe..a14e875cc1 100644
--- a/firmware/drivers/synaptics-mep.c
+++ b/firmware/drivers/synaptics-mep.c
@@ -33,6 +33,9 @@
33 Protocol: 3-Wire Interface Specification" documentation */ 33 Protocol: 3-Wire Interface Specification" documentation */
34 34
35#if defined(MROBE_100) 35#if defined(MROBE_100)
36#define INT_ENABLE GPIOD_INT_LEV &= ~0x2; GPIOD_INT_EN |= 0x2
37#define INT_DISABLE GPIOD_INT_EN &= ~0x2; GPIOD_INT_CLR |= 0x2
38
36#define ACK (GPIOD_INPUT_VAL & 0x1) 39#define ACK (GPIOD_INPUT_VAL & 0x1)
37#define ACK_HI GPIOD_OUTPUT_VAL |= 0x1 40#define ACK_HI GPIOD_OUTPUT_VAL |= 0x1
38#define ACK_LO GPIOD_OUTPUT_VAL &= ~0x1 41#define ACK_LO GPIOD_OUTPUT_VAL &= ~0x1
@@ -47,6 +50,9 @@
47#define DATA_CL GPIOD_OUTPUT_EN &= ~0x4 50#define DATA_CL GPIOD_OUTPUT_EN &= ~0x4
48 51
49#elif defined(PHILIPS_HDD1630) 52#elif defined(PHILIPS_HDD1630)
53#define INT_ENABLE GPIOA_INT_LEV &= ~0x20; GPIOA_INT_EN |= 0x20
54#define INT_DISABLE GPIOA_INT_EN &= ~0x20; GPIOA_INT_CLR |= 0x20
55
50#define ACK (GPIOD_INPUT_VAL & 0x80) 56#define ACK (GPIOD_INPUT_VAL & 0x80)
51#define ACK_HI GPIOD_OUTPUT_VAL |= 0x80 57#define ACK_HI GPIOD_OUTPUT_VAL |= 0x80
52#define ACK_LO GPIOD_OUTPUT_VAL &= ~0x80 58#define ACK_LO GPIOD_OUTPUT_VAL &= ~0x80
@@ -73,6 +79,8 @@
73#define MEP_READ 0x1 79#define MEP_READ 0x1
74#define MEP_WRITE 0x3 80#define MEP_WRITE 0x3
75 81
82static unsigned short syn_status = 0;
83
76static int syn_wait_clk_change(unsigned int val) 84static int syn_wait_clk_change(unsigned int val)
77{ 85{
78 int i; 86 int i;
@@ -140,12 +148,12 @@ static void syn_flush(void)
140 syn_wait_guest_flush(); 148 syn_wait_guest_flush();
141} 149}
142 150
143static int syn_send_data(int *data, int len) 151int syn_send(int *data, int len)
144{ 152{
145 int i, bit; 153 int i, bit;
146 int parity = 0; 154 int parity = 0;
147 155
148 logf("syn_send_data..."); 156 logf("syn_send...");
149 157
150 /* 1. Lower DATA line to issue a request-to-send to guest */ 158 /* 1. Lower DATA line to issue a request-to-send to guest */
151 DATA_LO; 159 DATA_LO;
@@ -380,7 +388,7 @@ static int syn_read_data(int *data, int data_len)
380 return len; 388 return len;
381} 389}
382 390
383int syn_read_device(int *data, int len) 391int syn_read(int *data, int len)
384{ 392{
385 int i; 393 int i;
386 int ret = READ_ERROR; 394 int ret = READ_ERROR;
@@ -406,7 +414,7 @@ int syn_read_device(int *data, int len)
406 return ret; 414 return ret;
407} 415}
408 416
409static int syn_reset(void) 417int syn_reset(void)
410{ 418{
411 int val, id; 419 int val, id;
412 int data[2]; 420 int data[2];
@@ -415,9 +423,9 @@ static int syn_reset(void)
415 423
416 /* reset module 0 */ 424 /* reset module 0 */
417 val = (0 << 4) | (1 << 3) | 0; 425 val = (0 << 4) | (1 << 3) | 0;
418 syn_send_data(&val, 1); 426 syn_send(&val, 1);
419 427
420 val = syn_read_device(data, 2); 428 val = syn_read(data, 2);
421 if (val == 1) 429 if (val == 1)
422 { 430 {
423 val = data[0] & 0xff; /* packet header */ 431 val = data[0] & 0xff; /* packet header */
@@ -436,7 +444,35 @@ static int syn_reset(void)
436int syn_init(void) 444int syn_init(void)
437{ 445{
438 syn_flush(); 446 syn_flush();
439 return syn_reset(); 447 syn_status = syn_reset();
448
449 if (syn_status)
450 {
451 INT_DISABLE;
452 INT_ENABLE;
453
454 CPU_INT_EN |= HI_MASK;
455 CPU_HI_INT_EN |= GPIO0_MASK;
456 }
457
458 return syn_status;
459}
460
461int syn_get_status(void)
462{
463 return syn_status;
464}
465
466void syn_int_enable(bool enable)
467{
468 if (enable)
469 {
470 INT_ENABLE;
471 }
472 else
473 {
474 INT_DISABLE;
475 }
440} 476}
441 477
442#ifdef ROCKBOX_HAS_LOGF 478#ifdef ROCKBOX_HAS_LOGF
@@ -451,8 +487,8 @@ void syn_info(void)
451 logf("module base info:"); 487 logf("module base info:");
452 data[0] = MEP_READ; 488 data[0] = MEP_READ;
453 data[1] = 0x80; 489 data[1] = 0x80;
454 syn_send_data(data, 2); 490 syn_send(data, 2);
455 val = syn_read_device(data, 8); 491 val = syn_read(data, 8);
456 if (val > 0) 492 if (val > 0)
457 { 493 {
458 for (i = 0; i < 8; i++) 494 for (i = 0; i < 8; i++)
@@ -463,8 +499,8 @@ void syn_info(void)
463 logf("module product info:"); 499 logf("module product info:");
464 data[0] = MEP_READ; 500 data[0] = MEP_READ;
465 data[1] = 0x81; 501 data[1] = 0x81;
466 syn_send_data(data, 2); 502 syn_send(data, 2);
467 val = syn_read_device(data, 8); 503 val = syn_read(data, 8);
468 if (val > 0) 504 if (val > 0)
469 { 505 {
470 for (i = 0; i < 8; i++) 506 for (i = 0; i < 8; i++)
@@ -475,8 +511,8 @@ void syn_info(void)
475 logf("module serialization:"); 511 logf("module serialization:");
476 data[0] = MEP_READ; 512 data[0] = MEP_READ;
477 data[1] = 0x82; 513 data[1] = 0x82;
478 syn_send_data(data, 2); 514 syn_send(data, 2);
479 val = syn_read_device(data, 8); 515 val = syn_read(data, 8);
480 if (val > 0) 516 if (val > 0)
481 { 517 {
482 for (i = 0; i < 8; i++) 518 for (i = 0; i < 8; i++)
@@ -487,8 +523,8 @@ void syn_info(void)
487 logf("1-d sensor info:"); 523 logf("1-d sensor info:");
488 data[0] = MEP_READ; 524 data[0] = MEP_READ;
489 data[1] = 0x80 + 0x20; 525 data[1] = 0x80 + 0x20;
490 syn_send_data(data, 2); 526 syn_send(data, 2);
491 val = syn_read_device(data, 8); 527 val = syn_read(data, 8);
492 if (val > 0) 528 if (val > 0)
493 { 529 {
494 for (i = 0; i < 8; i++) 530 for (i = 0; i < 8; i++)
diff --git a/firmware/export/config-hdd1630.h b/firmware/export/config-hdd1630.h
index 7ccad010fe..69ef99955d 100755
--- a/firmware/export/config-hdd1630.h
+++ b/firmware/export/config-hdd1630.h
@@ -108,15 +108,17 @@
108 108
109/* Define this for LCD backlight available */ 109/* Define this for LCD backlight available */
110#define HAVE_BACKLIGHT 110#define HAVE_BACKLIGHT
111/* #define HAVE_BACKLIGHT_BRIGHTNESS */ 111#define HAVE_BACKLIGHT_BRIGHTNESS
112/* #define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING */
112 113
113/* Main LCD backlight brightness range and defaults */ 114/* Main LCD backlight brightness range and defaults */
114#define MIN_BRIGHTNESS_SETTING 1 115#define MIN_BRIGHTNESS_SETTING 1
115#define MAX_BRIGHTNESS_SETTING 12 116#define MAX_BRIGHTNESS_SETTING 16
116#define DEFAULT_BRIGHTNESS_SETTING 6 117#define DEFAULT_BRIGHTNESS_SETTING 13 /* match OF brightness */
117 118
118/* define this if you have a light associated with the buttons */ 119/* define this if you have a light associated with the buttons */
119/* #define HAVE_BUTTON_LIGHT */ 120#define HAVE_BUTTON_LIGHT
121#define HAVE_BUTTONLIGHT_BRIGHTNESS
120 122
121#define BATTERY_CAPACITY_DEFAULT 630 /* default battery capacity */ 123#define BATTERY_CAPACITY_DEFAULT 630 /* default battery capacity */
122#define BATTERY_CAPACITY_MIN 630 /* min. capacity selectable */ 124#define BATTERY_CAPACITY_MIN 630 /* min. capacity selectable */
diff --git a/firmware/export/synaptics-mep.h b/firmware/export/synaptics-mep.h
index 8f717da884..866add6c29 100644
--- a/firmware/export/synaptics-mep.h
+++ b/firmware/export/synaptics-mep.h
@@ -18,10 +18,13 @@
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#ifndef SYNAPTICS_MEP_H
22#define SYNAPTICS_MEP_H
21 23
22int syn_init(void); 24int syn_init(void);
23int syn_read_device(int *data, int len); 25int syn_get_status(void);
26void syn_int_enable(bool enable);
27int syn_read(int *data, int len);
28int syn_send(int *data, int len);
24 29
25#ifdef ROCKBOX_HAS_LOGF
26void syn_info(void);
27#endif 30#endif
diff --git a/firmware/target/arm/olympus/mrobe-100/button-mr100.c b/firmware/target/arm/olympus/mrobe-100/button-mr100.c
index 9cfd8affa9..130c32739a 100644
--- a/firmware/target/arm/olympus/mrobe-100/button-mr100.c
+++ b/firmware/target/arm/olympus/mrobe-100/button-mr100.c
@@ -35,8 +35,6 @@
35static int int_btn = BUTTON_NONE; 35static int int_btn = BUTTON_NONE;
36 36
37#ifndef BOOTLOADER 37#ifndef BOOTLOADER
38static int syn_status = 0;
39
40void button_init_device(void) 38void button_init_device(void)
41{ 39{
42 /* enable touchpad leds */ 40 /* enable touchpad leds */
@@ -58,21 +56,9 @@ void button_init_device(void)
58 GPIOD_OUTPUT_EN |= 0x4; /* DATA */ 56 GPIOD_OUTPUT_EN |= 0x4; /* DATA */
59 GPIOD_OUTPUT_VAL |= 0x4; /* high */ 57 GPIOD_OUTPUT_VAL |= 0x4; /* high */
60 58
61 if (syn_init()) 59 if (!syn_init())
62 { 60 {
63#ifdef ROCKBOX_HAS_LOGF 61 logf("button_init_dev: touchpad not ready");
64 syn_info();
65#endif
66
67 syn_status = 1;
68
69 /* enable interrupts */
70 GPIOD_INT_LEV &= ~0x2;
71 GPIOD_INT_CLR |= 0x2;
72 GPIOD_INT_EN |= 0x2;
73
74 CPU_INT_EN |= HI_MASK;
75 CPU_HI_INT_EN |= GPIO0_MASK;
76 } 62 }
77} 63}
78 64
@@ -86,13 +72,12 @@ void button_int(void)
86 72
87 int_btn = BUTTON_NONE; 73 int_btn = BUTTON_NONE;
88 74
89 if (syn_status) 75 if (syn_get_status())
90 { 76 {
91 /* disable interrupt while we read the touchpad */ 77 /* disable interrupt while we read the touchpad */
92 GPIOD_INT_EN &= ~0x2; 78 syn_int_enable(false);
93 GPIOD_INT_CLR |= 0x2;
94 79
95 val = syn_read_device(data, 4); 80 val = syn_read(data, 4);
96 if (val > 0) 81 if (val > 0)
97 { 82 {
98 val = data[0] & 0xff; /* packet header */ 83 val = data[0] & 0xff; /* packet header */
@@ -119,7 +104,7 @@ void button_int(void)
119 int_btn |= BUTTON_RIGHT; 104 int_btn |= BUTTON_RIGHT;
120 105
121 /* An Absolute packet should follow which we ignore */ 106 /* An Absolute packet should follow which we ignore */
122 val = syn_read_device(data, 4); 107 val = syn_read(data, 4);
123 108
124 logf(" int_btn = 0x%04x", int_btn); 109 logf(" int_btn = 0x%04x", int_btn);
125 } 110 }
@@ -148,8 +133,7 @@ void button_int(void)
148 } 133 }
149 134
150 /* re-enable interrupts */ 135 /* re-enable interrupts */
151 GPIOD_INT_LEV &= ~0x2; 136 syn_int_enable(true);
152 GPIOD_INT_EN |= 0x2;
153 } 137 }
154} 138}
155#else 139#else
diff --git a/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c b/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c
index eb2c2731ac..eafce13759 100755
--- a/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c
+++ b/firmware/target/arm/philips/hdd1630/backlight-hdd1630.c
@@ -21,35 +21,84 @@
21#include "config.h" 21#include "config.h"
22#include "backlight-target.h" 22#include "backlight-target.h"
23#include "system.h" 23#include "system.h"
24#include "lcd.h"
25#include "backlight.h" 24#include "backlight.h"
25#include "synaptics-mep.h"
26 26
27#ifdef HAVE_BACKLIGHT_BRIGHTNESS 27#ifdef HAVE_BACKLIGHT_BRIGHTNESS
28static unsigned short backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; 28static const int brightness_vals[16] =
29 {255,237,219,201,183,165,147,130,112,94,76,58,40,22,5,0};
29 30
30void _backlight_set_brightness(int brightness) 31void _backlight_set_brightness(int brightness)
31{ 32{
33 outl(0x80000000 | (brightness_vals[brightness-1] << 16), 0x7000a000);
32} 34}
33#endif 35#endif
34 36
35void _backlight_on(void) 37void _backlight_on(void)
36{ 38{
37 GPO32_VAL &= ~0x1000000; 39 GPO32_VAL &= ~0x1000000;
38 GPO32_ENABLE &= ~0x1000000; 40 GPO32_ENABLE &= ~0x1000000;
39} 41}
40 42
41void _backlight_off(void) 43void _backlight_off(void)
42{ 44{
43 GPO32_VAL |= 0x1000000; 45 GPO32_VAL |= 0x1000000;
44 GPO32_ENABLE |= 0x1000000; 46 GPO32_ENABLE |= 0x1000000;
45} 47}
46 48
47#ifdef HAVE_BUTTON_LIGHT 49#ifdef HAVE_BUTTON_LIGHT
48void _buttonlight_on(void) 50
51#define BUTTONLIGHT_MASK 0x7f
52
53static unsigned short buttonight_brightness = DEFAULT_BRIGHTNESS_SETTING - 1;
54static unsigned short buttonlight_status = 0;
55
56static void set_buttonlight(int brightness)
49{ 57{
58 int data[6];
59
60 if (syn_get_status())
61 {
62 syn_int_enable(false);
63
64 /* turn on all touchpad leds */
65 data[0] = 0x05;
66 data[1] = 0x31;
67 data[2] = (brightness & 0xff) << 4;
68 data[3] = 0x00;
69 data[4] = 0x00;
70 data[5] = BUTTONLIGHT_MASK;
71 syn_send(data, 6);
72
73 /* device responds with a single-byte ACK packet */
74 syn_read(data, 2);
75
76 syn_int_enable(true);
77 }
50} 78}
51 79
80void _buttonlight_on(void)
81{
82 if (!buttonlight_status)
83 {
84 set_buttonlight(buttonight_brightness);
85 buttonlight_status = 1;
86 }
87}
88
52void _buttonlight_off(void) 89void _buttonlight_off(void)
53{ 90{
91 if (buttonlight_status)
92 {
93 set_buttonlight(0);
94 buttonlight_status = 0;
95 }
96}
97
98void _buttonlight_set_brightness(int brightness)
99{
100 buttonight_brightness = brightness - 1;
101 set_buttonlight(buttonight_brightness);
102 buttonlight_status = 1;
54} 103}
55#endif 104#endif
diff --git a/firmware/target/arm/philips/hdd1630/backlight-target.h b/firmware/target/arm/philips/hdd1630/backlight-target.h
index 8fb5fa1a56..c7aca54a23 100755
--- a/firmware/target/arm/philips/hdd1630/backlight-target.h
+++ b/firmware/target/arm/philips/hdd1630/backlight-target.h
@@ -24,7 +24,6 @@
24#define _backlight_init() true 24#define _backlight_init() true
25void _backlight_on(void); 25void _backlight_on(void);
26void _backlight_off(void); 26void _backlight_off(void);
27int __backlight_is_on(void);
28 27
29#ifdef HAVE_BACKLIGHT_BRIGHTNESS 28#ifdef HAVE_BACKLIGHT_BRIGHTNESS
30void _backlight_set_brightness(int brightness); 29void _backlight_set_brightness(int brightness);
@@ -33,6 +32,7 @@ void _backlight_set_brightness(int brightness);
33#ifdef HAVE_BUTTON_LIGHT 32#ifdef HAVE_BUTTON_LIGHT
34void _buttonlight_on(void); 33void _buttonlight_on(void);
35void _buttonlight_off(void); 34void _buttonlight_off(void);
35void _buttonlight_set_brightness(int brightness);
36#endif 36#endif
37 37
38#endif 38#endif
diff --git a/firmware/target/arm/philips/hdd1630/button-hdd1630.c b/firmware/target/arm/philips/hdd1630/button-hdd1630.c
index c0ac8d7c10..e8214edf91 100755
--- a/firmware/target/arm/philips/hdd1630/button-hdd1630.c
+++ b/firmware/target/arm/philips/hdd1630/button-hdd1630.c
@@ -46,41 +46,11 @@ void button_click(void)
46} 46}
47 47
48#ifndef BOOTLOADER 48#ifndef BOOTLOADER
49static int syn_status = 0;
50
51void button_init_device(void) 49void button_init_device(void)
52{ 50{
53 /* enable touchpad */ 51 if (!syn_get_status())
54 GPO32_ENABLE |= 0x80;
55 GPO32_VAL &= ~0x80;
56 udelay(1000);
57
58 /* enable ACK, CLK, DATA lines */
59 GPIOD_ENABLE |= 0x80;
60 GPIOA_ENABLE |= (0x10 | 0x20);
61
62 GPIOD_OUTPUT_EN |= 0x80; /* ACK */
63 GPIOD_OUTPUT_VAL |= 0x80; /* high */
64
65 GPIOA_OUTPUT_EN &= ~0x20; /* CLK */
66
67 GPIOA_OUTPUT_EN |= 0x10; /* DATA */
68 GPIOA_OUTPUT_VAL |= 0x10; /* high */
69
70 if (syn_init())
71 { 52 {
72#ifdef ROCKBOX_HAS_LOGF 53 logf("button_init_dev: touchpad not ready");
73 syn_info();
74#endif
75 syn_status = 1;
76
77 /* enable interrupts */
78 GPIOA_INT_LEV &= ~0x20;
79 GPIOA_INT_CLR |= 0x20;
80 GPIOA_INT_EN |= 0x20;
81
82 CPU_INT_EN |= HI_MASK;
83 CPU_HI_INT_EN |= GPIO0_MASK;
84 } 54 }
85} 55}
86 56
@@ -94,19 +64,18 @@ void button_int(void)
94 64
95 int_btn = BUTTON_NONE; 65 int_btn = BUTTON_NONE;
96 66
97 if (syn_status) 67 if (syn_get_status())
98 { 68 {
99 /* disable interrupt while we read the touchpad */ 69 /* disable interrupt while we read the touchpad */
100 GPIOA_INT_EN &= ~0x20; 70 syn_int_enable(false);
101 GPIOA_INT_CLR |= 0x20;
102 71
103 val = syn_read_device(data, 4); 72 val = syn_read(data, 4);
104 if (val > 0) 73 if (val > 0)
105 { 74 {
106 val = data[0] & 0xff; /* packet header */ 75 val = data[0] & 0xff; /* packet header */
107 id = (data[1] >> 4) & 0xf; /* packet id */ 76 id = (data[1] >> 4) & 0xf; /* packet id */
108 77
109 logf("button_read_device..."); 78 logf("syn_read:");
110 logf(" data[0] = 0x%08x", data[0]); 79 logf(" data[0] = 0x%08x", data[0]);
111 logf(" data[1] = 0x%08x", data[1]); 80 logf(" data[1] = 0x%08x", data[1]);
112 logf(" data[2] = 0x%08x", data[2]); 81 logf(" data[2] = 0x%08x", data[2]);
@@ -121,7 +90,7 @@ void button_int(void)
121 int_btn |= BUTTON_RIGHT; 90 int_btn |= BUTTON_RIGHT;
122 91
123 /* An Absolute packet should follow which we ignore */ 92 /* An Absolute packet should follow which we ignore */
124 val = syn_read_device(data, 4); 93 val = syn_read(data, 4);
125 logf(" int_btn = 0x%04x", int_btn); 94 logf(" int_btn = 0x%04x", int_btn);
126 } 95 }
127 else if (val == MEP_ABSOLUTE_HEADER) 96 else if (val == MEP_ABSOLUTE_HEADER)
@@ -149,8 +118,7 @@ void button_int(void)
149 } 118 }
150 119
151 /* re-enable interrupts */ 120 /* re-enable interrupts */
152 GPIOA_INT_LEV &= ~0x20; 121 syn_int_enable(true);
153 GPIOA_INT_EN |= 0x20;
154 } 122 }
155} 123}
156#else 124#else
diff --git a/firmware/target/arm/philips/hdd1630/power-hdd1630.c b/firmware/target/arm/philips/hdd1630/power-hdd1630.c
index 22e11c803a..02279fd560 100755
--- a/firmware/target/arm/philips/hdd1630/power-hdd1630.c
+++ b/firmware/target/arm/philips/hdd1630/power-hdd1630.c
@@ -28,6 +28,7 @@
28#include "power.h" 28#include "power.h"
29#include "logf.h" 29#include "logf.h"
30#include "usb.h" 30#include "usb.h"
31#include "synaptics-mep.h"
31 32
32void power_init(void) 33void power_init(void)
33{ 34{
@@ -46,6 +47,27 @@ void power_init(void)
46 GPIOE_OUTPUT_EN |= 0x40; 47 GPIOE_OUTPUT_EN |= 0x40;
47 GPIOE_OUTPUT_VAL &= ~0x40; /* off */ 48 GPIOE_OUTPUT_VAL &= ~0x40; /* off */
48#endif 49#endif
50
51#ifndef BOOTLOADER
52 /* enable touchpad here because we need it for
53 both buttons and button lights */
54 GPO32_ENABLE |= 0x80;
55 GPO32_VAL &= ~0x80;
56 udelay(1000);
57
58 GPIOD_ENABLE |= 0x80; /* enable ACK */
59 GPIOA_ENABLE |= (0x10 | 0x20); /* enable DATA, CLK */
60
61 GPIOD_OUTPUT_EN |= 0x80; /* set ACK */
62 GPIOD_OUTPUT_VAL |= 0x80; /* high */
63
64 GPIOA_OUTPUT_EN &= ~0x20; /* CLK */
65
66 GPIOA_OUTPUT_EN |= 0x10; /* set DATA */
67 GPIOA_OUTPUT_VAL |= 0x10; /* high */
68
69 syn_init();
70#endif
49} 71}
50 72
51unsigned int power_input_status(void) 73unsigned int power_input_status(void)
@@ -70,7 +92,6 @@ void ide_power_enable(bool on)
70 /* We do nothing */ 92 /* We do nothing */
71} 93}
72 94
73
74bool ide_powered(void) 95bool ide_powered(void)
75{ 96{
76 /* pretend we are always powered - we don't turn it off */ 97 /* pretend we are always powered - we don't turn it off */