Hi,

> From: Peter Chen
> Sent: Tuesday, November 08, 2016 6:25 PM
> 
> On Wed, Nov 02, 2016 at 03:47:12PM +0900, Yoshihiro Shimoda wrote:
< snip >
> > +   /* If current and new mode is the same, this returns the error */
> > +   if (is_host == new_mode_is_host)
> > +           return -EINVAL;
> > +
> > +   if (new_mode_is_host) {
> > +           if (!is_b_device && !is_host)   /* A-Peripheral */
> > +                   rcar_gen3_init_from_a_peri_to_a_host(ch);
> > +           if (is_b_device && !is_host)    /* B-Peripheral */
> > +                   rcar_gen3_init_for_b_host(ch);
> 
> is_host must be false here

Thank you for the review!
I will clean up the code and submit v4 patch soon.

> > +   } else {
> > +           if (!is_b_device && is_host)    /* A-Host */
> > +                   rcar_gen3_init_for_a_peri(ch);
> > +           if (is_b_device && is_host)     /* B-Host */
> > +                   rcar_gen3_init_for_peri(ch);
> 
> is_host must be true here

Same the above.

> > +   }
> > +
> > +   return count;
> > +}
> > +
> 
> How can you handle the case which ID pin is incorrect, eg, ID is 0, but
> it is peripheral mode at the initialization?

This driver always checks the ID pin and sets the suitable mode in 
initialization timing.
So, we can ignore such a situation.

< In detail >
 phy_init()                     @ drivers/phy/phy-core.c
 --> rcar_gen3_phy_usb2_init()
  --> rcar_gen3_phy_init_otg()
   --> rcar_gen3_device_recognition()
    --> if (!rcar_gen3_check_id(ch))
          rcar_gen3_init_for_host(ch);   <-- Sets the mode as host
        else
          rcar_gen3_init_for_peri(ch);   <-- Sets the mode as peripheral
++phy->init_count;              @ drivers/phy/phy-core.c

Best regards,
Yoshihiro Shimoda

> --
> 
> Best Regards,
> Peter Chen

Reply via email to