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:
parent
fc1005c7ee
commit
5774a864b1
|
@ -46,11 +46,11 @@ set config {
|
||||||
<any-service> <parent/> <any-child/> </any-service>
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
</default-route>
|
</default-route>
|
||||||
<start name="timer">
|
<start name="timer">
|
||||||
<resource name="RAM" quantum="512K"/>
|
<resource name="RAM" quantum="1M"/>
|
||||||
<provides> <service name="Timer"/> </provides>
|
<provides> <service name="Timer"/> </provides>
|
||||||
</start>
|
</start>
|
||||||
<start name="usb_drv">
|
<start name="usb_drv">
|
||||||
<resource name="RAM" quantum="6M"/>
|
<resource name="RAM" quantum="12M"/>
|
||||||
<provides>
|
<provides>
|
||||||
<service name="Nic"/>
|
<service name="Nic"/>
|
||||||
</provides>
|
</provides>
|
||||||
|
|
|
@ -79,7 +79,7 @@ append config {
|
||||||
<provides> <service name="Timer"/> </provides>
|
<provides> <service name="Timer"/> </provides>
|
||||||
</start>
|
</start>
|
||||||
<start name="usb_drv">
|
<start name="usb_drv">
|
||||||
<resource name="RAM" quantum="6M"/>
|
<resource name="RAM" quantum="12M"/>
|
||||||
<provides> <service name="Block"/> </provides>
|
<provides> <service name="Block"/> </provides>
|
||||||
<config uhci="yes" ehci="yes" xhci="yes"><storage /></config>
|
<config uhci="yes" ehci="yes" xhci="yes"><storage /></config>
|
||||||
</start>
|
</start>
|
||||||
|
|
|
@ -243,8 +243,11 @@ struct Phy_usb3 : Genode::Mmio
|
||||||
/* setup clock */
|
/* setup clock */
|
||||||
Phy_clk_rst::access_t clk = 0;
|
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 */
|
/* 24 MHz */
|
||||||
Phy_clk_rst::Fsel::set(clk, 0x2a);
|
Phy_clk_rst::Fsel::set(clk, 0x2a);
|
||||||
Phy_clk_rst::Mpll_mult::set(clk, 0x68);
|
Phy_clk_rst::Mpll_mult::set(clk, 0x68);
|
||||||
|
|
|
@ -191,7 +191,6 @@ s64 ktime_us_delta(const ktime_t later, const ktime_t earlier) { TRACE; return 0
|
||||||
** linux/timer.h **
|
** linux/timer.h **
|
||||||
*******************/
|
*******************/
|
||||||
|
|
||||||
int del_timer_sync(struct timer_list *timer) { TRACE; return 0; }
|
|
||||||
unsigned long round_jiffies(unsigned long j) { TRACE; return 1; }
|
unsigned long round_jiffies(unsigned long j) { TRACE; return 1; }
|
||||||
void add_timer(struct timer_list *timer) { TRACE; }
|
void add_timer(struct timer_list *timer) { TRACE; }
|
||||||
void set_timer_slack(struct timer_list *time, int slack_hz) { 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;; }
|
enum dma_data_direction direction) { SKIP;; }
|
||||||
|
|
||||||
int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) { SKIP; return 0; }
|
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; }
|
|
||||||
|
|
||||||
|
|
||||||
/*****************
|
/*****************
|
||||||
|
|
|
@ -953,7 +953,6 @@ struct timer_list {
|
||||||
void init_timer(struct timer_list *);
|
void init_timer(struct timer_list *);
|
||||||
int mod_timer(struct timer_list *timer, unsigned long expires);
|
int mod_timer(struct timer_list *timer, unsigned long expires);
|
||||||
int del_timer(struct timer_list * timer);
|
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),
|
void setup_timer(struct timer_list *timer,void (*function)(unsigned long),
|
||||||
unsigned long data);
|
unsigned long data);
|
||||||
int timer_pending(const struct timer_list * timer);
|
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 add_timer(struct timer_list *timer);
|
||||||
void set_timer_slack(struct timer_list *time, int slack_hz);
|
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 **
|
** 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))
|
#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; }
|
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 **
|
** linux/uaccess.h **
|
||||||
|
|
Loading…
Reference in New Issue
Block a user