usb_drv: Fix PHY initialization for DWC3 XHCI

Make high speed (HS) and super speed (SS) hub use the same reference clock.
Also upgrade some quotas in USB run scripts.

Fixes #929.
This commit is contained in:
Sebastian Sumpf 2013-10-24 15:11:15 +02:00 committed by Christian Helmuth
parent fc1005c7ee
commit 5774a864b1
5 changed files with 12 additions and 9 deletions

View File

@ -46,11 +46,11 @@ set config {
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<start name="timer">
<resource name="RAM" quantum="512K"/>
<resource name="RAM" quantum="1M"/>
<provides> <service name="Timer"/> </provides>
</start>
<start name="usb_drv">
<resource name="RAM" quantum="6M"/>
<resource name="RAM" quantum="12M"/>
<provides>
<service name="Nic"/>
</provides>

View File

@ -79,7 +79,7 @@ append config {
<provides> <service name="Timer"/> </provides>
</start>
<start name="usb_drv">
<resource name="RAM" quantum="6M"/>
<resource name="RAM" quantum="12M"/>
<provides> <service name="Block"/> </provides>
<config uhci="yes" ehci="yes" xhci="yes"><storage /></config>
</start>

View File

@ -243,8 +243,11 @@ struct Phy_usb3 : Genode::Mmio
/* setup clock */
Phy_clk_rst::access_t clk = 0;
/* set external clock */
Phy_clk_rst::Ref_clk_sel::set(clk, 3);
/*
* Use same reference clock for high speed
* as for super speed
*/
Phy_clk_rst::Ref_clk_sel::set(clk, 0x2);
/* 24 MHz */
Phy_clk_rst::Fsel::set(clk, 0x2a);
Phy_clk_rst::Mpll_mult::set(clk, 0x68);

View File

@ -191,7 +191,6 @@ s64 ktime_us_delta(const ktime_t later, const ktime_t earlier) { TRACE; return 0
** linux/timer.h **
*******************/
int del_timer_sync(struct timer_list *timer) { TRACE; return 0; }
unsigned long round_jiffies(unsigned long j) { TRACE; return 1; }
void add_timer(struct timer_list *timer) { TRACE; }
void set_timer_slack(struct timer_list *time, int slack_hz) { TRACE; }
@ -671,7 +670,6 @@ void dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
enum dma_data_direction direction) { SKIP;; }
int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) { SKIP; return 0; }
int dma_set_mask(struct device *dev, u64 mask) { TRACE; return 0; }
/*****************

View File

@ -953,7 +953,6 @@ struct timer_list {
void init_timer(struct timer_list *);
int mod_timer(struct timer_list *timer, unsigned long expires);
int del_timer(struct timer_list * timer);
int del_timer_sync(struct timer_list * timer);
void setup_timer(struct timer_list *timer,void (*function)(unsigned long),
unsigned long data);
int timer_pending(const struct timer_list * timer);
@ -962,6 +961,9 @@ unsigned long round_jiffies(unsigned long j);
void add_timer(struct timer_list *timer);
void set_timer_slack(struct timer_list *time, int slack_hz);
static inline
int del_timer_sync(struct timer_list * timer) { return del_timer(timer); }
/*********************
** linux/hrtimer.h **
@ -1650,7 +1652,7 @@ void dma_free_coherent(struct device *, size_t, void *, dma_addr_t);
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
static inline int dma_set_coherent_mask(struct device *dev, u64 mask) { dev->coherent_dma_mask = mask; return 0; }
int dma_set_mask(struct device *dev, u64 mask);
static inline int dma_set_mask(struct device *dev, u64 mask) { *dev->dma_mask = mask; return 0; }
/*********************
** linux/uaccess.h **