Hi Felipe,
On Sun, 16 Mar 2008 13:00:35 +0200, Felipe Balbi wrote:
> There are some changes on linux-omap's isp1301_omap.c
> that could already be in linux-mainline after
> omap1/2 got merged.
>
> This patch sync such changes from linux-omap into linux-mailine.
I fear I will need a better description than this. Please explain what
the changes are and why they are needed. "sync with an external tree"
isn't sufficient.
>
> Signed-off-by: Felipe Balbi <[EMAIL PROTECTED]>
> ---
> drivers/i2c/chips/isp1301_omap.c | 40 +++++++++++++++++++++++++++++--------
> 1 files changed, 31 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/i2c/chips/isp1301_omap.c
> b/drivers/i2c/chips/isp1301_omap.c
> index 9f2ccaf..9e3a6f3 100644
> --- a/drivers/i2c/chips/isp1301_omap.c
> +++ b/drivers/i2c/chips/isp1301_omap.c
> @@ -84,7 +84,8 @@ struct isp1301 {
>
> /*-------------------------------------------------------------------------*/
>
> -#ifdef CONFIG_MACH_OMAP_H2
> +#if defined(CONFIG_MACH_OMAP_H2) || \
> + defined(CONFIG_MACH_OMAP_H3)
>
> /* board-specific PM hooks */
>
> @@ -122,17 +123,30 @@ static void enable_vbus_source(struct isp1301 *isp)
> }
>
>
> -/* products will deliver OTG messages with LEDs, GUI, etc */
> -static inline void notresponding(struct isp1301 *isp)
> +#else
> +
> +static void enable_vbus_draw(struct isp1301 *isp, unsigned mA)
> {
> - printk(KERN_NOTICE "OTG device not responding.\n");
> + pr_debug("%s UNIMPL\n", __FUNCTION__);
> }
>
> +static void enable_vbus_source(struct isp1301 *isp)
> +{
> + pr_debug("%s UNIMPL\n", __FUNCTION__);
> +}
>
> #endif
>
> /*-------------------------------------------------------------------------*/
>
> +/* products will deliver OTG messages with LEDs, GUI, etc */
> +static inline void notresponding(struct isp1301 *isp)
> +{
> + printk(KERN_NOTICE "OTG device not responding.\n");
> +}
> +
> +/*-------------------------------------------------------------------------*/
> +
> /* only two addresses possible */
> static struct i2c_driver isp1301_driver;
>
> @@ -495,6 +509,7 @@ static inline void check_state(struct isp1301 *isp, const
> char *tag) { }
> static void update_otg1(struct isp1301 *isp, u8 int_src)
> {
> u32 otg_ctrl;
> + u8 int_id;
>
> otg_ctrl = OTG_CTRL_REG
> & OTG_CTRL_MASK
> @@ -508,7 +523,10 @@ static void update_otg1(struct isp1301 *isp, u8 int_src)
> }
> if (int_src & INTR_VBUS_VLD)
> otg_ctrl |= OTG_VBUSVLD;
> - if (int_src & INTR_ID_GND) { /* default-A */
> +
> + int_id = isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE);
> +
> + if (int_id & INTR_ID_GND) { /* default-A */
> if (isp->otg.state == OTG_STATE_B_IDLE
> || isp->otg.state == OTG_STATE_UNDEFINED) {
> a_idle(isp, "init");
> @@ -1063,7 +1081,7 @@ static void isp_update_otg(struct isp1301 *isp, u8 stat)
> /* update the OTG controller state to match the isp1301; may
> * trigger OPRT_CHG irqs for changes going to the isp1301.
> */
> - update_otg1(isp, isp_stat);
> + update_otg1(isp, isp_stat); /* pass the actual interrupt latch status */
> update_otg2(isp, isp_bstat);
> check_state(isp, __FUNCTION__);
> #endif
> @@ -1337,13 +1355,13 @@ isp1301_set_peripheral(struct otg_transceiver *otg,
> struct usb_gadget *gadget)
> power_up(isp);
> isp->otg.state = OTG_STATE_B_IDLE;
>
> - if (machine_is_omap_h2())
> + if (machine_is_omap_h2() || machine_is_omap_h3())
> isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0);
>
> isp1301_set_bits(isp, ISP1301_INTERRUPT_RISING,
> - INTR_SESS_VLD);
> + INTR_SESS_VLD | INTR_VBUS_VLD);
> isp1301_set_bits(isp, ISP1301_INTERRUPT_FALLING,
> - INTR_VBUS_VLD);
> + INTR_VBUS_VLD | INTR_SESS_VLD);
> dev_info(&isp->client->dev, "B-Peripheral sessions ok\n");
> dump_regs(isp, __func__);
>
> @@ -1420,6 +1438,10 @@ isp1301_start_hnp(struct otg_transceiver *dev)
> * So do this part as early as possible...
> */
> switch (isp->otg.state) {
> + case OTG_STATE_B_PERIPHERAL:
> + isp->otg.state = OTG_STATE_B_WAIT_ACON;
> + isp1301_defer_work(isp, WORK_UPDATE_ISP);
> + break;
> case OTG_STATE_B_HOST:
> isp->otg.state = OTG_STATE_B_PERIPHERAL;
> /* caller will suspend next */
--
Jean Delvare
_______________________________________________
i2c mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/i2c