diff options
author | Amaury Pouly <pamaury@rockbox.org> | 2010-06-21 20:25:46 +0000 |
---|---|---|
committer | Amaury Pouly <pamaury@rockbox.org> | 2010-06-21 20:25:46 +0000 |
commit | 7ef8b0ec4bb60b489958349123a24a0e19591e66 (patch) | |
tree | 6dda975d4346a5c08ba5120aa471bf2311c95b21 /firmware | |
parent | 2a259105414180a75e7d26a12daf5f9cadc08360 (diff) | |
download | rockbox-7ef8b0ec4bb60b489958349123a24a0e19591e66.tar.gz rockbox-7ef8b0ec4bb60b489958349123a24a0e19591e66.zip |
as3525-usb: change clock handling
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27032 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525v2.c | 71 | ||||
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525v2.h | 2 |
2 files changed, 26 insertions, 47 deletions
diff --git a/firmware/target/arm/as3525/usb-drv-as3525v2.c b/firmware/target/arm/as3525/usb-drv-as3525v2.c index 8218fa4bd9..8acc3685d7 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525v2.c +++ b/firmware/target/arm/as3525/usb-drv-as3525v2.c | |||
@@ -63,7 +63,7 @@ struct usb_endpoint | |||
63 | #if 0 | 63 | #if 0 |
64 | static struct usb_endpoint endpoints[USB_NUM_ENDPOINTS*2]; | 64 | static struct usb_endpoint endpoints[USB_NUM_ENDPOINTS*2]; |
65 | #endif | 65 | #endif |
66 | static struct usb_ctrlrequest ep0_setup_pkt; | 66 | static struct usb_ctrlrequest ep0_setup_pkt __attribute__((aligned(16))); |
67 | 67 | ||
68 | void usb_attach(void) | 68 | void usb_attach(void) |
69 | { | 69 | { |
@@ -81,29 +81,6 @@ static void usb_delay(void) | |||
81 | } | 81 | } |
82 | } | 82 | } |
83 | 83 | ||
84 | #if AS3525_MCLK_SEL != AS3525_CLK_PLLB | ||
85 | static inline void usb_enable_pll(void) | ||
86 | { | ||
87 | CGU_COUNTB = CGU_LOCK_CNT; | ||
88 | CGU_PLLB = AS3525_PLLB_SETTING; | ||
89 | CGU_PLLBSUP = 0; /* enable PLLB */ | ||
90 | while(!(CGU_INTCTRL & CGU_PLLB_LOCK)); /* wait until PLLB is locked */ | ||
91 | } | ||
92 | |||
93 | static inline void usb_disable_pll(void) | ||
94 | { | ||
95 | CGU_PLLBSUP = CGU_PLL_POWERDOWN; | ||
96 | } | ||
97 | #else | ||
98 | static inline void usb_enable_pll(void) | ||
99 | { | ||
100 | } | ||
101 | |||
102 | static inline void usb_disable_pll(void) | ||
103 | { | ||
104 | } | ||
105 | #endif /* AS3525_MCLK_SEL != AS3525_CLK_PLLB */ | ||
106 | |||
107 | static void as3525v2_connect(void) | 84 | static void as3525v2_connect(void) |
108 | { | 85 | { |
109 | logf("usb: init as3525v2"); | 86 | logf("usb: init as3525v2"); |
@@ -112,11 +89,10 @@ static void as3525v2_connect(void) | |||
112 | usb_delay(); | 89 | usb_delay(); |
113 | /* 2) enable usb phy clock */ | 90 | /* 2) enable usb phy clock */ |
114 | /* PHY clock */ | 91 | /* PHY clock */ |
115 | #if 0 | 92 | #if 1 |
116 | usb_enable_pll(); | ||
117 | CGU_USB = 1<<5 /* enable */ | 93 | CGU_USB = 1<<5 /* enable */ |
118 | | (CLK_DIV(AS3525_PLLB_FREQ, 48000000) / 2) << 2 | 94 | | (CLK_DIV(AS3525_PLLA_FREQ, 60000000)) << 2 |
119 | | 2; /* source = PLLB */ | 95 | | 1; /* source = PLLA */ |
120 | #else | 96 | #else |
121 | CGU_USB = 0x20; | 97 | CGU_USB = 0x20; |
122 | #endif | 98 | #endif |
@@ -222,8 +198,6 @@ static void reset_endpoints(void) | |||
222 | /* 64 bytes packet size, active endpoint */ | 198 | /* 64 bytes packet size, active endpoint */ |
223 | DIEPCTL(0) = (DEPCTL_MPS_64 << DEPCTL_mps_bitp) | 199 | DIEPCTL(0) = (DEPCTL_MPS_64 << DEPCTL_mps_bitp) |
224 | | DEPCTL_usbactep; | 200 | | DEPCTL_usbactep; |
225 | |||
226 | DCTL = DCTL_cgnpinnak | DCTL_cgoutnak; | ||
227 | } | 201 | } |
228 | 202 | ||
229 | static void core_dev_init(void) | 203 | static void core_dev_init(void) |
@@ -411,10 +385,30 @@ void usb_drv_exit(void) | |||
411 | disable_global_interrupts(); | 385 | disable_global_interrupts(); |
412 | } | 386 | } |
413 | 387 | ||
388 | static void dump_regs(void) | ||
389 | { | ||
390 | logf("DSTS: %lx", DSTS); | ||
391 | logf("DOEPCTL0=%lx", DOEPCTL(0)); | ||
392 | logf("DOEPTSIZ=%lx", DOEPTSIZ(0)); | ||
393 | logf("DIEPCTL0=%lx", DIEPCTL(0)); | ||
394 | logf("DOEPMSK=%lx", DOEPMSK); | ||
395 | logf("DIEPMSK=%lx", DIEPMSK); | ||
396 | logf("DAINTMSK=%lx", DAINTMSK); | ||
397 | logf("DAINT=%lx", DAINT); | ||
398 | logf("GINTSTS=%lx", GINTSTS); | ||
399 | logf("GINTMSK=%lx", GINTMSK); | ||
400 | logf("DCTL=%lx", DCTL); | ||
401 | logf("GAHBCFG=%lx", GAHBCFG); | ||
402 | logf("GUSBCFG=%lx", GUSBCFG); | ||
403 | logf("DCFG=%lx", DCFG); | ||
404 | logf("DTHRCTL=%lx", DTHRCTL); | ||
405 | } | ||
406 | |||
414 | static bool handle_reset(void) | 407 | static bool handle_reset(void) |
415 | { | 408 | { |
416 | logf("usb: bus reset"); | 409 | logf("usb: bus reset"); |
417 | 410 | ||
411 | dump_regs(); | ||
418 | /* Clear the Remote Wakeup Signalling */ | 412 | /* Clear the Remote Wakeup Signalling */ |
419 | DCTL &= ~DCTL_rmtwkupsig; | 413 | DCTL &= ~DCTL_rmtwkupsig; |
420 | 414 | ||
@@ -436,22 +430,6 @@ static bool handle_enum_done(void) | |||
436 | logf("usb: enum done"); | 430 | logf("usb: enum done"); |
437 | 431 | ||
438 | /* read speed */ | 432 | /* read speed */ |
439 | logf("DSTS: %lx", DSTS); | ||
440 | logf("DOEPCTL0=%lx", DOEPCTL(0)); | ||
441 | logf("DOEPTSIZ=%lx", DOEPTSIZ(0)); | ||
442 | logf("DIEPCTL0=%lx", DIEPCTL(0)); | ||
443 | logf("DOEPMSK=%lx", DOEPMSK); | ||
444 | logf("DIEPMSK=%lx", DIEPMSK); | ||
445 | logf("DAINTMSK=%lx", DAINTMSK); | ||
446 | logf("DAINT=%lx", DAINT); | ||
447 | logf("GINTSTS=%lx", GINTSTS); | ||
448 | logf("GINTMSK=%lx", GINTMSK); | ||
449 | logf("DCTL=%lx", DCTL); | ||
450 | logf("GAHBCFG=%lx", GAHBCFG); | ||
451 | logf("GUSBCFG=%lx", GUSBCFG); | ||
452 | logf("DCFG=%lx", DCFG); | ||
453 | logf("DTHRCTL=%lx", DTHRCTL); | ||
454 | |||
455 | switch(extract(DSTS, enumspd)) | 433 | switch(extract(DSTS, enumspd)) |
456 | { | 434 | { |
457 | case DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ: | 435 | case DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ: |
@@ -466,6 +444,7 @@ static bool handle_enum_done(void) | |||
466 | } | 444 | } |
467 | 445 | ||
468 | /* fixme: change EP0 mps here */ | 446 | /* fixme: change EP0 mps here */ |
447 | dump_regs(); | ||
469 | 448 | ||
470 | return true; | 449 | return true; |
471 | } | 450 | } |
diff --git a/firmware/target/arm/as3525/usb-drv-as3525v2.h b/firmware/target/arm/as3525/usb-drv-as3525v2.h index c058b4e062..78df811d11 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525v2.h +++ b/firmware/target/arm/as3525/usb-drv-as3525v2.h | |||
@@ -452,7 +452,7 @@ | |||
452 | /** | 452 | /** |
453 | * Parameters | 453 | * Parameters |
454 | */ | 454 | */ |
455 | //#define USE_CUSTOM_FIFO_LAYOUT | 455 | #define USE_CUSTOM_FIFO_LAYOUT |
456 | 456 | ||
457 | #ifdef USE_CUSTOM_FIFO_LAYOUT | 457 | #ifdef USE_CUSTOM_FIFO_LAYOUT |
458 | /* Data fifo: includes RX fifo, non period TX fifo and periodic fifos | 458 | /* Data fifo: includes RX fifo, non period TX fifo and periodic fifos |