Re: [U-Boot] [PATCH 2/5] arch-stm32: Move gpio.h for STM32 SoCs in include/asm/

2018-02-09 Thread Patrice CHOTARD
Hi Vikas

On 02/08/2018 11:19 PM, Vikas Manocha wrote:
> Hi Patrice,
> 
> On 02/08/2018 05:35 AM, Patrice CHOTARD wrote:
>> Hi Vikas
>>
>> On 02/07/2018 08:28 PM, Vikas Manocha wrote:
>>> Hi Patrice,
>>>
>>> On 02/07/2018 07:50 AM, patrice.chot...@st.com wrote:
 From: Patrice Chotard 

 Instead to have 3 identical gpio.h for all STM32 SoCs,
 migrate them in one file in include/asm.
>>>
>>> good move to consolidate these headers.
>>> One comment below.
>>>

 Signed-off-by: Patrice Chotard 
>>
>> [...]
>>
 -static inline unsigned stm32_gpio_to_pin(unsigned gpio)
 -{
 -  return gpio % 16;
 -}
 +#include 
>>>
>>> Hmm.. this header seems like dummy header(in all architectures f4/f7/h7) 
>>> only to include gpio header here.
>>> Also arch/arm/include/asm/ does not seems like good place for soc specific 
>>> header files.
>>
>> Agree, but omap have put several omap_.h files too.
> 
> I see omap files, they might be first ones to use this structure, i am not 
> sure. But in any case, it does not look clean today.
> How about creating asm/arch-stm32 to put common stuff like this gpio header.
> 
> -#include 
> +#include 
> 
> It can be done with no modification required in SYS_SOC, the point you 
> mentioned below.
> It does not remove the arch-stm32f7/f7/h7/ gpio headers but avoids 
> include/asm cluttering with SOC files.

Yes agree, i will send a v2 with this update

Thanks Vikas ;-)

Patrice

> 
> Cheers,
> Vikas
> 
>>
>>>
>>> how about creating one level like arch/arm/include/asm/arch-stm32/ to 
>>> include common gpio.h here. It would fix both of above points.
>>> The same location can be used to move other commonalities in future.
>>
>> It's possible to create an additionnal level
>> arch/arm/include/asm/arch-stm32/  and put specificities to each SoCs into :
>>
>> arch/arm/include/asm/arch-stm32/stm32f4
>> arch/arm/include/asm/arch-stm32/stm32f7
>> arch/arm/include/asm/arch-stm32/stm32h7
>>
>> If we focus on stm32f7, this implies to modify the content of
>> CONFIG_SYS_SOC from "stm32f7" to "stm32/stm32f7" in
>> board/st/stm32f746-disco/Kconfig but:
>>
>> 1) In any case, we can't include directly files located in
>> arch/arm/include/asm/arch-stm32 because SYS_SOC is used to build include
>> path.
>>
>> For example in drivers/gpio/gpio-uclass.c,
>> #include  is in fact #include /gpio.h
>>
>> so equal to #include >
>> 2) Other effect, now in "soc" environment variable, we will obtain
>> "stm32/stm32f7" instead of "stm32f7". This is not a big deal, but we
>> must add some code to extract the soc name from "soc" environment variable.
>>
>> Both solution are not perfect.
>>
>> Thanks
>>
>> Patrice
>>
>>
>>>
>>> Cheers,
>>> Vikas
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 2/5] arch-stm32: Move gpio.h for STM32 SoCs in include/asm/

2018-02-08 Thread Vikas Manocha
Hi Patrice,

