diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/synaptics-mep.c | 66 | ||||
-rwxr-xr-x | firmware/export/config-hdd1630.h | 10 | ||||
-rw-r--r-- | firmware/export/synaptics-mep.h | 11 | ||||
-rw-r--r-- | firmware/target/arm/olympus/mrobe-100/button-mr100.c | 30 | ||||
-rwxr-xr-x | firmware/target/arm/philips/hdd1630/backlight-hdd1630.c | 59 | ||||
-rwxr-xr-x | firmware/target/arm/philips/hdd1630/backlight-target.h | 2 | ||||
-rwxr-xr-x | firmware/target/arm/philips/hdd1630/button-hdd1630.c | 48 | ||||
-rwxr-xr-x | firmware/target/arm/philips/hdd1630/power-hdd1630.c | 23 |
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 | ||
82 | static unsigned short syn_status = 0; | ||
83 | |||
76 | static int syn_wait_clk_change(unsigned int val) | 84 | static 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 | ||
143 | static int syn_send_data(int *data, int len) | 151 | int 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 | ||
383 | int syn_read_device(int *data, int len) | 391 | int 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 | ||
409 | static int syn_reset(void) | 417 | int 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) | |||
436 | int syn_init(void) | 444 | int 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 | |||
461 | int syn_get_status(void) | ||
462 | { | ||
463 | return syn_status; | ||
464 | } | ||
465 | |||
466 | void 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 | ||
22 | int syn_init(void); | 24 | int syn_init(void); |
23 | int syn_read_device(int *data, int len); | 25 | int syn_get_status(void); |
26 | void syn_int_enable(bool enable); | ||
27 | int syn_read(int *data, int len); | ||
28 | int syn_send(int *data, int len); | ||
24 | 29 | ||
25 | #ifdef ROCKBOX_HAS_LOGF | ||
26 | void 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 @@ | |||
35 | static int int_btn = BUTTON_NONE; | 35 | static int int_btn = BUTTON_NONE; |
36 | 36 | ||
37 | #ifndef BOOTLOADER | 37 | #ifndef BOOTLOADER |
38 | static int syn_status = 0; | ||
39 | |||
40 | void button_init_device(void) | 38 | void 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 |
28 | static unsigned short backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; | 28 | static const int brightness_vals[16] = |
29 | {255,237,219,201,183,165,147,130,112,94,76,58,40,22,5,0}; | ||
29 | 30 | ||
30 | void _backlight_set_brightness(int brightness) | 31 | void _backlight_set_brightness(int brightness) |
31 | { | 32 | { |
33 | outl(0x80000000 | (brightness_vals[brightness-1] << 16), 0x7000a000); | ||
32 | } | 34 | } |
33 | #endif | 35 | #endif |
34 | 36 | ||
35 | void _backlight_on(void) | 37 | void _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 | ||
41 | void _backlight_off(void) | 43 | void _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 |
48 | void _buttonlight_on(void) | 50 | |
51 | #define BUTTONLIGHT_MASK 0x7f | ||
52 | |||
53 | static unsigned short buttonight_brightness = DEFAULT_BRIGHTNESS_SETTING - 1; | ||
54 | static unsigned short buttonlight_status = 0; | ||
55 | |||
56 | static 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 | ||
80 | void _buttonlight_on(void) | ||
81 | { | ||
82 | if (!buttonlight_status) | ||
83 | { | ||
84 | set_buttonlight(buttonight_brightness); | ||
85 | buttonlight_status = 1; | ||
86 | } | ||
87 | } | ||
88 | |||
52 | void _buttonlight_off(void) | 89 | void _buttonlight_off(void) |
53 | { | 90 | { |
91 | if (buttonlight_status) | ||
92 | { | ||
93 | set_buttonlight(0); | ||
94 | buttonlight_status = 0; | ||
95 | } | ||
96 | } | ||
97 | |||
98 | void _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 |
25 | void _backlight_on(void); | 25 | void _backlight_on(void); |
26 | void _backlight_off(void); | 26 | void _backlight_off(void); |
27 | int __backlight_is_on(void); | ||
28 | 27 | ||
29 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | 28 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
30 | void _backlight_set_brightness(int brightness); | 29 | void _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 |
34 | void _buttonlight_on(void); | 33 | void _buttonlight_on(void); |
35 | void _buttonlight_off(void); | 34 | void _buttonlight_off(void); |
35 | void _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 |
49 | static int syn_status = 0; | ||
50 | |||
51 | void button_init_device(void) | 49 | void 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 | ||
32 | void power_init(void) | 33 | void 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 | ||
51 | unsigned int power_input_status(void) | 73 | unsigned 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 | |||
74 | bool ide_powered(void) | 95 | bool 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 */ |