Re: [PATCH 54/57] power: ab8500_charger: Use USBLink1Status Register
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
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
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
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/