diff mbox

[U-Boot,v5] colibri_vf: Add board_usb_phy_mode function

Message ID ffa56a2cdaa816b62489c2cc51366b17a5126e48.1447308682.git.maitysanchayan@gmail.com
State Accepted
Delegated to: Tom Warren
Headers show

Commit Message

Sanchayan Maity Nov. 12, 2015, 6:17 a.m. UTC
Add board_usb_phy_mode function for detecting whether a port is
being used as host or client using a GPIO. On Colibri Vybrid we
provide GPIO 102 for this very same purpose.

Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
---
Changes since v4:
No need to break after return.

Changes since v3:
Return USB_INIT_DEVICE or USB_INIT_HOST after checking for
the GPIO state to account for the fact that the previous
logic breaks in case if the enum for USB mode were to ever
be changed.

Add comments based on Stefan's feedback.

Changes since v2:

Instead of returning 0 from board_usb_phy_mode return it as
USB_INIT_HOST.

Changes since v1:

Move the GPIO request call to the board_init function as all
further calls to board_usb_phy_mode will actually result in the
gpio_request failing.
---
 board/toradex/colibri_vf/colibri_vf.c | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

Comments

Sanchayan Maity Nov. 24, 2015, 10:23 a.m. UTC | #1
Hello,

Ping?

Any further feedback? Is the patchset good to get accepted?

Thanks.

Regards,
Sanchayan.

On 15-11-12 11:47:35, Sanchayan Maity wrote:
> Add board_usb_phy_mode function for detecting whether a port is
> being used as host or client using a GPIO. On Colibri Vybrid we
> provide GPIO 102 for this very same purpose.
> 
> Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
> ---
> Changes since v4:
> No need to break after return.
> 
> Changes since v3:
> Return USB_INIT_DEVICE or USB_INIT_HOST after checking for
> the GPIO state to account for the fact that the previous
> logic breaks in case if the enum for USB mode were to ever
> be changed.
> 
> Add comments based on Stefan's feedback.
> 
> Changes since v2:
> 
> Instead of returning 0 from board_usb_phy_mode return it as
> USB_INIT_HOST.
> 
> Changes since v1:
> 
> Move the GPIO request call to the board_init function as all
> further calls to board_usb_phy_mode will actually result in the
> gpio_request failing.
> ---
>  board/toradex/colibri_vf/colibri_vf.c | 33 ++++++++++++++++++++++++++++++++-
>  1 file changed, 32 insertions(+), 1 deletion(-)
> 
> diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c
> index a6d1c5b..c65ccb3 100644
> --- a/board/toradex/colibri_vf/colibri_vf.c
> +++ b/board/toradex/colibri_vf/colibri_vf.c
> @@ -21,6 +21,7 @@
>  #include <i2c.h>
>  #include <g_dnl.h>
>  #include <asm/gpio.h>
> +#include <usb.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -34,6 +35,7 @@ DECLARE_GLOBAL_DATA_PTR;
>  			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
>  
>  #define USB_PEN_GPIO           83
> +#define USB_CDET_GPIO		102
>  
>  static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
>  	/* levelling */
> @@ -92,6 +94,7 @@ static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
>  
>  static const iomux_v3_cfg_t usb_pads[] = {
>  	VF610_PAD_PTD4__GPIO_83,
> +	VF610_PAD_PTC29__GPIO_102,
>  };
>  
>  int dram_init(void)
> @@ -280,7 +283,6 @@ static void setup_iomux_gpio(void)
>  		VF610_PAD_PTB23__GPIO_93,
>  		VF610_PAD_PTB26__GPIO_96,
>  		VF610_PAD_PTB28__GPIO_98,
> -		VF610_PAD_PTC29__GPIO_102,
>  		VF610_PAD_PTC30__GPIO_103,
>  		VF610_PAD_PTA7__GPIO_134,
>  	};
> @@ -509,6 +511,10 @@ int board_init(void)
>  
>  	setbits_le32(&scsc->sosc_ctr, SCSC_SOSC_CTR_SOSC_EN);
>  
> +#ifdef CONFIG_USB_EHCI_VF
> +	gpio_request(USB_CDET_GPIO, "usb-cdet-gpio");
> +#endif
> +
>  	return 0;
>  }
>  
> @@ -554,4 +560,29 @@ int board_ehci_hcd_init(int port)
>  	}
>  	return 0;
>  }
> +
> +int board_usb_phy_mode(int port)
> +{
> +	switch (port) {
> +	case 0:
> +		/*
> +		 * Port 0 is used only in client mode on Colibri Vybrid modules
> +		 * Check for state of USB client gpio pin and accordingly return
> +		 * USB_INIT_DEVICE or USB_INIT_HOST.
> +		 */
> +		if (gpio_get_value(USB_CDET_GPIO))
> +			return USB_INIT_DEVICE;
> +		else
> +			return USB_INIT_HOST;
> +	case 1:
> +		/* Port 1 is used only in host mode on Colibri Vybrid modules */
> +		return USB_INIT_HOST;
> +	default:
> +		/*
> +		 * There are only two USB controllers on Vybrid. Ideally we will
> +		 * not reach here. However return USB_INIT_HOST if we do.
> +		 */
> +		return USB_INIT_HOST;
> +	}
> +}
>  #endif
> -- 
> 2.6.2
>
Marek Vasut Nov. 24, 2015, 10:30 a.m. UTC | #2
On Tuesday, November 24, 2015 at 11:23:04 AM, maitysanchayan@gmail.com wrote:
> Hello,
> 
> Ping?
> 
> Any further feedback? Is the patchset good to get accepted?

