diff options
Diffstat (limited to 'meta/packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch')
-rw-r--r-- | meta/packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch | 316 |
1 files changed, 0 insertions, 316 deletions
diff --git a/meta/packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch b/meta/packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch deleted file mode 100644 index 6f6af2c758..0000000000 --- a/meta/packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch +++ /dev/null | |||
@@ -1,316 +0,0 @@ | |||
1 | Index: u-boot/drivers/usbtty.c | ||
2 | =================================================================== | ||
3 | --- u-boot.orig/drivers/usbtty.c | ||
4 | +++ u-boot/drivers/usbtty.c | ||
5 | @@ -66,7 +66,7 @@ | ||
6 | /* | ||
7 | * Defines | ||
8 | */ | ||
9 | -#define NUM_CONFIGS 1 | ||
10 | +#define NUM_CONFIGS 2 | ||
11 | #define MAX_INTERFACES 2 | ||
12 | #define NUM_ENDPOINTS 3 | ||
13 | #define ACM_TX_ENDPOINT 3 | ||
14 | @@ -192,8 +192,7 @@ | ||
15 | #endif | ||
16 | .bConfigurationValue = 1, | ||
17 | .iConfiguration = STR_CONFIG, | ||
18 | - .bmAttributes = | ||
19 | - BMATTRIBUTE_SELF_POWERED|BMATTRIBUTE_RESERVED, | ||
20 | + .bmAttributes = BMATTRIBUTE_RESERVED, | ||
21 | .bMaxPower = USBTTY_MAXPOWER | ||
22 | }, | ||
23 | /* Interface 1 */ | ||
24 | @@ -294,6 +293,120 @@ | ||
25 | .func_dfu = DFU_FUNC_DESC, | ||
26 | #endif | ||
27 | }, | ||
28 | + { | ||
29 | + .configuration_desc ={ | ||
30 | + .bLength = | ||
31 | + sizeof(struct usb_configuration_descriptor), | ||
32 | + .bDescriptorType = USB_DT_CONFIG, | ||
33 | + .wTotalLength = | ||
34 | + cpu_to_le16(sizeof(struct acm_config_desc) | ||
35 | +#ifdef CONFIG_USBD_DFU | ||
36 | + - sizeof(struct usb_interface_descriptor) | ||
37 | + - sizeof(struct usb_dfu_func_descriptor) | ||
38 | +#endif | ||
39 | + ), | ||
40 | + .bNumInterfaces = NUM_ACM_INTERFACES, | ||
41 | + .bConfigurationValue = 2, | ||
42 | + .iConfiguration = STR_CONFIG, | ||
43 | + .bmAttributes = BMATTRIBUTE_RESERVED, | ||
44 | + .bMaxPower = 50, /* 100mA */ | ||
45 | + }, | ||
46 | + /* Interface 1 */ | ||
47 | + .interface_desc = { | ||
48 | + .bLength = sizeof(struct usb_interface_descriptor), | ||
49 | + .bDescriptorType = USB_DT_INTERFACE, | ||
50 | + .bInterfaceNumber = 0, | ||
51 | + .bAlternateSetting = 0, | ||
52 | + .bNumEndpoints = 0x01, | ||
53 | + .bInterfaceClass = | ||
54 | + COMMUNICATIONS_INTERFACE_CLASS_CONTROL, | ||
55 | + .bInterfaceSubClass = COMMUNICATIONS_ACM_SUBCLASS, | ||
56 | + .bInterfaceProtocol = COMMUNICATIONS_V25TER_PROTOCOL, | ||
57 | + .iInterface = STR_CTRL_INTERFACE, | ||
58 | + }, | ||
59 | + .usb_class_header = { | ||
60 | + .bFunctionLength = | ||
61 | + sizeof(struct usb_class_header_function_descriptor), | ||
62 | + .bDescriptorType = CS_INTERFACE, | ||
63 | + .bDescriptorSubtype = USB_ST_HEADER, | ||
64 | + .bcdCDC = cpu_to_le16(110), | ||
65 | + }, | ||
66 | + .usb_class_call_mgt = { | ||
67 | + .bFunctionLength = | ||
68 | + sizeof(struct usb_class_call_management_descriptor), | ||
69 | + .bDescriptorType = CS_INTERFACE, | ||
70 | + .bDescriptorSubtype = USB_ST_CMF, | ||
71 | + .bmCapabilities = 0x00, | ||
72 | + .bDataInterface = 0x01, | ||
73 | + }, | ||
74 | + .usb_class_acm = { | ||
75 | + .bFunctionLength = | ||
76 | + sizeof(struct usb_class_abstract_control_descriptor), | ||
77 | + .bDescriptorType = CS_INTERFACE, | ||
78 | + .bDescriptorSubtype = USB_ST_ACMF, | ||
79 | + .bmCapabilities = 0x00, | ||
80 | + }, | ||
81 | + .usb_class_union = { | ||
82 | + .bFunctionLength = | ||
83 | + sizeof(struct usb_class_union_function_descriptor), | ||
84 | + .bDescriptorType = CS_INTERFACE, | ||
85 | + .bDescriptorSubtype = USB_ST_UF, | ||
86 | + .bMasterInterface = 0x00, | ||
87 | + .bSlaveInterface0 = 0x01, | ||
88 | + }, | ||
89 | + .notification_endpoint = { | ||
90 | + .bLength = | ||
91 | + sizeof(struct usb_endpoint_descriptor), | ||
92 | + .bDescriptorType = USB_DT_ENDPOINT, | ||
93 | + .bEndpointAddress = 0x01 | USB_DIR_IN, | ||
94 | + .bmAttributes = USB_ENDPOINT_XFER_INT, | ||
95 | + .wMaxPacketSize | ||
96 | + = cpu_to_le16(CONFIG_USBD_SERIAL_INT_PKTSIZE), | ||
97 | + .bInterval = 0xFF, | ||
98 | + }, | ||
99 | + | ||
100 | + /* Interface 2 */ | ||
101 | + .data_class_interface = { | ||
102 | + .bLength = | ||
103 | + sizeof(struct usb_interface_descriptor), | ||
104 | + .bDescriptorType = USB_DT_INTERFACE, | ||
105 | + .bInterfaceNumber = 0x01, | ||
106 | + .bAlternateSetting = 0x00, | ||
107 | + .bNumEndpoints = 0x02, | ||
108 | + .bInterfaceClass = | ||
109 | + COMMUNICATIONS_INTERFACE_CLASS_DATA, | ||
110 | + .bInterfaceSubClass = DATA_INTERFACE_SUBCLASS_NONE, | ||
111 | + .bInterfaceProtocol = DATA_INTERFACE_PROTOCOL_NONE, | ||
112 | + .iInterface = STR_DATA_INTERFACE, | ||
113 | + }, | ||
114 | + .data_endpoints = { | ||
115 | + { | ||
116 | + .bLength = | ||
117 | + sizeof(struct usb_endpoint_descriptor), | ||
118 | + .bDescriptorType = USB_DT_ENDPOINT, | ||
119 | + .bEndpointAddress = 0x02 | USB_DIR_OUT, | ||
120 | + .bmAttributes = | ||
121 | + USB_ENDPOINT_XFER_BULK, | ||
122 | + .wMaxPacketSize = | ||
123 | + cpu_to_le16(CONFIG_USBD_SERIAL_BULK_PKTSIZE), | ||
124 | + .bInterval = 0xFF, | ||
125 | + }, | ||
126 | + { | ||
127 | + .bLength = | ||
128 | + sizeof(struct usb_endpoint_descriptor), | ||
129 | + .bDescriptorType = USB_DT_ENDPOINT, | ||
130 | + .bEndpointAddress = 0x03 | USB_DIR_IN, | ||
131 | + .bmAttributes = | ||
132 | + USB_ENDPOINT_XFER_BULK, | ||
133 | + .wMaxPacketSize = | ||
134 | + cpu_to_le16(CONFIG_USBD_SERIAL_BULK_PKTSIZE), | ||
135 | + .bInterval = 0xFF, | ||
136 | + }, | ||
137 | + }, | ||
138 | + /* We don't add the DFU functional descriptor here since we only | ||
139 | + * want to do DFU in the high-current charging mode for safety reasons */ | ||
140 | + }, | ||
141 | + | ||
142 | }; | ||
143 | |||
144 | static struct rs232_emu rs232_desc={ | ||
145 | @@ -330,8 +443,7 @@ | ||
146 | .bNumInterfaces = NUM_GSERIAL_INTERFACES, | ||
147 | .bConfigurationValue = 1, | ||
148 | .iConfiguration = STR_CONFIG, | ||
149 | - .bmAttributes = | ||
150 | - BMATTRIBUTE_SELF_POWERED|BMATTRIBUTE_RESERVED, | ||
151 | + .bmAttributes = BMATTRIBUTE_RESERVED, | ||
152 | .bMaxPower = USBTTY_MAXPOWER | ||
153 | }, | ||
154 | .interface_desc = { | ||
155 | @@ -384,6 +496,68 @@ | ||
156 | }, | ||
157 | }, | ||
158 | }, | ||
159 | + { | ||
160 | + .configuration_desc ={ | ||
161 | + .bLength = sizeof(struct usb_configuration_descriptor), | ||
162 | + .bDescriptorType = USB_DT_CONFIG, | ||
163 | + .wTotalLength = | ||
164 | + cpu_to_le16(sizeof(struct gserial_config_desc)), | ||
165 | + .bNumInterfaces = NUM_GSERIAL_INTERFACES, | ||
166 | + .bConfigurationValue = 1, | ||
167 | + .iConfiguration = STR_CONFIG, | ||
168 | + .bmAttributes = BMATTRIBUTE_RESERVED, | ||
169 | + .bMaxPower = 50 | ||
170 | + }, | ||
171 | + .interface_desc = { | ||
172 | + { | ||
173 | + .bLength = | ||
174 | + sizeof(struct usb_interface_descriptor), | ||
175 | + .bDescriptorType = USB_DT_INTERFACE, | ||
176 | + .bInterfaceNumber = 0, | ||
177 | + .bAlternateSetting = 0, | ||
178 | + .bNumEndpoints = NUM_ENDPOINTS, | ||
179 | + .bInterfaceClass = | ||
180 | + COMMUNICATIONS_INTERFACE_CLASS_VENDOR, | ||
181 | + .bInterfaceSubClass = | ||
182 | + COMMUNICATIONS_NO_SUBCLASS, | ||
183 | + .bInterfaceProtocol = | ||
184 | + COMMUNICATIONS_NO_PROTOCOL, | ||
185 | + .iInterface = STR_DATA_INTERFACE | ||
186 | + }, | ||
187 | + }, | ||
188 | + .data_endpoints = { | ||
189 | + { | ||
190 | + .bLength = | ||
191 | + sizeof(struct usb_endpoint_descriptor), | ||
192 | + .bDescriptorType = USB_DT_ENDPOINT, | ||
193 | + .bEndpointAddress = 0x01 | USB_DIR_OUT, | ||
194 | + .bmAttributes = USB_ENDPOINT_XFER_BULK, | ||
195 | + .wMaxPacketSize = | ||
196 | + cpu_to_le16(CONFIG_USBD_SERIAL_OUT_PKTSIZE), | ||
197 | + .bInterval= 0xFF, | ||
198 | + }, | ||
199 | + { | ||
200 | + .bLength = | ||
201 | + sizeof(struct usb_endpoint_descriptor), | ||
202 | + .bDescriptorType = USB_DT_ENDPOINT, | ||
203 | + .bEndpointAddress = 0x02 | USB_DIR_IN, | ||
204 | + .bmAttributes = USB_ENDPOINT_XFER_BULK, | ||
205 | + .wMaxPacketSize = | ||
206 | + cpu_to_le16(CONFIG_USBD_SERIAL_IN_PKTSIZE), | ||
207 | + .bInterval = 0xFF, | ||
208 | + }, | ||
209 | + { | ||
210 | + .bLength = | ||
211 | + sizeof(struct usb_endpoint_descriptor), | ||
212 | + .bDescriptorType = USB_DT_ENDPOINT, | ||
213 | + .bEndpointAddress = 0x03 | USB_DIR_IN, | ||
214 | + .bmAttributes = USB_ENDPOINT_XFER_INT, | ||
215 | + .wMaxPacketSize = | ||
216 | + cpu_to_le16(CONFIG_USBD_SERIAL_INT_PKTSIZE), | ||
217 | + .bInterval = 0xFF, | ||
218 | + }, | ||
219 | + }, | ||
220 | + }, | ||
221 | }; | ||
222 | |||
223 | /* | ||
224 | @@ -679,12 +853,14 @@ | ||
225 | bus_instance->maxpacketsize = 64; | ||
226 | bus_instance->serial_number_str = serial_number; | ||
227 | |||
228 | - /* configuration instance */ | ||
229 | - memset (config_instance, 0, | ||
230 | - sizeof (struct usb_configuration_instance)); | ||
231 | - config_instance->interfaces = interface_count; | ||
232 | - config_instance->configuration_descriptor = configuration_descriptor; | ||
233 | - config_instance->interface_instance_array = interface_instance; | ||
234 | + /* configuration instances */ | ||
235 | + for (i = 0; i < NUM_CONFIGS; i++) { | ||
236 | + memset(&config_instance[i], 0, sizeof(config_instance)); | ||
237 | + config_instance[i].interfaces = interface_count; | ||
238 | + /* FIXME: this breaks for the non-ACM case */ | ||
239 | + config_instance[i].configuration_descriptor = &acm_configuration_descriptors[i]; | ||
240 | + config_instance[i].interface_instance_array = interface_instance; | ||
241 | + } | ||
242 | |||
243 | /* interface instance */ | ||
244 | memset (interface_instance, 0, | ||
245 | @@ -1043,9 +1219,17 @@ | ||
246 | usbtty_configured_flag = 0; | ||
247 | break; | ||
248 | case DEVICE_CONFIGURED: | ||
249 | + printf("DEVICE_CONFIGURED: %u\n", device->configuration); | ||
250 | + if (device->configuration == 1) | ||
251 | + udc_ctrl(UDC_CTRL_500mA_ENABLE, 1); | ||
252 | + else | ||
253 | + udc_ctrl(UDC_CTRL_500mA_ENABLE, 0); | ||
254 | usbtty_configured_flag = 1; | ||
255 | break; | ||
256 | - | ||
257 | + case DEVICE_DE_CONFIGURED: | ||
258 | + printf("DEVICE_DE_CONFIGURED\n"); | ||
259 | + udc_ctrl(UDC_CTRL_500mA_ENABLE, 0); | ||
260 | + break; | ||
261 | case DEVICE_ADDRESS_ASSIGNED: | ||
262 | usbtty_init_endpoints (); | ||
263 | |||
264 | Index: u-boot/drivers/usbtty.h | ||
265 | =================================================================== | ||
266 | --- u-boot.orig/drivers/usbtty.h | ||
267 | +++ u-boot/drivers/usbtty.h | ||
268 | @@ -60,7 +60,7 @@ | ||
269 | #define USBTTY_DEVICE_CLASS COMMUNICATIONS_DEVICE_CLASS | ||
270 | |||
271 | #define USBTTY_BCD_DEVICE 0x00 | ||
272 | -#define USBTTY_MAXPOWER 0x00 | ||
273 | +#define USBTTY_MAXPOWER 250 /* 500mA */ | ||
274 | |||
275 | #define STR_LANG 0x00 | ||
276 | #define STR_MANUFACTURER 0x01 | ||
277 | Index: u-boot/board/neo1973/common/udc.c | ||
278 | =================================================================== | ||
279 | --- u-boot.orig/board/neo1973/common/udc.c | ||
280 | +++ u-boot/board/neo1973/common/udc.c | ||
281 | @@ -2,6 +2,7 @@ | ||
282 | #include <common.h> | ||
283 | #include <usbdcore.h> | ||
284 | #include <s3c2410.h> | ||
285 | +#include <pcf50606.h> | ||
286 | |||
287 | void udc_ctrl(enum usbd_event event, int param) | ||
288 | { | ||
289 | @@ -17,6 +18,13 @@ | ||
290 | gpio->GPBDAT &= ~(1 << 9); | ||
291 | #endif | ||
292 | break; | ||
293 | + case UDC_CTRL_500mA_ENABLE: | ||
294 | +#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4) || \ | ||
295 | + defined(CONFIG_ARCH_GTA01B_v2) || defined(CONFIG_ARCH_GTA01B_v3) || \ | ||
296 | + defined(CONFIG_ARCH_GTA01B_v4) | ||
297 | + pcf50606_charge_autofast(param); | ||
298 | +#endif | ||
299 | + break; | ||
300 | default: | ||
301 | break; | ||
302 | } | ||
303 | Index: u-boot/include/usbdcore.h | ||
304 | =================================================================== | ||
305 | --- u-boot.orig/include/usbdcore.h | ||
306 | +++ u-boot/include/usbdcore.h | ||
307 | @@ -686,8 +686,8 @@ | ||
308 | |||
309 | enum usbd_event { | ||
310 | UDC_CTRL_PULLUP_ENABLE, | ||
311 | + UDC_CTRL_500mA_ENABLE, | ||
312 | }; | ||
313 | |||
314 | void udc_ctrl(enum usbd_event event, int param); | ||
315 | #endif | ||
316 | -#endif | ||