forked from Minki/linux
usb: dwc2: fix dwc2_get_device_property for u8 and u16
According to the Devicetree ePAPR [1] the datatypes u8 and u16 are
not defined. So using device_property_read_u16() would result in
a partial read of a 32-bit big-endian integer which is not intended.
So we better read the complete 32-bit value. This fixes a regression
on bcm2835 where the values for g-rx-fifo-size and g-np-tx-fifo-size
always read as zero:
Invalid value 0 for param g-rx-fifo-size
Invalid value 0 for param g-np-tx-fifo-size
[1] - http://elinux.org/images/c/cf/Power_ePAPR_APPROVED_v1.1.pdf
Fixes: 05ee799f20
("usb: dwc2: Move gadget settings into core_params")
Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
f341973527
commit
de02238d6a
@ -247,8 +247,6 @@ MODULE_DEVICE_TABLE(of, dwc2_of_match_table);
|
||||
static void dwc2_get_device_property(struct dwc2_hsotg *hsotg,
|
||||
char *property, u8 size, u64 *value)
|
||||
{
|
||||
u8 val8;
|
||||
u16 val16;
|
||||
u32 val32;
|
||||
|
||||
switch (size) {
|
||||
@ -256,17 +254,7 @@ static void dwc2_get_device_property(struct dwc2_hsotg *hsotg,
|
||||
*value = device_property_read_bool(hsotg->dev, property);
|
||||
break;
|
||||
case 1:
|
||||
if (device_property_read_u8(hsotg->dev, property, &val8))
|
||||
return;
|
||||
|
||||
*value = val8;
|
||||
break;
|
||||
case 2:
|
||||
if (device_property_read_u16(hsotg->dev, property, &val16))
|
||||
return;
|
||||
|
||||
*value = val16;
|
||||
break;
|
||||
case 4:
|
||||
if (device_property_read_u32(hsotg->dev, property, &val32))
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user