On 02/08/2018 05:35 AM, Patrice CHOTARD wrote:
> Hi Vikas
> 
> On 02/07/2018 08:28 PM, Vikas Manocha wrote:
>> Hi Patrice,
>>
>> On 02/07/2018 07:50 AM, patrice.chot...@st.com wrote:
>>> From: Patrice Chotard 
>>>
>>> Instead to have 3 identical gpio.h for all STM32 SoCs,
>>> migrate them in one file in include/asm.
>>
>> good move to consolidate these headers.
>> One comment below.
>>
>>>
>>> Signed-off-by: Patrice Chotard 
> 
> [...]
> 
>>> -static inline unsigned stm32_gpio_to_pin(unsigned gpio)
>>> -{
>>> -   return gpio % 16;
>>> -}
>>> +#include 
>>
>> Hmm.. this header seems like dummy header(in all architectures f4/f7/h7) 
>> only to include gpio header here.
>> Also arch/arm/include/asm/ does not seems like good place for soc specific 
>> header files.
> 
> Agree, but omap have put several omap_.h files too.

I see omap files, they might be first ones to use this structure, i am not 
sure. But in any case, it does not look clean today.
How about creating asm/arch-stm32 to put common stuff like this gpio header.

-#include 
+#include 

It can be done with no modification required in SYS_SOC, the point you 
mentioned below.
It does not remove the arch-stm32f7/f7/h7/ gpio headers but avoids include/asm 
cluttering with SOC files.

Cheers,
Vikas

> 
>>
>> how about creating one level like arch/arm/include/asm/arch-stm32/ to 
>> include common gpio.h here. It would fix both of above points.
>> The same location can be used to move other commonalities in future.
> 
> It's possible to create an additionnal level
> arch/arm/include/asm/arch-stm32/  and put specificities to each SoCs into :
> 
> arch/arm/include/asm/arch-stm32/stm32f4
> arch/arm/include/asm/arch-stm32/stm32f7
> arch/arm/include/asm/arch-stm32/stm32h7
> 
> If we focus on stm32f7, this implies to modify the content of 
> CONFIG_SYS_SOC from "stm32f7" to "stm32/stm32f7" in 
> board/st/stm32f746-disco/Kconfig but:
> 
> 1) In any case, we can't include directly files located in 
> arch/arm/include/asm/arch-stm32 because SYS_SOC is used to build include 
> path.
> 
> For example in drivers/gpio/gpio-uclass.c,
> #include  is in fact #include /gpio.h
> 
> so equal to #include  
> 2) Other effect, now in "soc" environment variable, we will obtain 
> "stm32/stm32f7" instead of "stm32f7". This is not a big deal, but we 
> must add some code to extract the soc name from "soc" environment variable.
> 
> Both solution are not perfect.
> 
> Thanks
> 
> Patrice
> 
> 
>>
>> Cheers,
>> Vikas
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 2/5] arch-stm32: Move gpio.h for STM32 SoCs in include/asm/

2018-02-08 Thread Patrice CHOTARD
Hi Vikas

On 02/07/2018 08:28 PM, Vikas Manocha wrote:
> Hi Patrice,
> 
> On 02/07/2018 07:50 AM, patrice.chot...@st.com wrote:
>> From: Patrice Chotard 
>>
>> Instead to have 3 identical gpio.h for all STM32 SoCs,
>> migrate them in one file in include/asm.
> 
> good move to consolidate these headers.
> One comment below.
> 
>>
>> Signed-off-by: Patrice Chotard 

[...]

>> -static inline unsigned stm32_gpio_to_pin(unsigned gpio)
>> -{
>> -return gpio % 16;
>> -}
>> +#include 
> 
> Hmm.. this header seems like dummy header(in all architectures f4/f7/h7) only 
> to include gpio header here.
> Also arch/arm/include/asm/ does not seems like good place for soc specific 
> header files.

Agree, but omap have put several omap_.h files too.

> 
> how about creating one level like arch/arm/include/asm/arch-stm32/ to include 
> common gpio.h here. It would fix both of above points.
> The same location can be used to move other commonalities in future.

It's possible to create an additionnal level
arch/arm/include/asm/arch-stm32/  and put specificities to each SoCs into :

arch/arm/include/asm/arch-stm32/stm32f4
arch/arm/include/asm/arch-stm32/stm32f7
arch/arm/include/asm/arch-stm32/stm32h7

If we focus on stm32f7, this implies to modify the content of 
CONFIG_SYS_SOC from "stm32f7" to "stm32/stm32f7" in 
board/st/stm32f746-disco/Kconfig but:

