Re: [PATCH 54/57] power: ab8500_charger: Use USBLink1Status Register

2012-09-27 Thread Anton Vorontsov
On Tue, Sep 25, 2012 at 10:12:51AM -0600, mathieu.poir...@linaro.org wrote:
> From: Marcus Cooper 
> 
> The newer AB's such as the AB8505, AB9540 etc include a
> USBLink1 Status register which detects a larger range of
> external devices. This should be used instead of the
> USBLine Status register.
> 
> Signed-off-by: Marcus Cooper 
> Signed-off-by: Mathieu Poirier 
> Reviewed-by: Hakan BERG 
> Reviewed-by: Yang QU 
> Reviewed-by: Jonas ABERG 
> ---
>  drivers/power/ab8500_charger.c |   22 --
>  1 files changed, 16 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
> index 3a97012..7f8f362 100644
> --- a/drivers/power/ab8500_charger.c
> +++ b/drivers/power/ab8500_charger.c
> @@ -2258,8 +2258,13 @@ static void ab8500_charger_usb_link_status_work(struct 
> work_struct *work)
>* to start the charging process. but by jumping
>* thru a few hoops it can be forced to start.
>*/
> - ret = abx500_get_register_interruptible(di->dev, AB8500_USB,
> - AB8500_USB_LINE_STAT_REG, );
> + if (is_ab8500(di->parent))
> + ret = abx500_get_register_interruptible(di->dev, AB8500_USB,
> + AB8500_USB_LINE_STAT_REG, );
> + else
> + ret = abx500_get_register_interruptible(di->dev, AB8500_USB,
> + AB8500_USB_LINK1_STAT_REG, );

How about

int reg = is_ab8500(di->parent) ? AB8500_USB_LINE_STAT_REG :
  AB8500_USB_LINK1_STAT_REG;

ret = abx500_get_register_interruptible(di->dev, AB8500_USB, reg, );

Shorter, clearer, and precisely fits into 80 columns -- must be good. :-)

> +
>   if (ret >= 0)
>   dev_dbg(di->dev, "UsbLineStatus register = 0x%02x\n", val);
>   else
> @@ -2299,10 +2304,15 @@ static void 
> ab8500_charger_usb_link_status_work(struct work_struct *work)
>   AB8500_MCH_IPT_CURLVL_REG,
>   0x01, 0x00);
>   /*Check link status*/
> - ret = abx500_get_register_interruptible(di->dev,
> - AB8500_USB,
> - AB8500_USB_LINE_STAT_REG,
> - );
> + if (is_ab8500(di->parent))
> + ret = abx500_get_register_interruptible(di->dev,
> + AB8500_USB, AB8500_USB_LINE_STAT_REG,
> + );
> + else
> + ret = abx500_get_register_interruptible(di->dev,
> + AB8500_USB, AB8500_USB_LINK1_STAT_REG,
> + );
> +

Same here. Actually, isn't it exactly the same as above? If so, then just
factor it into its own function.

>   dev_dbg(di->dev, "USB link status= 0x%02x\n",
>   (val & link_status) >> USB_LINK_STATUS_SHIFT);
>   di->invalid_charger_detect_state = 2;
> -- 
> 1.7.5.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 54/57] power: ab8500_charger: Use USBLink1Status Register

2012-09-27 Thread Anton Vorontsov
On Tue, Sep 25, 2012 at 10:12:51AM -0600, mathieu.poir...@linaro.org wrote:
 From: Marcus Cooper marcus.xm.coo...@stericsson.com
 
 The newer AB's such as the AB8505, AB9540 etc include a
 USBLink1 Status register which detects a larger range of
 external devices. This should be used instead of the
 USBLine Status register.
 
 Signed-off-by: Marcus Cooper marcus.xm.coo...@stericsson.com
 Signed-off-by: Mathieu Poirier mathieu.poir...@linaro.org
 Reviewed-by: Hakan BERG hakan.b...@stericsson.com
 Reviewed-by: Yang QU yang...@stericsson.com
 Reviewed-by: Jonas ABERG jonas.ab...@stericsson.com
 ---
  drivers/power/ab8500_charger.c |   22 --
  1 files changed, 16 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
 index 3a97012..7f8f362 100644
 --- a/drivers/power/ab8500_charger.c
 +++ b/drivers/power/ab8500_charger.c
 @@ -2258,8 +2258,13 @@ static void ab8500_charger_usb_link_status_work(struct 
 work_struct *work)
* to start the charging process. but by jumping
* thru a few hoops it can be forced to start.
*/
 - ret = abx500_get_register_interruptible(di-dev, AB8500_USB,
 - AB8500_USB_LINE_STAT_REG, val);
 + if (is_ab8500(di-parent))
 + ret = abx500_get_register_interruptible(di-dev, AB8500_USB,
 + AB8500_USB_LINE_STAT_REG, val);
 + else
 + ret = abx500_get_register_interruptible(di-dev, AB8500_USB,
 + AB8500_USB_LINK1_STAT_REG, val);

How about

int reg = is_ab8500(di-parent) ? AB8500_USB_LINE_STAT_REG :
  AB8500_USB_LINK1_STAT_REG;

ret = abx500_get_register_interruptible(di-dev, AB8500_USB, reg, val);

