On 29 March 2016 at 03:46, Florian Fainelli <f.faine...@gmail.com> wrote:
> CC: bcm-kernel-feedback-list, Jon
>
> Le 28/03/2016 14:59, Rafał Miłecki a écrit :
>> +static inline struct bcm_ns_usb3 *phy_to_usb3(struct usb_phy *phy)
>> +{
>> +     return container_of(phy, struct bcm_ns_usb3, phy);
>> +}
>> +
>> +static bool bcm_ns_usb3_wait_reg(struct bcm_ns_usb3 *usb3, void __iomem 
>> *addr,
>> +                              u32 mask, u32 value, int timeout)
>> +{
>> +     unsigned long deadline = jiffies + timeout;
>
> We are mixing timeout in micro seconds with jiffies here, should that be
> msecs_to_jiffies(timeout) instead?

It should! Thanks.


>> +     u32 val;
>> +
>> +     do {
>> +             val = readl(addr);
>> +             if ((val & mask) == value)
>> +                     return true;
>> +             cpu_relax();
>> +             udelay(10);
>
> Delay + relax, why not a msleep() instead?

I dropped cpu_relax and added counting how many iterations were
needed. In the worst case it took 3 loop iterations to have hw idle.
It gives ~30 us as the max needed waiting time. msleep would add too
much delay.


>> +static void bcm_ns_usb3_phy_init_ns_bx(struct bcm_ns_usb3 *usb3)
>> +{
>> +     struct bcma_drv_cc_b *ccb = &usb3->bus->drv_cc_b;
>> +
>> +     /* Enable MDIO. Setting MDCDIV as 26  */
>> +     iowrite32(0x0000009a, ccb->mii + BCMA_CCB_MII_MNG_CTL);
>> +     udelay(2);
>> +
>> +     /* USB3 PLL Block */
>> +     bcm_ns_usb3_mii_mng_write32(usb3, 0x587e8000);
>
> We might want to make the first write check whether the MII bus was idle
> or not, just in case?

Sure, good idea.

-- 
Rafał
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to