Not from me. Stefano, this is borad-level stuff, so pick it up please.

Best regards,
Marek Vasut
Stefano Babic Nov. 24, 2015, 10:37 a.m. UTC | #3
On 24/11/2015 11:23, maitysanchayan@gmail.com wrote:
> Hello,
> 
> Ping?
> 
> Any further feedback? Is the patchset good to get accepted?

I'll pick it up

Best regards,
Stefano Babic

> 
> Thanks.
> 
> Regards,
> Sanchayan.
> 
> On 15-11-12 11:47:35, Sanchayan Maity wrote:
>> Add board_usb_phy_mode function for detecting whether a port is
>> being used as host or client using a GPIO. On Colibri Vybrid we
>> provide GPIO 102 for this very same purpose.
>>
>> Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
>> ---
>> Changes since v4:
>> No need to break after return.
>>
>> Changes since v3:
>> Return USB_INIT_DEVICE or USB_INIT_HOST after checking for
>> the GPIO state to account for the fact that the previous
>> logic breaks in case if the enum for USB mode were to ever
>> be changed.
>>
>> Add comments based on Stefan's feedback.
>>
>> Changes since v2:
>>
>> Instead of returning 0 from board_usb_phy_mode return it as
>> USB_INIT_HOST.
>>
>> Changes since v1:
>>
>> Move the GPIO request call to the board_init function as all
>> further calls to board_usb_phy_mode will actually result in the
>> gpio_request failing.
>> ---
>>  board/toradex/colibri_vf/colibri_vf.c | 33 ++++++++++++++++++++++++++++++++-
>>  1 file changed, 32 insertions(+), 1 deletion(-)
>>
>> diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c
>> index a6d1c5b..c65ccb3 100644
>> --- a/board/toradex/colibri_vf/colibri_vf.c
>> +++ b/board/toradex/colibri_vf/colibri_vf.c
>> @@ -21,6 +21,7 @@
>>  #include <i2c.h>
>>  #include <g_dnl.h>
>>  #include <asm/gpio.h>
>> +#include <usb.h>
>>  
>>  DECLARE_GLOBAL_DATA_PTR;
>>  
>> @@ -34,6 +35,7 @@ DECLARE_GLOBAL_DATA_PTR;
>>  			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
>>  
>>  #define USB_PEN_GPIO           83
>> +#define USB_CDET_GPIO		102
>>  
>>  static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
>>  	/* levelling */
>> @@ -92,6 +94,7 @@ static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
>>  
>>  static const iomux_v3_cfg_t usb_pads[] = {
>>  	VF610_PAD_PTD4__GPIO_83,
>> +	VF610_PAD_PTC29__GPIO_102,
>>  };
>>  
>>  int dram_init(void)
>> @@ -280,7 +283,6 @@ static void setup_iomux_gpio(void)
>>  		VF610_PAD_PTB23__GPIO_93,
>>  		VF610_PAD_PTB26__GPIO_96,
>>  		VF610_PAD_PTB28__GPIO_98,
>> -		VF610_PAD_PTC29__GPIO_102,
>>  		VF610_PAD_PTC30__GPIO_103,
>>  		VF610_PAD_PTA7__GPIO_134,
>>  	};
>> @@ -509,6 +511,10 @@ int board_init(void)
>>  
>>  	setbits_le32(&scsc->sosc_ctr, SCSC_SOSC_CTR_SOSC_EN);
>>  
>> +#ifdef CONFIG_USB_EHCI_VF
>> +	gpio_request(USB_CDET_GPIO, "usb-cdet-gpio");
>> +#endif
>> +
>>  	return 0;
>>  }
>>  
>> @@ -554,4 +560,29 @@ int board_ehci_hcd_init(int port)
>>  	}
>>  	return 0;
>>  }
>> +
>> +int board_usb_phy_mode(int port)
>> +{
>> +	switch (port) {
>> +	case 0:
>> +		/*
>> +		 * Port 0 is used only in client mode on Colibri Vybrid modules
>> +		 * Check for state of USB client gpio pin and accordingly return
>> +		 * USB_INIT_DEVICE or USB_INIT_HOST.
>> +		 */
>> +		if (gpio_get_value(USB_CDET_GPIO))
>> +			return USB_INIT_DEVICE;
>> +		else
>> +			return USB_INIT_HOST;
>> +	case 1:
>> +		/* Port 1 is used only in host mode on Colibri Vybrid modules */
>> +		return USB_INIT_HOST;
>> +	default:
>> +		/*
>> +		 * There are only two USB controllers on Vybrid. Ideally we will
>> +		 * not reach here. However return USB_INIT_HOST if we do.
>> +		 */
>> +		return USB_INIT_HOST;
>> +	}
>> +}
>>  #endif
>> -- 
>> 2.6.2
>>
Sanchayan Maity Nov. 24, 2015, 10:38 a.m. UTC | #4
On 15-11-24 11:37:59, Stefano Babic wrote:
> On 24/11/2015 11:23, maitysanchayan@gmail.com wrote:
> > Hello,
> > 
> > Ping?
> > 
> > Any further feedback? Is the patchset good to get accepted?
> 
> I'll pick it up