Shorter, clearer, and precisely fits into 80 columns -- must be good. :-)

 +
   if (ret = 0)
   dev_dbg(di-dev, UsbLineStatus register = 0x%02x\n, val);
   else
 @@ -2299,10 +2304,15 @@ static void 
 ab8500_charger_usb_link_status_work(struct work_struct *work)
   AB8500_MCH_IPT_CURLVL_REG,
   0x01, 0x00);
   /*Check link status*/
 - ret = abx500_get_register_interruptible(di-dev,
 - AB8500_USB,
 - AB8500_USB_LINE_STAT_REG,
 - val);
 + if (is_ab8500(di-parent))
 + ret = abx500_get_register_interruptible(di-dev,
 + AB8500_USB, AB8500_USB_LINE_STAT_REG,
 + val);
 + else
 + ret = abx500_get_register_interruptible(di-dev,
 + AB8500_USB, AB8500_USB_LINK1_STAT_REG,
 + val);
 +

Same here. Actually, isn't it exactly the same as above? If so, then just
factor it into its own function.

   dev_dbg(di-dev, USB link status= 0x%02x\n,
   (val  link_status)  USB_LINK_STATUS_SHIFT);
   di-invalid_charger_detect_state = 2;
 -- 
 1.7.5.4
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 54/57] power: ab8500_charger: Use USBLink1Status Register

2012-09-25 Thread mathieu . poirier
From: Marcus Cooper 

The newer AB's such as the AB8505, AB9540 etc include a
USBLink1 Status register which detects a larger range of
external devices. This should be used instead of the
USBLine Status register.

Signed-off-by: Marcus Cooper 
Signed-off-by: Mathieu Poirier 
Reviewed-by: Hakan BERG 
Reviewed-by: Yang QU 
Reviewed-by: Jonas ABERG 
---
 drivers/power/ab8500_charger.c |   22 --
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index 3a97012..7f8f362 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -2258,8 +2258,13 @@ static void ab8500_charger_usb_link_status_work(struct 
work_struct *work)
 * to start the charging process. but by jumping
 * thru a few hoops it can be forced to start.
 */
-   ret = abx500_get_register_interruptible(di->dev, AB8500_USB,
-   AB8500_USB_LINE_STAT_REG, );
+   if (is_ab8500(di->parent))
+   ret = abx500_get_register_interruptible(di->dev, AB8500_USB,
+   AB8500_USB_LINE_STAT_REG, );
+   else
+   ret = abx500_get_register_interruptible(di->dev, AB8500_USB,
+   AB8500_USB_LINK1_STAT_REG, );
+
if (ret >= 0)
dev_dbg(di->dev, "UsbLineStatus register = 0x%02x\n", val);
else
@@ -2299,10 +2304,15 @@ static void ab8500_charger_usb_link_status_work(struct 
work_struct *work)
AB8500_MCH_IPT_CURLVL_REG,
0x01, 0x00);
/*Check link status*/
-   ret = abx500_get_register_interruptible(di->dev,
-   AB8500_USB,
-   AB8500_USB_LINE_STAT_REG,
-   );
+   if (is_ab8500(di->parent))
+   ret = abx500_get_register_interruptible(di->dev,
+   AB8500_USB, AB8500_USB_LINE_STAT_REG,
+   );
+   else
+   ret = abx500_get_register_interruptible(di->dev,
+   AB8500_USB, AB8500_USB_LINK1_STAT_REG,
+   );
+
dev_dbg(di->dev, "USB link status= 0x%02x\n",
(val & link_status) >> USB_LINK_STATUS_SHIFT);
di->invalid_charger_detect_state = 2;
-- 
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 54/57] power: ab8500_charger: Use USBLink1Status Register

2012-09-25 Thread mathieu . poirier
From: Marcus Cooper marcus.xm.coo...@stericsson.com

The newer AB's such as the AB8505, AB9540 etc include a
USBLink1 Status register which detects a larger range of
external devices. This should be used instead of the
USBLine Status register.

Signed-off-by: Marcus Cooper marcus.xm.coo...@stericsson.com
Signed-off-by: Mathieu Poirier mathieu.poir...@linaro.org
Reviewed-by: Hakan BERG hakan.b...@stericsson.com
Reviewed-by: Yang QU yang...@stericsson.com
Reviewed-by: Jonas ABERG jonas.ab...@stericsson.com
---
 drivers/power/ab8500_charger.c |   22 --
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index 3a97012..7f8f362 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -2258,8 +2258,13 @@ static void ab8500_charger_usb_link_status_work(struct 
work_struct *work)
 * to start the charging process. but by jumping
 * thru a few hoops it can be forced to start.
 */
-   ret = abx500_get_register_interruptible(di-dev, AB8500_USB,
-   AB8500_USB_LINE_STAT_REG, val);
+   if (is_ab8500(di-parent))
+   ret = abx500_get_register_interruptible(di-dev, AB8500_USB,
+   AB8500_USB_LINE_STAT_REG, val);
+   else
+   ret = abx500_get_register_interruptible(di-dev, AB8500_USB,
+   AB8500_USB_LINK1_STAT_REG, val);
+
if (ret = 0)
dev_dbg(di-dev, UsbLineStatus register = 0x%02x\n, val);
else
@@ -2299,10 +2304,15 @@ static void ab8500_charger_usb_link_status_work(struct 
work_struct *work)
AB8500_MCH_IPT_CURLVL_REG,
0x01, 0x00);
/*Check link status*/
-   ret = abx500_get_register_interruptible(di-dev,
-   AB8500_USB,
-   AB8500_USB_LINE_STAT_REG,
-   val);
+   if (is_ab8500(di-parent))
+   ret = abx500_get_register_interruptible(di-dev,
+   AB8500_USB, AB8500_USB_LINE_STAT_REG,
+   val);
+   else
+   ret = abx500_get_register_interruptible(di-dev,
+   AB8500_USB, AB8500_USB_LINK1_STAT_REG,
+   val);
+
dev_dbg(di-dev, USB link status= 0x%02x\n,
(val  link_status)  USB_LINK_STATUS_SHIFT);
di-invalid_charger_detect_state = 2;
-- 
1.7.5.4

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/