Re: usb: phy: tegra: Program new PHY parameters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/04/2014 08:20 AM, Dan Carpenter wrote:
On Thu, Sep 04, 2014 at 05:10:02PM +0300, Dan Carpenter wrote:
Hello Tuomas Tynkkynen,

The patch e497a24d8e18: "usb: phy: tegra: Program new PHY parameters"
from Aug 12, 2013, leads to the following static checker warning:

	drivers/usb/phy/phy-tegra-usb.c:460 utmi_phy_power_on()
	warn: 0x1fc is larger than 8 bits

drivers/usb/phy/phy-tegra-usb.c
    101  #define   UTMIP_XCVR_HSSLEW(x)                  (((x) & 0x3) << 4)
    102  #define   UTMIP_XCVR_HSSLEW_MSB(x)              ((((x) & 0x1fc) >> 2) << 25)

I believe HSSLEW_MSB should use a mask of 0x3fc, since it's an 8-bit field. I believe the correct fix for the problem you reported is to change struct tegra_utmip_config's xcvr_hsslew field to a u16.

(Sigh, this means changing the prototype of read_utmi_param() too, or adding separate u8/u16 versions of it)

Would you like me to send a patch for this?


[snip]

    455          val |= UTMIP_XCVR_LSRSLEW(config->xcvr_lsrslew);
    456
    457          if (phy->soc_config->requires_extra_tuning_parameters) {
    458                  val &= ~(UTMIP_XCVR_HSSLEW(~0) | UTMIP_XCVR_HSSLEW_MSB(~0));

Btw, the only place where this matters is right here.  We end up masking
out a bit which we had not intended.  The extra '1' doesn't make a
difference to the line below which generated the static checker warning.

regards,
dan carpenter

    459                  val |= UTMIP_XCVR_HSSLEW(config->xcvr_hsslew);
    460                  val |= UTMIP_XCVR_HSSLEW_MSB(config->xcvr_hsslew);
                                                      ^^^^^^^^^^^^^^^^^^^
This is a u8 so it can only go up to 0xff and not 0x1fc.  Also 0xfc and
0x03 are symetric so I think 0xfc was probably intended?

But I don't know the hardware at all, this is pure guess work.

    461          }
    462          writel(val, base + UTMIP_XCVR_CFG0);

regards,
dan carpenter

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




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux