Re: [PATCH] usb: musb: dsps: implement vbus_status method
Hi, Roman Alyautdin writes: > On 08/10/15 17:07, Sergei Shtylyov wrote: >> On 10/8/2015 4:50 PM, Sergei Shtylyov wrote: >> Implement vbus_status method of musb_platform_ops that allows musb_core to properly represent the VBUS status of musb_dsps devices in corresponding sysfs entry Signed-off-by: Roman Alyautdin --- drivers/usb/musb/musb_dsps.c | 13 + 1 file changed, 13 insertions(+) diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index 84512d1..9c00edf 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -632,6 +632,18 @@ static void dsps_read_fifo32(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) } } +static int dsps_musb_vbus_status(struct musb *musb) +{ +void __iomem *mregs = musb->mregs; +u8 devctl; + +devctl = dsps_readb(mregs, MUSB_DEVCTL); +if ((devctl & MUSB_DEVCTL_VBUS) == (3 << MUSB_DEVCTL_VBUS_SHIFT)) >>> >>> I don't see why this has to be is implemented in the DSPS glue >>> layer. The >>> DevCtl register is a standard MUSB one. >> >>Looking at the musb_platform_get_vbus_status(), it's unclear why it >> returns 0 if the vbus_status() method id undefined. I think we should >> read the DevCtl registre here, removing the FIXME at the call site. > > Maybe it is worth to return -EINVAL from musb_platform_get_vbus_status > in case of method is undefined and keep current logic of interface > implementation in platform-specific driver. > > Hence print "Vbus unknown" in musb_vbus_show() in case of -EINVAL from > musb_platform_get_vbus_status I actually like the idea of reading DevCtl. That's a nice, safe default afaict. That's one of the information DevCtl is supposed to tell MUSB anyway. -- balbi signature.asc Description: PGP signature
Re: [PATCH] usb: musb: dsps: implement vbus_status method
On 08/10/15 17:07, Sergei Shtylyov wrote: On 10/8/2015 4:50 PM, Sergei Shtylyov wrote: Implement vbus_status method of musb_platform_ops that allows musb_core to properly represent the VBUS status of musb_dsps devices in corresponding sysfs entry Signed-off-by: Roman Alyautdin --- drivers/usb/musb/musb_dsps.c | 13 + 1 file changed, 13 insertions(+) diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index 84512d1..9c00edf 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -632,6 +632,18 @@ static void dsps_read_fifo32(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) } } +static int dsps_musb_vbus_status(struct musb *musb) +{ +void __iomem *mregs = musb->mregs; +u8 devctl; + +devctl = dsps_readb(mregs, MUSB_DEVCTL); +if ((devctl & MUSB_DEVCTL_VBUS) == (3 << MUSB_DEVCTL_VBUS_SHIFT)) I don't see why this has to be is implemented in the DSPS glue layer. The DevCtl register is a standard MUSB one. Looking at the musb_platform_get_vbus_status(), it's unclear why it returns 0 if the vbus_status() method id undefined. I think we should read the DevCtl registre here, removing the FIXME at the call site. Maybe it is worth to return -EINVAL from musb_platform_get_vbus_status in case of method is undefined and keep current logic of interface implementation in platform-specific driver. Hence print "Vbus unknown" in musb_vbus_show() in case of -EINVAL from musb_platform_get_vbus_status Regards, Roman MBR, Sergei -- 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
Re: [PATCH] usb: musb: dsps: implement vbus_status method
On 10/8/2015 4:50 PM, Sergei Shtylyov wrote: Implement vbus_status method of musb_platform_ops that allows musb_core to properly represent the VBUS status of musb_dsps devices in corresponding sysfs entry Signed-off-by: Roman Alyautdin --- drivers/usb/musb/musb_dsps.c | 13 + 1 file changed, 13 insertions(+) diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index 84512d1..9c00edf 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -632,6 +632,18 @@ static void dsps_read_fifo32(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) } } +static int dsps_musb_vbus_status(struct musb *musb) +{ +void __iomem *mregs = musb->mregs; +u8 devctl; + +devctl = dsps_readb(mregs, MUSB_DEVCTL); +if ((devctl & MUSB_DEVCTL_VBUS) == (3 << MUSB_DEVCTL_VBUS_SHIFT)) I don't see why this has to be is implemented in the DSPS glue layer. The DevCtl register is a standard MUSB one. Looking at the musb_platform_get_vbus_status(), it's unclear why it returns 0 if the vbus_status() method id undefined. I think we should read the DevCtl registre here, removing the FIXME at the call site. MBR, Sergei -- 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
Re: [PATCH] usb: musb: dsps: implement vbus_status method
Hello. On 10/7/2015 5:40 PM, Roman Alyautdin wrote: Implement vbus_status method of musb_platform_ops that allows musb_core to properly represent the VBUS status of musb_dsps devices in corresponding sysfs entry Signed-off-by: Roman Alyautdin --- drivers/usb/musb/musb_dsps.c | 13 + 1 file changed, 13 insertions(+) diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index 84512d1..9c00edf 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -632,6 +632,18 @@ static void dsps_read_fifo32(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) } } +static int dsps_musb_vbus_status(struct musb *musb) +{ + void __iomem *mregs = musb->mregs; + u8 devctl; + + devctl = dsps_readb(mregs, MUSB_DEVCTL); + if ((devctl & MUSB_DEVCTL_VBUS) == (3 << MUSB_DEVCTL_VBUS_SHIFT)) I don't see why this has to be is implemented in the DSPS glue layer. The DevCtl register is a standard MUSB one. [...] MBR, Sergei -- 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
[PATCH] usb: musb: dsps: implement vbus_status method
Implement vbus_status method of musb_platform_ops that allows musb_core to properly represent the VBUS status of musb_dsps devices in corresponding sysfs entry Signed-off-by: Roman Alyautdin --- drivers/usb/musb/musb_dsps.c | 13 + 1 file changed, 13 insertions(+) diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index 84512d1..9c00edf 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -632,6 +632,18 @@ static void dsps_read_fifo32(struct musb_hw_ep *hw_ep, u16 len, u8 *dst) } } +static int dsps_musb_vbus_status(struct musb *musb) +{ + void __iomem *mregs = musb->mregs; + u8 devctl; + + devctl = dsps_readb(mregs, MUSB_DEVCTL); + if ((devctl & MUSB_DEVCTL_VBUS) == (3 << MUSB_DEVCTL_VBUS_SHIFT)) + return 1; + else + return 0; +} + static struct musb_platform_ops dsps_ops = { .quirks = MUSB_DMA_CPPI41 | MUSB_INDEXED_EP, .init = dsps_musb_init, @@ -647,6 +659,7 @@ static struct musb_platform_ops dsps_ops = { .try_idle = dsps_musb_try_idle, .set_mode = dsps_musb_set_mode, .recover= dsps_musb_recover, + .vbus_status= dsps_musb_vbus_status, }; static u64 musb_dmamask = DMA_BIT_MASK(32); -- 1.7.9.5 -- 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