1) In any case, we can't include directly files located in 
arch/arm/include/asm/arch-stm32 because SYS_SOC is used to build include 
path.

For example in drivers/gpio/gpio-uclass.c,
#include  is in fact #include /gpio.h

so equal to #include  
> Cheers,
> Vikas
> 
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 2/5] arch-stm32: Move gpio.h for STM32 SoCs in include/asm/

2018-02-07 Thread Vikas Manocha
Hi Patrice,

On 02/07/2018 07:50 AM, patrice.chot...@st.com wrote:
> From: Patrice Chotard 
> 
> Instead to have 3 identical gpio.h for all STM32 SoCs,
> migrate them in one file in include/asm.

good move to consolidate these headers.
One comment below.

> 
> Signed-off-by: Patrice Chotard 
> ---
>  arch/arm/include/asm/arch-stm32f4/gpio.h | 146 
> +--
>  arch/arm/include/asm/arch-stm32f7/gpio.h | 116 +---
>  arch/arm/include/asm/arch-stm32h7/gpio.h | 115 +---
>  arch/arm/include/asm/stm32_gpio.h| 115 
>  4 files changed, 118 insertions(+), 374 deletions(-)
>  create mode 100644 arch/arm/include/asm/stm32_gpio.h
> 
> diff --git a/arch/arm/include/asm/arch-stm32f4/gpio.h 
> b/arch/arm/include/asm/arch-stm32f4/gpio.h
> index 6173fa13..bb4427e6f4ac 100644
> --- a/arch/arm/include/asm/arch-stm32f4/gpio.h
> +++ b/arch/arm/include/asm/arch-stm32f4/gpio.h
> @@ -11,150 +11,6 @@
>  #ifndef _STM32_GPIO_H_
>  #define _STM32_GPIO_H_
>  
> -#if (CONFIG_STM32_USART == 1)
> -#define STM32_GPIO_PORT_X   STM32_GPIO_PORT_A
> -#define STM32_GPIO_PIN_TX   STM32_GPIO_PIN_9
> -#define STM32_GPIO_PIN_RX   STM32_GPIO_PIN_10
> -#define STM32_GPIO_USARTSTM32_GPIO_AF7
> -
> -#elif (CONFIG_STM32_USART == 2)
> -#define STM32_GPIO_PORT_X   STM32_GPIO_PORT_D
> -#define STM32_GPIO_PIN_TX   STM32_GPIO_PIN_5
> -#define STM32_GPIO_PIN_RX   STM32_GPIO_PIN_6
> -#define STM32_GPIO_USARTSTM32_GPIO_AF7
> -
> -#elif (CONFIG_STM32_USART == 3)
> -#define STM32_GPIO_PORT_X   STM32_GPIO_PORT_C
> -#define STM32_GPIO_PIN_TX   STM32_GPIO_PIN_10
> -#define STM32_GPIO_PIN_RX   STM32_GPIO_PIN_11
> -#define STM32_GPIO_USARTSTM32_GPIO_AF7
> -
> -#elif (CONFIG_STM32_USART == 6)
> -#define STM32_GPIO_PORT_X   STM32_GPIO_PORT_G
> -#define STM32_GPIO_PIN_TX   STM32_GPIO_PIN_14
> -#define STM32_GPIO_PIN_RX   STM32_GPIO_PIN_9
> -#define STM32_GPIO_USARTSTM32_GPIO_AF8
> -
> -#else
> -#define STM32_GPIO_PORT_X   STM32_GPIO_PORT_A
> -#define STM32_GPIO_PIN_TX   STM32_GPIO_PIN_9
> -#define STM32_GPIO_PIN_RX   STM32_GPIO_PIN_10
> -#define STM32_GPIO_USARTSTM32_GPIO_AF7
> -
> -#endif
> -
> -enum stm32_gpio_port {
> - STM32_GPIO_PORT_A = 0,
> - STM32_GPIO_PORT_B,
> - STM32_GPIO_PORT_C,
> - STM32_GPIO_PORT_D,
> - STM32_GPIO_PORT_E,
> - STM32_GPIO_PORT_F,
> - STM32_GPIO_PORT_G,
> - STM32_GPIO_PORT_H,
> - STM32_GPIO_PORT_I
> -};
> -
> -enum stm32_gpio_pin {
> - STM32_GPIO_PIN_0 = 0,
> - STM32_GPIO_PIN_1,
> - STM32_GPIO_PIN_2,
> - STM32_GPIO_PIN_3,
> - STM32_GPIO_PIN_4,
> - STM32_GPIO_PIN_5,
> - STM32_GPIO_PIN_6,
> - STM32_GPIO_PIN_7,
> - STM32_GPIO_PIN_8,
> - STM32_GPIO_PIN_9,
> - STM32_GPIO_PIN_10,
> - STM32_GPIO_PIN_11,
> - STM32_GPIO_PIN_12,
> - STM32_GPIO_PIN_13,
> - STM32_GPIO_PIN_14,
> - STM32_GPIO_PIN_15
> -};
> -
> -enum stm32_gpio_mode {
> - STM32_GPIO_MODE_IN = 0,
> - STM32_GPIO_MODE_OUT,
> - STM32_GPIO_MODE_AF,
> - STM32_GPIO_MODE_AN
> -};
> -
> -enum stm32_gpio_otype {
> - STM32_GPIO_OTYPE_PP = 0,
> - STM32_GPIO_OTYPE_OD
> -};
> -
> -enum stm32_gpio_speed {
> - STM32_GPIO_SPEED_2M = 0,
> - STM32_GPIO_SPEED_25M,
> - STM32_GPIO_SPEED_50M,
> - STM32_GPIO_SPEED_100M
> -};
> -
> -enum stm32_gpio_pupd {
> - STM32_GPIO_PUPD_NO = 0,
> - STM32_GPIO_PUPD_UP,
> - STM32_GPIO_PUPD_DOWN
> -};
> -
> -enum stm32_gpio_af {
> - STM32_GPIO_AF0 = 0,
> - STM32_GPIO_AF1,
> - STM32_GPIO_AF2,
> - STM32_GPIO_AF3,
> - STM32_GPIO_AF4,
> - STM32_GPIO_AF5,
> - STM32_GPIO_AF6,
> - STM32_GPIO_AF7,
> - STM32_GPIO_AF8,
> - STM32_GPIO_AF9,
> - STM32_GPIO_AF10,
> - STM32_GPIO_AF11,
> - STM32_GPIO_AF12,
> - STM32_GPIO_AF13,
> - STM32_GPIO_AF14,
> - STM32_GPIO_AF15
> -};
> -
> -struct stm32_gpio_dsc {
> - enum stm32_gpio_portport;
> - enum stm32_gpio_pin pin;
> -};
> -
> -struct stm32_gpio_ctl {
> - enum stm32_gpio_modemode;
> - enum stm32_gpio_otype   otype;
> - enum stm32_gpio_speed   speed;
> - enum stm32_gpio_pupdpupd;
> - enum stm32_gpio_af  af;
> -};
> -
> -struct stm32_gpio_regs {
> - u32 moder;  /* GPIO port mode */
> - u32 otyper; /* GPIO port output type */
> - u32 ospeedr;/* GPIO port output speed */
> - u32 pupdr;  /* GPIO port pull-up/pull-down */
> - u32 idr;/* GPIO port input data */
> - u32 odr;/* GPIO port output data */
> - u32 bsrr;   /* GPIO port bit set/reset */
> - u32 lckr;   /* GPIO port configuration lock */
> - u32 afr[2]; /* GPIO alternate function */
> -};
> -
> -struct stm32_gpio_priv {
> - struct stm32_gpio_regs *regs;
> -};
> -
> -static inline unsigned stm32_gpio_to_port(unsigned gpio)
> -{
> - return gpio / 16;
> -}
> -
> -static inline unsigned stm32_gpio_to_pin(unsigned gpio)
> -{
> - return