Thanks.

- Sanchayan.
Sanchayan Maity Jan. 7, 2016, 8:02 p.m. UTC | #5
Hello Stefano,

Ping?

I just checked the master branch and this has not been picked up yet.

- Sanchayan.

On 15-11-24 11:37:59, Stefano Babic wrote:
> On 24/11/2015 11:23, maitysanchayan@gmail.com wrote:
> > Hello,
> > 
> > Ping?
> > 
> > Any further feedback? Is the patchset good to get accepted?
> 
> I'll pick it up
> 
> Best regards,
> Stefano Babic
> 
> > 
> > Thanks.
> > 
> > Regards,
> > Sanchayan.
> > 
> > On 15-11-12 11:47:35, Sanchayan Maity wrote:
> >> Add board_usb_phy_mode function for detecting whether a port is
> >> being used as host or client using a GPIO. On Colibri Vybrid we
> >> provide GPIO 102 for this very same purpose.
> >>
> >> Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
> >> ---
> >> Changes since v4:
> >> No need to break after return.
> >>
> >> Changes since v3:
> >> Return USB_INIT_DEVICE or USB_INIT_HOST after checking for
> >> the GPIO state to account for the fact that the previous
> >> logic breaks in case if the enum for USB mode were to ever
> >> be changed.
> >>
> >> Add comments based on Stefan's feedback.
> >>
> >> Changes since v2:
> >>
> >> Instead of returning 0 from board_usb_phy_mode return it as
> >> USB_INIT_HOST.
> >>
> >> Changes since v1:
> >>
> >> Move the GPIO request call to the board_init function as all
> >> further calls to board_usb_phy_mode will actually result in the
> >> gpio_request failing.
> >> ---
> >>  board/toradex/colibri_vf/colibri_vf.c | 33 ++++++++++++++++++++++++++++++++-
> >>  1 file changed, 32 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c
> >> index a6d1c5b..c65ccb3 100644
> >> --- a/board/toradex/colibri_vf/colibri_vf.c
> >> +++ b/board/toradex/colibri_vf/colibri_vf.c
> >> @@ -21,6 +21,7 @@
> >>  #include <i2c.h>
> >>  #include <g_dnl.h>
> >>  #include <asm/gpio.h>
> >> +#include <usb.h>
> >>  
> >>  DECLARE_GLOBAL_DATA_PTR;
> >>  
> >> @@ -34,6 +35,7 @@ DECLARE_GLOBAL_DATA_PTR;
> >>  			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
> >>  
> >>  #define USB_PEN_GPIO           83
> >> +#define USB_CDET_GPIO		102
> >>  
> >>  static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
> >>  	/* levelling */
> >> @@ -92,6 +94,7 @@ static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
> >>  
> >>  static const iomux_v3_cfg_t usb_pads[] = {
> >>  	VF610_PAD_PTD4__GPIO_83,
> >> +	VF610_PAD_PTC29__GPIO_102,
> >>  };
> >>  
> >>  int dram_init(void)
> >> @@ -280,7 +283,6 @@ static void setup_iomux_gpio(void)
> >>  		VF610_PAD_PTB23__GPIO_93,
> >>  		VF610_PAD_PTB26__GPIO_96,
> >>  		VF610_PAD_PTB28__GPIO_98,
> >> -		VF610_PAD_PTC29__GPIO_102,
> >>  		VF610_PAD_PTC30__GPIO_103,
> >>  		VF610_PAD_PTA7__GPIO_134,
> >>  	};
> >> @@ -509,6 +511,10 @@ int board_init(void)
> >>  
> >>  	setbits_le32(&scsc->sosc_ctr, SCSC_SOSC_CTR_SOSC_EN);
> >>  
> >> +#ifdef CONFIG_USB_EHCI_VF
> >> +	gpio_request(USB_CDET_GPIO, "usb-cdet-gpio");
> >> +#endif
> >> +
> >>  	return 0;
> >>  }
> >>  
> >> @@ -554,4 +560,29 @@ int board_ehci_hcd_init(int port)
> >>  	}
> >>  	return 0;
> >>  }
> >> +
> >> +int board_usb_phy_mode(int port)
> >> +{
> >> +	switch (port) {
> >> +	case 0:
> >> +		/*
> >> +		 * Port 0 is used only in client mode on Colibri Vybrid modules
> >> +		 * Check for state of USB client gpio pin and accordingly return
> >> +		 * USB_INIT_DEVICE or USB_INIT_HOST.
> >> +		 */
> >> +		if (gpio_get_value(USB_CDET_GPIO))
> >> +			return USB_INIT_DEVICE;
> >> +		else
> >> +			return USB_INIT_HOST;
> >> +	case 1:
> >> +		/* Port 1 is used only in host mode on Colibri Vybrid modules */
> >> +		return USB_INIT_HOST;
> >> +	default:
> >> +		/*
> >> +		 * There are only two USB controllers on Vybrid. Ideally we will
> >> +		 * not reach here. However return USB_INIT_HOST if we do.
> >> +		 */
> >> +		return USB_INIT_HOST;
> >> +	}
> >> +}
> >>  #endif
> >> -- 
> >> 2.6.2
> >>
> 
> 
> -- 
> =====================================================================
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic@denx.de
> =====================================================================
Stefano Babic Jan. 7, 2016, 9:12 p.m. UTC | #6
Hi,

