diff options
Diffstat (limited to 'firmware/target/arm/iriver/h10')
-rw-r--r-- | firmware/target/arm/iriver/h10/power-h10.c | 5 | ||||
-rw-r--r-- | firmware/target/arm/iriver/h10/usb-h10.c | 63 |
2 files changed, 7 insertions, 61 deletions
diff --git a/firmware/target/arm/iriver/h10/power-h10.c b/firmware/target/arm/iriver/h10/power-h10.c index 6e7b65a803..143248efcd 100644 --- a/firmware/target/arm/iriver/h10/power-h10.c +++ b/firmware/target/arm/iriver/h10/power-h10.c | |||
@@ -71,7 +71,7 @@ void power_init(void) | |||
71 | 71 | ||
72 | bool charger_inserted(void) | 72 | bool charger_inserted(void) |
73 | { | 73 | { |
74 | return (GPIOL_INPUT_VAL & 0x04)?true:false; /* FIXME: This only checks if USB is connected */ | 74 | return (GPIOF_INPUT_VAL & 0x08)?true:false; |
75 | } | 75 | } |
76 | 76 | ||
77 | void ide_power_enable(bool on) | 77 | void ide_power_enable(bool on) |
@@ -89,8 +89,5 @@ bool ide_powered(void) | |||
89 | 89 | ||
90 | void power_off(void) | 90 | void power_off(void) |
91 | { | 91 | { |
92 | /* Give things a second to settle before cutting power */ | ||
93 | sleep(HZ); | ||
94 | |||
95 | GPIOF_OUTPUT_VAL &=~ 0x20; | 92 | GPIOF_OUTPUT_VAL &=~ 0x20; |
96 | } | 93 | } |
diff --git a/firmware/target/arm/iriver/h10/usb-h10.c b/firmware/target/arm/iriver/h10/usb-h10.c index bf687fef47..55d2a0ff75 100644 --- a/firmware/target/arm/iriver/h10/usb-h10.c +++ b/firmware/target/arm/iriver/h10/usb-h10.c | |||
@@ -16,10 +16,6 @@ | |||
16 | * KIND, either express or implied. | 16 | * KIND, either express or implied. |
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | |||
20 | /* Code from the iPod port but commented out. USB detection custom made based | ||
21 | on GPIO analysis */ | ||
22 | |||
23 | #include "config.h" | 19 | #include "config.h" |
24 | #include "cpu.h" | 20 | #include "cpu.h" |
25 | #include "kernel.h" | 21 | #include "kernel.h" |
@@ -37,52 +33,11 @@ | |||
37 | #include "sprintf.h" | 33 | #include "sprintf.h" |
38 | #include "string.h" | 34 | #include "string.h" |
39 | #include "hwcompat.h" | 35 | #include "hwcompat.h" |
40 | #ifdef HAVE_MMC | 36 | #include "pp5020.h" |
41 | #include "ata_mmc.h" | ||
42 | #endif | ||
43 | 37 | ||
44 | void usb_init_device(void) | 38 | void usb_init_device(void) |
45 | { | 39 | { |
46 | #if 0 | 40 | /* USB is initialized by bootloader */ |
47 | int r0; | ||
48 | outl(inl(0x70000084) | 0x200, 0x70000084); | ||
49 | |||
50 | outl(inl(0x7000002C) | 0x3000000, 0x7000002C); | ||
51 | outl(inl(0x6000600C) | 0x400000, 0x6000600C); | ||
52 | |||
53 | outl(inl(0x60006004) | 0x400000, 0x60006004); /* reset usb start */ | ||
54 | outl(inl(0x60006004) & ~0x400000, 0x60006004); /* reset usb end */ | ||
55 | |||
56 | outl(inl(0x70000020) | 0x80000000, 0x70000020); | ||
57 | while ((inl(0x70000028) & 0x80) == 0); | ||
58 | |||
59 | outl(inl(0xc5000184) | 0x100, 0xc5000184); | ||
60 | while ((inl(0xc5000184) & 0x100) != 0); | ||
61 | |||
62 | outl(inl(0xc50001A4) | 0x5F000000, 0xc50001A4); | ||
63 | if ((inl(0xc50001A4) & 0x100) == 0) { | ||
64 | outl(inl(0xc50001A8) & ~0x3, 0xc50001A8); | ||
65 | outl(inl(0xc50001A8) | 0x2, 0xc50001A8); | ||
66 | outl(inl(0x70000028) | 0x4000, 0x70000028); | ||
67 | outl(inl(0x70000028) | 0x2, 0x70000028); | ||
68 | } else { | ||
69 | outl(inl(0xc50001A8) | 0x3, 0xc50001A8); | ||
70 | outl(inl(0x70000028) &~0x4000, 0x70000028); | ||
71 | outl(inl(0x70000028) | 0x2, 0x70000028); | ||
72 | } | ||
73 | outl(inl(0xc5000140) | 0x2, 0xc5000140); | ||
74 | while((inl(0xc5000140) & 0x2) != 0); | ||
75 | r0 = inl(0xc5000184); | ||
76 | |||
77 | /* Note from IPL source (referring to next 5 lines of code: | ||
78 | THIS NEEDS TO BE CHANGED ONCE THERE IS KERNEL USB */ | ||
79 | outl(inl(0x70000020) | 0x80000000, 0x70000020); | ||
80 | outl(inl(0x6000600C) | 0x400000, 0x6000600C); | ||
81 | while ((inl(0x70000028) & 0x80) == 0); | ||
82 | outl(inl(0x70000028) | 0x2, 0x70000028); | ||
83 | |||
84 | udelay(0x186A0); | ||
85 | #endif | ||
86 | } | 41 | } |
87 | 42 | ||
88 | bool usb_detect(void) | 43 | bool usb_detect(void) |
@@ -92,16 +47,10 @@ bool usb_detect(void) | |||
92 | 47 | ||
93 | void usb_enable(bool on) | 48 | void usb_enable(bool on) |
94 | { | 49 | { |
95 | (void)on; | 50 | /* For the H10, we reboot if BUTTON_RIGHT is held so that the iriver |
96 | #if 0 | 51 | * bootloader can start up in UMS mode. This does not return. */ |
97 | /* For the ipod, we can only do one thing with USB mode - reboot | 52 | if (on && (button_status()==BUTTON_RIGHT)) |
98 | into Apple's flash-based disk-mode. This does not return. */ | ||
99 | if (on) | ||
100 | { | 53 | { |
101 | /* The following code is copied from ipodlinux */ | 54 | system_reboot(); |
102 | unsigned char* storage_ptr = (unsigned char *)0x40017F00; | ||
103 | memcpy(storage_ptr, "diskmode\0\0hotstuff\0\0\1", 21); | ||
104 | DEV_RS |= 4; /* Reboot */ | ||
105 | } | 55 | } |
106 | #endif | ||
107 | } | 56 | } |