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/