On 07/01/2016 21:02, maitysanchayan@gmail.com wrote:
> Hello Stefano,
> 
> Ping?
> 
> I just checked the master branch and this has not been picked up yet.
> 

Can you check ? I see:

commit 01a8cf91513981d05bf89840d768e9c060ee998b
Author: Sanchayan Maity <maitysanchayan@gmail.com>
Date:   Thu Nov 12 11:47:35 2015 +0530

    colibri_vf: Add board_usb_phy_mode function

Regards,
Stefano

> - Sanchayan.
> 
> On 15-11-24 11:37:59, Stefano Babic wrote:
>> On 24/11/2015 11:23, maitysanchayan@gmail.com wrote:
>>> Hello,
>>>
>>> Ping?
>>>
>>> Any further feedback? Is the patchset good to get accepted?
>>
>> I'll pick it up
>>
>> Best regards,
>> Stefano Babic
>>
>>>
>>> Thanks.
>>>
>>> Regards,
>>> Sanchayan.
>>>
>>> On 15-11-12 11:47:35, Sanchayan Maity wrote:
>>>> Add board_usb_phy_mode function for detecting whether a port is
>>>> being used as host or client using a GPIO. On Colibri Vybrid we
>>>> provide GPIO 102 for this very same purpose.
>>>>
>>>> Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
>>>> ---
>>>> Changes since v4:
>>>> No need to break after return.
>>>>
>>>> Changes since v3:
>>>> Return USB_INIT_DEVICE or USB_INIT_HOST after checking for
>>>> the GPIO state to account for the fact that the previous
>>>> logic breaks in case if the enum for USB mode were to ever
>>>> be changed.
>>>>
>>>> Add comments based on Stefan's feedback.
>>>>
>>>> Changes since v2:
>>>>
>>>> Instead of returning 0 from board_usb_phy_mode return it as
>>>> USB_INIT_HOST.
>>>>
>>>> Changes since v1:
>>>>
>>>> Move the GPIO request call to the board_init function as all
>>>> further calls to board_usb_phy_mode will actually result in the
>>>> gpio_request failing.
>>>> ---
>>>>  board/toradex/colibri_vf/colibri_vf.c | 33 ++++++++++++++++++++++++++++++++-
>>>>  1 file changed, 32 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c
>>>> index a6d1c5b..c65ccb3 100644
>>>> --- a/board/toradex/colibri_vf/colibri_vf.c
>>>> +++ b/board/toradex/colibri_vf/colibri_vf.c
>>>> @@ -21,6 +21,7 @@
>>>>  #include <i2c.h>
>>>>  #include <g_dnl.h>
>>>>  #include <asm/gpio.h>
>>>> +#include <usb.h>
>>>>  
>>>>  DECLARE_GLOBAL_DATA_PTR;
>>>>  
>>>> @@ -34,6 +35,7 @@ DECLARE_GLOBAL_DATA_PTR;
>>>>  			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
>>>>  
>>>>  #define USB_PEN_GPIO           83
>>>> +#define USB_CDET_GPIO		102
>>>>  
>>>>  static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
>>>>  	/* levelling */
>>>> @@ -92,6 +94,7 @@ static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
>>>>  
>>>>  static const iomux_v3_cfg_t usb_pads[] = {
>>>>  	VF610_PAD_PTD4__GPIO_83,
>>>> +	VF610_PAD_PTC29__GPIO_102,
>>>>  };
>>>>  
>>>>  int dram_init(void)
>>>> @@ -280,7 +283,6 @@ static void setup_iomux_gpio(void)
>>>>  		VF610_PAD_PTB23__GPIO_93,
>>>>  		VF610_PAD_PTB26__GPIO_96,
>>>>  		VF610_PAD_PTB28__GPIO_98,
>>>> -		VF610_PAD_PTC29__GPIO_102,
>>>>  		VF610_PAD_PTC30__GPIO_103,
>>>>  		VF610_PAD_PTA7__GPIO_134,
>>>>  	};
>>>> @@ -509,6 +511,10 @@ int board_init(void)
>>>>  
>>>>  	setbits_le32(&scsc->sosc_ctr, SCSC_SOSC_CTR_SOSC_EN);
>>>>  
>>>> +#ifdef CONFIG_USB_EHCI_VF
>>>> +	gpio_request(USB_CDET_GPIO, "usb-cdet-gpio");
>>>> +#endif
>>>> +
>>>>  	return 0;
>>>>  }
>>>>  
>>>> @@ -554,4 +560,29 @@ int board_ehci_hcd_init(int port)
>>>>  	}
>>>>  	return 0;
>>>>  }
>>>> +
>>>> +int board_usb_phy_mode(int port)
>>>> +{
>>>> +	switch (port) {
>>>> +	case 0:
>>>> +		/*
>>>> +		 * Port 0 is used only in client mode on Colibri Vybrid modules
>>>> +		 * Check for state of USB client gpio pin and accordingly return
>>>> +		 * USB_INIT_DEVICE or USB_INIT_HOST.
>>>> +		 */
>>>> +		if (gpio_get_value(USB_CDET_GPIO))
>>>> +			return USB_INIT_DEVICE;
>>>> +		else
>>>> +			return USB_INIT_HOST;
>>>> +	case 1:
>>>> +		/* Port 1 is used only in host mode on Colibri Vybrid modules */
>>>> +		return USB_INIT_HOST;
>>>> +	default:
>>>> +		/*
>>>> +		 * There are only two USB controllers on Vybrid. Ideally we will
>>>> +		 * not reach here. However return USB_INIT_HOST if we do.
>>>> +		 */
>>>> +		return USB_INIT_HOST;
>>>> +	}
>>>> +}
>>>>  #endif
>>>> -- 
>>>> 2.6.2
>>>>
>>
>>
>> -- 
>> =====================================================================
>> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
>> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>> Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic@denx.de
>> =====================================================================
Sanchayan Maity Jan. 8, 2016, 5:50 a.m. UTC | #7
Hello,

