public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] extcon: intel-cht-wc: Also set direction and drv flags for V5 boost GPIO
@ 2018-02-15  7:24 ` Hans de Goede
  2018-02-15 12:53   ` Andy Shevchenko
  2018-02-19  9:53   ` Chanwoo Choi
  0 siblings, 2 replies; 3+ messages in thread
From: Hans de Goede @ 2018-02-15  7:24 UTC (permalink / raw)
  To: MyungJoo Ham, Chanwoo Choi; +Cc: Hans de Goede, linux-kernel

Sometimes (firmware bug?) the V5 boost GPIO is not configured as output
by the BIOS, leading to the 5V boost convertor being permanently on,

Explicitly set the direction and drv flags rather then inheriting them
from the firmware to fix this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/extcon/extcon-intel-cht-wc.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c
index 7c4bc8c44c3f..b7e9ea377d70 100644
--- a/drivers/extcon/extcon-intel-cht-wc.c
+++ b/drivers/extcon/extcon-intel-cht-wc.c
@@ -66,6 +66,8 @@
 
 #define CHT_WC_VBUS_GPIO_CTLO		0x6e2d
 #define CHT_WC_VBUS_GPIO_CTLO_OUTPUT	BIT(0)
+#define CHT_WC_VBUS_GPIO_CTLO_DRV_OD	BIT(4)
+#define CHT_WC_VBUS_GPIO_CTLO_DIR_OUT	BIT(5)
 
 enum cht_wc_usb_id {
 	USB_ID_OTG,
@@ -183,14 +185,15 @@ static void cht_wc_extcon_set_5v_boost(struct cht_wc_extcon_data *ext,
 {
 	int ret, val;
 
-	val = enable ? CHT_WC_VBUS_GPIO_CTLO_OUTPUT : 0;
-
 	/*
 	 * The 5V boost converter is enabled through a gpio on the PMIC, since
 	 * there currently is no gpio driver we access the gpio reg directly.
 	 */
-	ret = regmap_update_bits(ext->regmap, CHT_WC_VBUS_GPIO_CTLO,
-				 CHT_WC_VBUS_GPIO_CTLO_OUTPUT, val);
+	val = CHT_WC_VBUS_GPIO_CTLO_DRV_OD | CHT_WC_VBUS_GPIO_CTLO_DIR_OUT;
+	if (enable)
+		val |= CHT_WC_VBUS_GPIO_CTLO_OUTPUT;
+
+	ret = regmap_write(ext->regmap, CHT_WC_VBUS_GPIO_CTLO, val);
 	if (ret)
 		dev_err(ext->dev, "Error writing Vbus GPIO CTLO: %d\n", ret);
 }
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] extcon: intel-cht-wc: Also set direction and drv flags for V5 boost GPIO
  2018-02-15  7:24 ` [PATCH] extcon: intel-cht-wc: Also set direction and drv flags for V5 boost GPIO Hans de Goede
@ 2018-02-15 12:53   ` Andy Shevchenko
  2018-02-19  9:53   ` Chanwoo Choi
  1 sibling, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2018-02-15 12:53 UTC (permalink / raw)
  To: Hans de Goede; +Cc: MyungJoo Ham, Chanwoo Choi, Linux Kernel Mailing List

On Thu, Feb 15, 2018 at 9:24 AM, Hans de Goede <hdegoede@redhat.com> wrote:
> Sometimes (firmware bug?) the V5 boost GPIO is not configured as output
> by the BIOS, leading to the 5V boost convertor being permanently on,
>
> Explicitly set the direction and drv flags rather then inheriting them
> from the firmware to fix this.
>

