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

From: Anton Vorontsov
Date: Thu Sep 27 2012 - 22:59:40 EST


On Tue, Sep 25, 2012 at 10:12:51AM -0600, mathieu.poirier@xxxxxxxxxx wrote:
> From: Marcus Cooper <marcus.xm.cooper@xxxxxxxxxxxxxx>
>
> 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.cooper@xxxxxxxxxxxxxx>
> Signed-off-by: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx>
> Reviewed-by: Hakan BERG <hakan.berg@xxxxxxxxxxxxxx>
> Reviewed-by: Yang QU <yang.qu@xxxxxxxxxxxxxx>
> Reviewed-by: Jonas ABERG <jonas.aberg@xxxxxxxxxxxxxx>
> ---
> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/