On 16-01-07 22:12:29, Stefano Babic wrote:
> Hi,
> 
> On 07/01/2016 21:02, maitysanchayan@gmail.com wrote:
> > Hello Stefano,
> > 
> > Ping?
> > 
> > I just checked the master branch and this has not been picked up yet.
> > 
> 
> Can you check ? I see:
> 
> commit 01a8cf91513981d05bf89840d768e9c060ee998b
> Author: Sanchayan Maity <maitysanchayan@gmail.com>
> Date:   Thu Nov 12 11:47:35 2015 +0530
> 
>     colibri_vf: Add board_usb_phy_mode function

Yes, this seems to be present but the first and second patch in the series
which make changes to the ehci-vf driver are not present.

- Sanchayan.

> 
> Regards,
> Stefano
> 
> > - Sanchayan.
> > 
> > On 15-11-24 11:37:59, Stefano Babic wrote:
> >> On 24/11/2015 11:23, maitysanchayan@gmail.com wrote:
> >>> Hello,
> >>>
> >>> Ping?
> >>>
> >>> Any further feedback? Is the patchset good to get accepted?
> >>
> >> I'll pick it up
> >>
> >> Best regards,
> >> Stefano Babic
> >>
> >>>
> >>> Thanks.
> >>>
> >>> Regards,
> >>> Sanchayan.
> >>>
> >>> On 15-11-12 11:47:35, Sanchayan Maity wrote:
> >>>> Add board_usb_phy_mode function for detecting whether a port is
> >>>> being used as host or client using a GPIO. On Colibri Vybrid we
> >>>> provide GPIO 102 for this very same purpose.
> >>>>
> >>>> Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
> >>>> ---
> >>>> Changes since v4:
> >>>> No need to break after return.
> >>>>
> >>>> Changes since v3:
> >>>> Return USB_INIT_DEVICE or USB_INIT_HOST after checking for
> >>>> the GPIO state to account for the fact that the previous
> >>>> logic breaks in case if the enum for USB mode were to ever
> >>>> be changed.
> >>>>
> >>>> Add comments based on Stefan's feedback.
> >>>>
> >>>> Changes since v2:
> >>>>
> >>>> Instead of returning 0 from board_usb_phy_mode return it as
> >>>> USB_INIT_HOST.
> >>>>
> >>>> Changes since v1:
> >>>>
> >>>> Move the GPIO request call to the board_init function as all
> >>>> further calls to board_usb_phy_mode will actually result in the
> >>>> gpio_request failing.
> >>>> ---
> >>>>  board/toradex/colibri_vf/colibri_vf.c | 33 ++++++++++++++++++++++++++++++++-
> >>>>  1 file changed, 32 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c
> >>>> index a6d1c5b..c65ccb3 100644
> >>>> --- a/board/toradex/colibri_vf/colibri_vf.c
> >>>> +++ b/board/toradex/colibri_vf/colibri_vf.c
> >>>> @@ -21,6 +21,7 @@
> >>>>  #include <i2c.h>
> >>>>  #include <g_dnl.h>
> >>>>  #include <asm/gpio.h>
> >>>> +#include <usb.h>
> >>>>  
> >>>>  DECLARE_GLOBAL_DATA_PTR;
> >>>>  
> >>>> @@ -34,6 +35,7 @@ DECLARE_GLOBAL_DATA_PTR;
> >>>>  			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
> >>>>  
> >>>>  #define USB_PEN_GPIO           83
> >>>> +#define USB_CDET_GPIO		102
> >>>>  
> >>>>  static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
> >>>>  	/* levelling */
> >>>> @@ -92,6 +94,7 @@ static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
> >>>>  
> >>>>  static const iomux_v3_cfg_t usb_pads[] = {
> >>>>  	VF610_PAD_PTD4__GPIO_83,
> >>>> +	VF610_PAD_PTC29__GPIO_102,
> >>>>  };
> >>>>  
> >>>>  int dram_init(void)
> >>>> @@ -280,7 +283,6 @@ static void setup_iomux_gpio(void)
> >>>>  		VF610_PAD_PTB23__GPIO_93,
> >>>>  		VF610_PAD_PTB26__GPIO_96,
> >>>>  		VF610_PAD_PTB28__GPIO_98,
> >>>> -		VF610_PAD_PTC29__GPIO_102,
> >>>>  		VF610_PAD_PTC30__GPIO_103,
> >>>>  		VF610_PAD_PTA7__GPIO_134,
> >>>>  	};
> >>>> @@ -509,6 +511,10 @@ int board_init(void)
> >>>>  
> >>>>  	setbits_le32(&scsc->sosc_ctr, SCSC_SOSC_CTR_SOSC_EN);
> >>>>  
> >>>> +#ifdef CONFIG_USB_EHCI_VF
> >>>> +	gpio_request(USB_CDET_GPIO, "usb-cdet-gpio");
> >>>> +#endif
> >>>> +
> >>>>  	return 0;
> >>>>  }
> >>>>  
> >>>> @@ -554,4 +560,29 @@ int board_ehci_hcd_init(int port)
> >>>>  	}
> >>>>  	return 0;
> >>>>  }
> >>>> +
> >>>> +int board_usb_phy_mode(int port)
> >>>> +{
> >>>> +	switch (port) {
> >>>> +	case 0:
> >>>> +		/*
> >>>> +		 * Port 0 is used only in client mode on Colibri Vybrid modules
> >>>> +		 * Check for state of USB client gpio pin and accordingly return
> >>>> +		 * USB_INIT_DEVICE or USB_INIT_HOST.
> >>>> +		 */
> >>>> +		if (gpio_get_value(USB_CDET_GPIO))
> >>>> +			return USB_INIT_DEVICE;
> >>>> +		else
> >>>> +			return USB_INIT_HOST;
> >>>> +	case 1:
> >>>> +		/* Port 1 is used only in host mode on Colibri Vybrid modules */
> >>>> +		return USB_INIT_HOST;
> >>>> +	default:
> >>>> +		/*
> >>>> +		 * There are only two USB controllers on Vybrid. Ideally we will
> >>>> +		 * not reach here. However return USB_INIT_HOST if we do.
> >>>> +		 */
> >>>> +		return USB_INIT_HOST;
> >>>> +	}
> >>>> +}
> >>>>  #endif
> >>>> -- 
> >>>> 2.6.2
> >>>>
> >>
> >>
> >> -- 
> >> =====================================================================
> >> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> >> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> >> Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic@denx.de
> >> =====================================================================
> 
> -- 
> =====================================================================
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic@denx.de
> =====================================================================
Marek Vasut Jan. 8, 2016, 12:11 p.m. UTC | #8
On Friday, January 08, 2016 at 06:50:41 AM, maitysanchayan@gmail.com wrote:
> Hello,
> 
> On 16-01-07 22:12:29, Stefano Babic wrote:
> > Hi,
> > 
> > On 07/01/2016 21:02, maitysanchayan@gmail.com wrote:
> > > Hello Stefano,
> > > 
> > > Ping?
> > > 
> > > I just checked the master branch and this has not been picked up yet.
> > 
> > Can you check ? I see:
> > 
> > commit 01a8cf91513981d05bf89840d768e9c060ee998b
> > Author: Sanchayan Maity <maitysanchayan@gmail.com>
> > Date:   Thu Nov 12 11:47:35 2015 +0530
> > 
> >     colibri_vf: Add board_usb_phy_mode function
> 
> Yes, this seems to be present but the first and second patch in the series
> which make changes to the ehci-vf driver are not present.