FWIW,

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  drivers/extcon/extcon-intel-cht-wc.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c
> index 7c4bc8c44c3f..b7e9ea377d70 100644
> --- a/drivers/extcon/extcon-intel-cht-wc.c
> +++ b/drivers/extcon/extcon-intel-cht-wc.c
> @@ -66,6 +66,8 @@
>
>  #define CHT_WC_VBUS_GPIO_CTLO          0x6e2d
>  #define CHT_WC_VBUS_GPIO_CTLO_OUTPUT   BIT(0)
> +#define CHT_WC_VBUS_GPIO_CTLO_DRV_OD   BIT(4)
> +#define CHT_WC_VBUS_GPIO_CTLO_DIR_OUT  BIT(5)
>
>  enum cht_wc_usb_id {
>         USB_ID_OTG,
> @@ -183,14 +185,15 @@ static void cht_wc_extcon_set_5v_boost(struct cht_wc_extcon_data *ext,
>  {
>         int ret, val;
>
> -       val = enable ? CHT_WC_VBUS_GPIO_CTLO_OUTPUT : 0;
> -
>         /*
>          * The 5V boost converter is enabled through a gpio on the PMIC, since
>          * there currently is no gpio driver we access the gpio reg directly.
>          */
> -       ret = regmap_update_bits(ext->regmap, CHT_WC_VBUS_GPIO_CTLO,
> -                                CHT_WC_VBUS_GPIO_CTLO_OUTPUT, val);
> +       val = CHT_WC_VBUS_GPIO_CTLO_DRV_OD | CHT_WC_VBUS_GPIO_CTLO_DIR_OUT;
> +       if (enable)
> +               val |= CHT_WC_VBUS_GPIO_CTLO_OUTPUT;
> +
> +       ret = regmap_write(ext->regmap, CHT_WC_VBUS_GPIO_CTLO, val);
>         if (ret)
>                 dev_err(ext->dev, "Error writing Vbus GPIO CTLO: %d\n", ret);
>  }
> --
> 2.14.3
>



-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] extcon: intel-cht-wc: Also set direction and drv flags for V5 boost GPIO
  2018-02-15  7:24 ` [PATCH] extcon: intel-cht-wc: Also set direction and drv flags for V5 boost GPIO Hans de Goede
  2018-02-15 12:53   ` Andy Shevchenko
@ 2018-02-19  9:53   ` Chanwoo Choi
  1 sibling, 0 replies; 3+ messages in thread
From: Chanwoo Choi @ 2018-02-19  9:53 UTC (permalink / raw)
  To: Hans de Goede, MyungJoo Ham; +Cc: linux-kernel

Hi,

On 2018년 02월 15일 16:24, Hans de Goede wrote:
> Sometimes (firmware bug?) the V5 boost GPIO is not configured as output
> by the BIOS, leading to the 5V boost convertor being permanently on,
> 
> Explicitly set the direction and drv flags rather then inheriting them
> from the firmware to fix this.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

You need to add fixes tag and send stable mailing list.

> ---
>  drivers/extcon/extcon-intel-cht-wc.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c
> index 7c4bc8c44c3f..b7e9ea377d70 100644
> --- a/drivers/extcon/extcon-intel-cht-wc.c
> +++ b/drivers/extcon/extcon-intel-cht-wc.c
> @@ -66,6 +66,8 @@
>  
>  #define CHT_WC_VBUS_GPIO_CTLO		0x6e2d
>  #define CHT_WC_VBUS_GPIO_CTLO_OUTPUT	BIT(0)
> +#define CHT_WC_VBUS_GPIO_CTLO_DRV_OD	BIT(4)
> +#define CHT_WC_VBUS_GPIO_CTLO_DIR_OUT	BIT(5)
>  
>  enum cht_wc_usb_id {
>  	USB_ID_OTG,
> @@ -183,14 +185,15 @@ static void cht_wc_extcon_set_5v_boost(struct cht_wc_extcon_data *ext,
>  {
>  	int ret, val;
>  
> -	val = enable ? CHT_WC_VBUS_GPIO_CTLO_OUTPUT : 0;
> -
>  	/*
>  	 * The 5V boost converter is enabled through a gpio on the PMIC, since
>  	 * there currently is no gpio driver we access the gpio reg directly.
>  	 */
> -	ret = regmap_update_bits(ext->regmap, CHT_WC_VBUS_GPIO_CTLO,
> -				 CHT_WC_VBUS_GPIO_CTLO_OUTPUT, val);
> +	val = CHT_WC_VBUS_GPIO_CTLO_DRV_OD | CHT_WC_VBUS_GPIO_CTLO_DIR_OUT;
> +	if (enable)
> +		val |= CHT_WC_VBUS_GPIO_CTLO_OUTPUT;
> +
> +	ret = regmap_write(ext->regmap, CHT_WC_VBUS_GPIO_CTLO, val);
>  	if (ret)
>  		dev_err(ext->dev, "Error writing Vbus GPIO CTLO: %d\n", ret);
>  }
> 


-- 
Best Regards,
Chanwoo Choi
Samsung Electronics

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-02-19  9:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CGME20180215072501epcas2p4242c83f76cdfd9fbc67a456e41b17988@epcas2p4.samsung.com>
2018-02-15  7:24 ` [PATCH] extcon: intel-cht-wc: Also set direction and drv flags for V5 boost GPIO Hans de Goede
2018-02-15 12:53   ` Andy Shevchenko
2018-02-19  9:53   ` Chanwoo Choi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox