From: Kishon Vijay Abraham I <kishon@ti.com>
To: George Cherian <george.cherian@ti.com>
Cc: linux-usb@vger.kernel.org, balbi@ti.com,
linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
linux-omap@vger.kernel.org, bigeasy@linutronix.de
Subject: Re: [PATCH 2/5] usb: phy: phy-omap-control: Add API to power on/off USB PHY for AM335X
Date: Mon, 8 Jul 2013 17:07:23 +0530 [thread overview]
Message-ID: <51DAA473.9030207@ti.com> (raw)
In-Reply-To: <1373280201-31785-3-git-send-email-george.cherian@ti.com>
Hi,
On Monday 08 July 2013 04:13 PM, George Cherian wrote:
> Add API to power on/off USB PHY for AM335X. This API will be called
> from phy-amxxxx-usb driver.
>
> Signed-off-by: George Cherian <george.cherian@ti.com>
> ---
> drivers/usb/phy/phy-omap-control.c | 32 ++++++++++++++++++++++++++++++++
> include/linux/usb/omap_control_usb.h | 11 +++++++++++
> 2 files changed, 43 insertions(+)
>
> diff --git a/drivers/usb/phy/phy-omap-control.c b/drivers/usb/phy/phy-omap-control.c
> index 1419ced..0c1822d 100644
> --- a/drivers/usb/phy/phy-omap-control.c
> +++ b/drivers/usb/phy/phy-omap-control.c
> @@ -46,6 +46,38 @@ struct device *omap_get_control_dev(void)
> EXPORT_SYMBOL_GPL(omap_get_control_dev);
>
> /**
> + * omap_control_am335x_phy_power - power on/off the serializer using control
> + * module
> + * @dev: the control module device
> + * @on: 0 to off and 1 to on based on powering on or off the PHY
> + * @id: phy id 0 or 1 for phy instance 0 and 1 repectively
> + *
> + * AMXXXX PHY driver should call this API to power on or off the PHY.
> + */
> +void omap_control_am335x_phy_power(struct device *dev, bool on, u8 id)
> +{
> + u32 val;
> + struct omap_control_usb *control_usb = dev_get_drvdata(dev);
> +
> + if (control_usb->type != OMAP_CTRL_DEV_TYPE3)
> + return;
Lets validate id also here.
> +
> + val = readl(control_usb->dev_conf + (id * 2));
Understand you use id to calculate the offset. But looks a bit hacky to me.
Can we define macros and use it instead?
> +
> + if (on) {
> + val &= ~(AM335X_USBPHY_CM_PWRDN | AM335X_USBPHY_OTG_PWRDN);
> + val |= AM335X_USBPHY_OTGVDET_EN |
> + AM335X_USBPHY_OTGSESSEND_EN;
> + } else
> + val |= AM335X_USBPHY_CM_PWRDN | AM335X_USBPHY_OTG_PWRDN;
> +
> +
> + writel(val, (control_usb->dev_conf + (id * 2)));
> +}
> +EXPORT_SYMBOL_GPL(omap_control_am335x_phy_power);
> +
> +
> +/**
> * omap_control_usb3_phy_power - power on/off the serializer using control
> * module
> * @dev: the control module device
> diff --git a/include/linux/usb/omap_control_usb.h b/include/linux/usb/omap_control_usb.h
> index 27b5b8c..11d7a34 100644
> --- a/include/linux/usb/omap_control_usb.h
> +++ b/include/linux/usb/omap_control_usb.h
> @@ -45,6 +45,7 @@ enum omap_control_usb_mode {
> /* To differentiate ctrl module IP having either mailbox or USB3 PHY power */
> #define OMAP_CTRL_DEV_TYPE1 0x1
> #define OMAP_CTRL_DEV_TYPE2 0x2
> +#define OMAP_CTRL_DEV_TYPE3 0x3
>
> #define OMAP_CTRL_DEV_PHY_PD BIT(0)
>
> @@ -63,10 +64,20 @@ enum omap_control_usb_mode {
> #define OMAP_CTRL_USB3_PHY_TX_RX_POWERON 0x3
> #define OMAP_CTRL_USB3_PHY_TX_RX_POWEROFF 0x0
>
> +#define AM335X_USBPHY_CM_PWRDN (1 << 0)
> +#define AM335X_USBPHY_OTG_PWRDN (1 << 1)
> +#define AM335X_USBPHY_OTGVDET_EN (1 << 19)
> +#define AM335X_USBPHY_OTGSESSEND_EN (1 << 20)
> +#define AM335X_USB0_WKUP_CTRL_ENABLE (1 << 0)
> +#define AM335X_USB1_WKUP_CTRL_ENABLE (1 << 8)
> +
> +
> +
> #if IS_ENABLED(CONFIG_OMAP_CONTROL_USB)
> extern struct device *omap_get_control_dev(void);
> extern void omap_control_usb_phy_power(struct device *dev, int on);
> extern void omap_control_usb3_phy_power(struct device *dev, bool on);
> +extern void omap_control_am335x_phy_power(struct device *dev, bool on, u8 id);
You might also need to provide an empty stub when CONFIG_OMAP_CONTROL_USB is
not set.
Thanks
Kishon
WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: George Cherian <george.cherian@ti.com>
Cc: <linux-usb@vger.kernel.org>, <balbi@ti.com>,
<linux-kernel@vger.kernel.org>, <gregkh@linuxfoundation.org>,
<linux-omap@vger.kernel.org>, <bigeasy@linutronix.de>
Subject: Re: [PATCH 2/5] usb: phy: phy-omap-control: Add API to power on/off USB PHY for AM335X
Date: Mon, 8 Jul 2013 17:07:23 +0530 [thread overview]
Message-ID: <51DAA473.9030207@ti.com> (raw)
In-Reply-To: <1373280201-31785-3-git-send-email-george.cherian@ti.com>
Hi,
On Monday 08 July 2013 04:13 PM, George Cherian wrote:
> Add API to power on/off USB PHY for AM335X. This API will be called
> from phy-amxxxx-usb driver.
>
> Signed-off-by: George Cherian <george.cherian@ti.com>
> ---
> drivers/usb/phy/phy-omap-control.c | 32 ++++++++++++++++++++++++++++++++
> include/linux/usb/omap_control_usb.h | 11 +++++++++++
> 2 files changed, 43 insertions(+)
>
> diff --git a/drivers/usb/phy/phy-omap-control.c b/drivers/usb/phy/phy-omap-control.c
> index 1419ced..0c1822d 100644
> --- a/drivers/usb/phy/phy-omap-control.c
> +++ b/drivers/usb/phy/phy-omap-control.c
> @@ -46,6 +46,38 @@ struct device *omap_get_control_dev(void)
> EXPORT_SYMBOL_GPL(omap_get_control_dev);
>
> /**
> + * omap_control_am335x_phy_power - power on/off the serializer using control
> + * module
> + * @dev: the control module device
> + * @on: 0 to off and 1 to on based on powering on or off the PHY
> + * @id: phy id 0 or 1 for phy instance 0 and 1 repectively
> + *
> + * AMXXXX PHY driver should call this API to power on or off the PHY.
> + */
> +void omap_control_am335x_phy_power(struct device *dev, bool on, u8 id)
> +{
> + u32 val;
> + struct omap_control_usb *control_usb = dev_get_drvdata(dev);
> +
> + if (control_usb->type != OMAP_CTRL_DEV_TYPE3)
> + return;
Lets validate id also here.
> +
> + val = readl(control_usb->dev_conf + (id * 2));
Understand you use id to calculate the offset. But looks a bit hacky to me.
Can we define macros and use it instead?
> +
> + if (on) {
> + val &= ~(AM335X_USBPHY_CM_PWRDN | AM335X_USBPHY_OTG_PWRDN);
> + val |= AM335X_USBPHY_OTGVDET_EN |
> + AM335X_USBPHY_OTGSESSEND_EN;
> + } else
> + val |= AM335X_USBPHY_CM_PWRDN | AM335X_USBPHY_OTG_PWRDN;
> +
> +
> + writel(val, (control_usb->dev_conf + (id * 2)));
> +}
> +EXPORT_SYMBOL_GPL(omap_control_am335x_phy_power);
> +
> +
> +/**
> * omap_control_usb3_phy_power - power on/off the serializer using control
> * module
> * @dev: the control module device
> diff --git a/include/linux/usb/omap_control_usb.h b/include/linux/usb/omap_control_usb.h
> index 27b5b8c..11d7a34 100644
> --- a/include/linux/usb/omap_control_usb.h
> +++ b/include/linux/usb/omap_control_usb.h
> @@ -45,6 +45,7 @@ enum omap_control_usb_mode {
> /* To differentiate ctrl module IP having either mailbox or USB3 PHY power */
> #define OMAP_CTRL_DEV_TYPE1 0x1
> #define OMAP_CTRL_DEV_TYPE2 0x2
> +#define OMAP_CTRL_DEV_TYPE3 0x3
>
> #define OMAP_CTRL_DEV_PHY_PD BIT(0)
>
> @@ -63,10 +64,20 @@ enum omap_control_usb_mode {
> #define OMAP_CTRL_USB3_PHY_TX_RX_POWERON 0x3
> #define OMAP_CTRL_USB3_PHY_TX_RX_POWEROFF 0x0
>
> +#define AM335X_USBPHY_CM_PWRDN (1 << 0)
> +#define AM335X_USBPHY_OTG_PWRDN (1 << 1)
> +#define AM335X_USBPHY_OTGVDET_EN (1 << 19)
> +#define AM335X_USBPHY_OTGSESSEND_EN (1 << 20)
> +#define AM335X_USB0_WKUP_CTRL_ENABLE (1 << 0)
> +#define AM335X_USB1_WKUP_CTRL_ENABLE (1 << 8)
> +
> +
> +
> #if IS_ENABLED(CONFIG_OMAP_CONTROL_USB)
> extern struct device *omap_get_control_dev(void);
> extern void omap_control_usb_phy_power(struct device *dev, int on);
> extern void omap_control_usb3_phy_power(struct device *dev, bool on);
> +extern void omap_control_am335x_phy_power(struct device *dev, bool on, u8 id);
You might also need to provide an empty stub when CONFIG_OMAP_CONTROL_USB is
not set.
Thanks
Kishon
next prev parent reply other threads:[~2013-07-08 11:37 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-08 10:43 [PATCH 0/5] Add phy support for AM335X platform using Generic PHy framework George Cherian
2013-07-08 10:43 ` George Cherian
2013-07-08 10:43 ` [PATCH 1/5] usb: musb: dsps: enable dual instance support for am33xx platform George Cherian
2013-07-08 10:43 ` George Cherian
2013-07-08 10:43 ` [PATCH 2/5] usb: phy: phy-omap-control: Add API to power on/off USB PHY for AM335X George Cherian
2013-07-08 10:43 ` George Cherian
2013-07-08 11:37 ` Kishon Vijay Abraham I [this message]
2013-07-08 11:37 ` Kishon Vijay Abraham I
2013-07-08 10:43 ` [PATCH 3/5] phy: phy-amxxxx-usb: Add PHY driver for amxxxx platform George Cherian
2013-07-08 10:43 ` George Cherian
2013-07-08 11:52 ` Kishon Vijay Abraham I
2013-07-08 11:52 ` Kishon Vijay Abraham I
2013-07-08 10:43 ` [PATCH 4/5] arm: dts: Add USB phy nodes for AM33XX George Cherian
2013-07-08 10:43 ` George Cherian
2013-07-08 11:54 ` Kishon Vijay Abraham I
2013-07-08 11:54 ` Kishon Vijay Abraham I
2013-07-08 10:43 ` [PATCH 5/5] usb: musb: dsps: Remove the phy control from glue and add phy driver APIs George Cherian
2013-07-08 10:43 ` George Cherian
2013-07-08 12:08 ` Kishon Vijay Abraham I
2013-07-08 12:08 ` Kishon Vijay Abraham I
2013-07-08 19:44 ` [PATCH 0/5] Add phy support for AM335X platform using Generic PHy framework Sebastian Andrzej Siewior
[not found] ` <51DB16A1.6010006-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
2013-07-08 20:34 ` Ezequiel Garcia
2013-07-08 20:34 ` Ezequiel Garcia
2013-07-09 7:13 ` Sebastian Andrzej Siewior
2013-07-09 5:40 ` George Cherian
2013-07-09 5:40 ` George Cherian
2013-07-09 11:35 ` Kishon Vijay Abraham I
2013-07-09 11:35 ` Kishon Vijay Abraham I
[not found] ` <51DBF59F.1030109-l0cyMroinI0@public.gmane.org>
2013-07-10 4:56 ` George Cherian
2013-07-10 4:56 ` George Cherian
2013-07-10 5:23 ` Felipe Balbi
2013-07-10 5:23 ` Felipe Balbi
2013-07-10 5:43 ` George Cherian
2013-07-10 5:43 ` George Cherian
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51DAA473.9030207@ti.com \
--to=kishon@ti.com \
--cc=balbi@ti.com \
--cc=bigeasy@linutronix.de \
--cc=george.cherian@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.