But this is only a single patch here , even the subject indicates so ... ?

Best regards,
Marek Vasut
Sanchayan Maity Jan. 8, 2016, 12:18 p.m. UTC | #9
On 16-01-08 13:11:27, Marek Vasut wrote:
> On Friday, January 08, 2016 at 06:50:41 AM, maitysanchayan@gmail.com wrote:
> > Hello,
> > 
> > On 16-01-07 22:12:29, Stefano Babic wrote:
> > > Hi,
> > > 
> > > On 07/01/2016 21:02, maitysanchayan@gmail.com wrote:
> > > > Hello Stefano,
> > > > 
> > > > Ping?
> > > > 
> > > > I just checked the master branch and this has not been picked up yet.
> > > 
> > > Can you check ? I see:
> > > 
> > > commit 01a8cf91513981d05bf89840d768e9c060ee998b
> > > Author: Sanchayan Maity <maitysanchayan@gmail.com>
> > > Date:   Thu Nov 12 11:47:35 2015 +0530
> > > 
> > >     colibri_vf: Add board_usb_phy_mode function
> > 
> > Yes, this seems to be present but the first and second patch in the series
> > which make changes to the ehci-vf driver are not present.
> 
> But this is only a single patch here , even the subject indicates so ... ?

Hmm I guess I get it. This patch I had send as a reply to the 3rd patch in a thread
of a 3 patch series

http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/238549

My bad. Sorry about the confusion. I will ping on the respective individual 1st and 2nd patch.

- Sanchayan.
Marek Vasut Jan. 8, 2016, 12:25 p.m. UTC | #10
On Friday, January 08, 2016 at 01:18:46 PM, maitysanchayan@gmail.com wrote:
> On 16-01-08 13:11:27, Marek Vasut wrote:
> > On Friday, January 08, 2016 at 06:50:41 AM, maitysanchayan@gmail.com wrote:
> > > Hello,
> > > 
> > > On 16-01-07 22:12:29, Stefano Babic wrote:
> > > > Hi,
> > > > 
> > > > On 07/01/2016 21:02, maitysanchayan@gmail.com wrote:
> > > > > Hello Stefano,
> > > > > 
> > > > > Ping?
> > > > > 
> > > > > I just checked the master branch and this has not been picked up
> > > > > yet.
> > > > 
> > > > Can you check ? I see:
> > > > 
> > > > commit 01a8cf91513981d05bf89840d768e9c060ee998b
> > > > Author: Sanchayan Maity <maitysanchayan@gmail.com>
> > > > Date:   Thu Nov 12 11:47:35 2015 +0530
> > > > 
> > > >     colibri_vf: Add board_usb_phy_mode function
> > > 
> > > Yes, this seems to be present but the first and second patch in the
> > > series which make changes to the ehci-vf driver are not present.
> > 
> > But this is only a single patch here , even the subject indicates so ...
> > ?
> 
> Hmm I guess I get it. This patch I had send as a reply to the 3rd patch in
> a thread of a 3 patch series
> 
> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/238549
> 
> My bad. Sorry about the confusion. I will ping on the respective individual
> 1st and 2nd patch.

Thanks :) I suppose it's clear now to everyone involved.

Best regards,
Marek Vasut
diff mbox

Patch

diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c
index a6d1c5b..c65ccb3 100644
--- a/board/toradex/colibri_vf/colibri_vf.c
+++ b/board/toradex/colibri_vf/colibri_vf.c
@@ -21,6 +21,7 @@ 
 #include <i2c.h>
 #include <g_dnl.h>
 #include <asm/gpio.h>
+#include <usb.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -34,6 +35,7 @@  DECLARE_GLOBAL_DATA_PTR;
 			PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
 
 #define USB_PEN_GPIO           83
+#define USB_CDET_GPIO		102
 
 static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
 	/* levelling */
@@ -92,6 +94,7 @@  static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
 
 static const iomux_v3_cfg_t usb_pads[] = {
 	VF610_PAD_PTD4__GPIO_83,
+	VF610_PAD_PTC29__GPIO_102,
 };
 
 int dram_init(void)
@@ -280,7 +283,6 @@  static void setup_iomux_gpio(void)
 		VF610_PAD_PTB23__GPIO_93,
 		VF610_PAD_PTB26__GPIO_96,
 		VF610_PAD_PTB28__GPIO_98,
-		VF610_PAD_PTC29__GPIO_102,
 		VF610_PAD_PTC30__GPIO_103,
 		VF610_PAD_PTA7__GPIO_134,
 	};
@@ -509,6 +511,10 @@  int board_init(void)
 
 	setbits_le32(&scsc->sosc_ctr, SCSC_SOSC_CTR_SOSC_EN);
 
+#ifdef CONFIG_USB_EHCI_VF
+	gpio_request(USB_CDET_GPIO, "usb-cdet-gpio");
+#endif
+
 	return 0;
 }
 
@@ -554,4 +560,29 @@  int board_ehci_hcd_init(int port)
 	}
 	return 0;
 }
+
+int board_usb_phy_mode(int port)
+{
+	switch (port) {
+	case 0:
+		/*
+		 * Port 0 is used only in client mode on Colibri Vybrid modules
+		 * Check for state of USB client gpio pin and accordingly return
+		 * USB_INIT_DEVICE or USB_INIT_HOST.
+		 */
+		if (gpio_get_value(USB_CDET_GPIO))
+			return USB_INIT_DEVICE;
+		else
+			return USB_INIT_HOST;
+	case 1:
+		/* Port 1 is used only in host mode on Colibri Vybrid modules */
+		return USB_INIT_HOST;
+	default:
+		/*
+		 * There are only two USB controllers on Vybrid. Ideally we will
+		 * not reach here. However return USB_INIT_HOST if we do.
+		 */
+		return USB_INIT_HOST;
+	}
+}
 #endif