Re: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-10 Thread Marek Vasut
On 4/10/20 4:58 PM, Patrick DELAUNAY wrote:
> Hi Marek,
> 
>> From: Marek Vasut 
>> Sent: vendredi 10 avril 2020 10:14
>>
>> On 4/9/20 8:06 PM, Patrick DELAUNAY wrote:
>>> Dear Marek,
>>
>> Hi,
>>
 Sent: jeudi 9 avril 2020 12:21
 To: Patrick DELAUNAY ; u-boot@lists.denx.de

 On 4/9/20 12:01 PM, Patrick DELAUNAY wrote:
> Dear Marek,

 Hi,

>> From: Uboot-stm32
>> 
>> On Behalf Of Patrick DELAUNAY
>>
>> Dear Marek,
>>
>>> From: Marek Vasut 
>>> Sent: vendredi 3 avril 2020 23:29
>>>
>>> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
 Add the new flags DCACHE_DEFAULT_OPTION to define the default
 option to use according the compilation flags
 CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
>>> CONFIG_SYS_ARM_CACHE_WRITEALLOC.
>>>
>>> Can't you unify these macros into a single Kconfig "select"
>>> statement instead , and then just select the matching cache
>>> configuration in
 Kconfig ?
>>
>> Yes I will try, with 2 steps
>> - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
>
> First step done...
> I will push it as a separate patchset I think.
>
>> - add new option CONFIG_SYS_ARM_CACHE_OPTION
>
> In fact it is to difficult to use select because each defines
> DCACHE_XXX value can have several values
>
> they are build according CONFIG_ARM64 / LPAE
>
> But, I can't use this define in Kconfig
>
> I try :
> optionARM_OPTION
>   int "option"
>   default DCACHE_WRITETHROUGHT if
 CONFIG_SYS_ARM_CACHE_WRITETHROUGH
>   default DCACHE_ WRITEALLOC if CONFIG_SYS_ARM_CACHE_
 WRITEALLOC
>   default DCACHE_WRITEBACK if
 CONFIG_SYS_ARM_CACHE_WRITEBACK
>
> int and hex is invalid, and string can't be use with "".
>
> And I don't found way to build it automatically when option is activated.
>
> Any idea ?

 Maybe you can have a select in the Kconfig to set some differently
 named option, e.g.

 DCACHE_MODE_WRITE{THROUGH,ALLOC,BACK}

 and then an ifdef in some header file, e.g.

 #ifdef CONFIG_DCACHE_MODE_WRITETHROUGH #define
>> ARM_CACHE_MODE
 DCACHE_WRITETHROUGH ...

 And then use ARM_CACHE_MODE where you need a value and
 CONFIG_DCACHE_MODE{...} where you need a config option check.

 Does this work ?
>>>
>>> I try with string and default (as select is allowed on for bolean or
>>> trisate), And I failed :-<
>>>
>>> I don't found a way to have the de-stringficate the KConfig option to
>>> generated the correct define
>>
>> The result is a boolean , isn't it ? One out of N configs ends up being 
>> defined and
>> the rest are not defined.
>>
>>> config SYS_ARM_CACHE_POLICY
>>> string "Name of the ARM data write cache policy"
>>> default WRITEBACK if SYS_ARM_CACHE_WRITEBACK
>>> default WRITETHROUGH if SYS_ARM_CACHE_WRITEBACK
>>> default WRITEALLOC if SYS_ARM_CACHE_WRITEALLOC
>>>
>>> #define DCACHE_DEFAULT_OPTION   DCACHE_ ##
>> CONFIG_SYS_ARM_CACHE_POLICY
>>>
>>> => error: ‘DCACHE_CONFIG_SYS_ARM_CACHE_POLICY’ undeclared (first
>> use in this function); did you mean ‘CONFIG_SYS_ARM_CACHE_POLICY’?
>>>
>>> #define DCACHE_OPTION(s)DCACHE_ ##
>> CONFIG_SYS_ARM_CACHE_POLICY
>>>
>>> #define DCACHE_DEFAULT_OPTION
>>  DCACHE_OPTION(CONFIG_SYS_ARM_CACHE_POLICY)
>>>
>>> arch/arm/include/asm/system.h:488:26: error: ‘DCACHE_’ undeclared (first use
>> in this function); did you mean ‘DCACHE_OFF’?
>>> arch/arm/lib/cache-cp15.c:99:25: error: expected ‘)’ before string
>>> constant
>>>
>>> The stringification is possible but not the inverse operation (remove the 
>>> quote)...
>>>
>>> In my .config, CONFIG_SYS_ARM_CACHE_POLICY="WRITEBACK"
>>
>> What about this:
>>
>> choice
>> prompt "Cache policy"
>>  default CACHE_WRITEBACK
>>
>> config CACHE_WRITEBACK
>>  bool "Writeback"
>>
>> config ...
>>
>> endchoice
>>
>> and then in some header
>>
>> #ifdef CONFIG_CACHE_WRITEBACK
>> #define CONFIF_SYS_ARM_CACHE_WRITEBACK
>> #else
>> ...
>>
>> Would that work ?
> 
> Yes, it can work it seems complicated
> 
> I push v2 for CONFIG_SYS_ARM_CACHE_* migration in Kconfig
> 
> My proposal becomes:
> 
> +#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH)
> +#define DCACHE_DEFAULT_OPTIONDCACHE_WRITETHROUGH
> +#elif defined(CONFIG_SYS_ARM_CACHE_WRITEALLOC)
> +#define DCACHE_DEFAULT_OPTIONDCACHE_WRITEALLOC
> +#elif defined(CONFIG_SYS_ARM_CACHE_WRITEBACK)
> +#define DCACHE_DEFAULT_OPTIONDCACHE_WRITEBACK
> +#endif
> +
> 
> I think it is is more clear solution.
> 
> 
> I can use macro magic to build DCACHE_DEFAULT_OPTION 
> 
> +#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH)
> +#define ARM_CACHE_POLICY WRITETHROUGH
> +#elif defined(CONFIG_SYS_ARM_CACHE_WRITEALLOC)
> +#define ARM_CACHE_POLICY WRITEALLOC
> +#elif defined(CONFIG_SYS_ARM_CACHE_WRITEBACK)
> +#define ARM_CACHE_POLICY WRITEBACK
> +#endif
>  
> +#define _DC

RE: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-10 Thread Patrick DELAUNAY
Hi Marek,

> From: Marek Vasut 
> Sent: vendredi 10 avril 2020 10:14
> 
> On 4/9/20 8:06 PM, Patrick DELAUNAY wrote:
> > Dear Marek,
> 
> Hi,
> 
> >> Sent: jeudi 9 avril 2020 12:21
> >> To: Patrick DELAUNAY ; u-boot@lists.denx.de
> >>
> >> On 4/9/20 12:01 PM, Patrick DELAUNAY wrote:
> >>> Dear Marek,
> >>
> >> Hi,
> >>
>  From: Uboot-stm32
>  
>  On Behalf Of Patrick DELAUNAY
> 
>  Dear Marek,
> 
> > From: Marek Vasut 
> > Sent: vendredi 3 avril 2020 23:29
> >
> > On 4/3/20 10:28 AM, Patrick Delaunay wrote:
> >> Add the new flags DCACHE_DEFAULT_OPTION to define the default
> >> option to use according the compilation flags
> >> CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
> > CONFIG_SYS_ARM_CACHE_WRITEALLOC.
> >
> > Can't you unify these macros into a single Kconfig "select"
> > statement instead , and then just select the matching cache
> > configuration in
> >> Kconfig ?
> 
>  Yes I will try, with 2 steps
>  - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
> >>>
> >>> First step done...
> >>> I will push it as a separate patchset I think.
> >>>
>  - add new option CONFIG_SYS_ARM_CACHE_OPTION
> >>>
> >>> In fact it is to difficult to use select because each defines
> >>> DCACHE_XXX value can have several values
> >>>
> >>> they are build according CONFIG_ARM64 / LPAE
> >>>
> >>> But, I can't use this define in Kconfig
> >>>
> >>> I try :
> >>> optionARM_OPTION
> >>>   int "option"
> >>>   default DCACHE_WRITETHROUGHT if
> >> CONFIG_SYS_ARM_CACHE_WRITETHROUGH
> >>>   default DCACHE_ WRITEALLOC if CONFIG_SYS_ARM_CACHE_
> >> WRITEALLOC
> >>>   default DCACHE_WRITEBACK if
> >> CONFIG_SYS_ARM_CACHE_WRITEBACK
> >>>
> >>> int and hex is invalid, and string can't be use with "".
> >>>
> >>> And I don't found way to build it automatically when option is activated.
> >>>
> >>> Any idea ?
> >>
> >> Maybe you can have a select in the Kconfig to set some differently
> >> named option, e.g.
> >>
> >> DCACHE_MODE_WRITE{THROUGH,ALLOC,BACK}
> >>
> >> and then an ifdef in some header file, e.g.
> >>
> >> #ifdef CONFIG_DCACHE_MODE_WRITETHROUGH #define
> ARM_CACHE_MODE
> >> DCACHE_WRITETHROUGH ...
> >>
> >> And then use ARM_CACHE_MODE where you need a value and
> >> CONFIG_DCACHE_MODE{...} where you need a config option check.
> >>
> >> Does this work ?
> >
> > I try with string and default (as select is allowed on for bolean or
> > trisate), And I failed :-<
> >
> > I don't found a way to have the de-stringficate the KConfig option to
> > generated the correct define
> 
> The result is a boolean , isn't it ? One out of N configs ends up being 
> defined and
> the rest are not defined.
> 
> > config SYS_ARM_CACHE_POLICY
> > string "Name of the ARM data write cache policy"
> > default WRITEBACK if SYS_ARM_CACHE_WRITEBACK
> > default WRITETHROUGH if SYS_ARM_CACHE_WRITEBACK
> > default WRITEALLOC if SYS_ARM_CACHE_WRITEALLOC
> >
> > #define DCACHE_DEFAULT_OPTION   DCACHE_ ##
> CONFIG_SYS_ARM_CACHE_POLICY
> >
> > => error: ‘DCACHE_CONFIG_SYS_ARM_CACHE_POLICY’ undeclared (first
> use in this function); did you mean ‘CONFIG_SYS_ARM_CACHE_POLICY’?
> >
> > #define DCACHE_OPTION(s)DCACHE_ ##
> CONFIG_SYS_ARM_CACHE_POLICY
> >
> > #define DCACHE_DEFAULT_OPTION
>   DCACHE_OPTION(CONFIG_SYS_ARM_CACHE_POLICY)
> >
> > arch/arm/include/asm/system.h:488:26: error: ‘DCACHE_’ undeclared (first use
> in this function); did you mean ‘DCACHE_OFF’?
> > arch/arm/lib/cache-cp15.c:99:25: error: expected ‘)’ before string
> > constant
> >
> > The stringification is possible but not the inverse operation (remove the 
> > quote)...
> >
> > In my .config, CONFIG_SYS_ARM_CACHE_POLICY="WRITEBACK"
> 
> What about this:
> 
> choice
> prompt "Cache policy"
>  default CACHE_WRITEBACK
> 
> config CACHE_WRITEBACK
>  bool "Writeback"
> 
> config ...
> 
> endchoice
> 
> and then in some header
> 
> #ifdef CONFIG_CACHE_WRITEBACK
> #define CONFIF_SYS_ARM_CACHE_WRITEBACK
> #else
> ...
> 
> Would that work ?

Yes, it can work it seems complicated

I push v2 for CONFIG_SYS_ARM_CACHE_* migration in Kconfig

My proposal becomes:

+#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH)
+#define DCACHE_DEFAULT_OPTION  DCACHE_WRITETHROUGH
+#elif defined(CONFIG_SYS_ARM_CACHE_WRITEALLOC)
+#define DCACHE_DEFAULT_OPTION  DCACHE_WRITEALLOC
+#elif defined(CONFIG_SYS_ARM_CACHE_WRITEBACK)
+#define DCACHE_DEFAULT_OPTION  DCACHE_WRITEBACK
+#endif
+

I think it is is more clear solution.


I can use macro magic to build DCACHE_DEFAULT_OPTION 

+#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH)
+#define ARM_CACHE_POLICY   WRITETHROUGH
+#elif defined(CONFIG_SYS_ARM_CACHE_WRITEALLOC)
+#define ARM_CACHE_POLICY   WRITEALLOC
+#elif defined(CONFIG_SYS_ARM_CACHE_WRITEBACK)
+#define ARM_CACHE_POLICY   WRITEBACK
+#endif
 
+#define _DCACHE_OPTION(policy) DCACHE_ ## policy
+#define DCACHE_OPTION(policy)  _DCACHE_OPTION(policy)
+#define DCACHE_DEFAULT_OPTION  DCACHE_OPTION(ARM_CAC

Re: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-10 Thread Marek Vasut
On 4/9/20 8:06 PM, Patrick DELAUNAY wrote:
> Dear Marek,

Hi,

>> Sent: jeudi 9 avril 2020 12:21
>> To: Patrick DELAUNAY ; u-boot@lists.denx.de
>>
>> On 4/9/20 12:01 PM, Patrick DELAUNAY wrote:
>>> Dear Marek,
>>
>> Hi,
>>
 From: Uboot-stm32 
 On Behalf Of Patrick DELAUNAY

 Dear Marek,

> From: Marek Vasut 
> Sent: vendredi 3 avril 2020 23:29
>
> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
>> Add the new flags DCACHE_DEFAULT_OPTION to define the default
>> option to use according the compilation flags
>> CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
> CONFIG_SYS_ARM_CACHE_WRITEALLOC.
>
> Can't you unify these macros into a single Kconfig "select"
> statement instead , and then just select the matching cache configuration 
> in
>> Kconfig ?

 Yes I will try, with 2 steps
 - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
>>>
>>> First step done...
>>> I will push it as a separate patchset I think.
>>>
 - add new option CONFIG_SYS_ARM_CACHE_OPTION
>>>
>>> In fact it is to difficult to use select because each defines
>>> DCACHE_XXX value can have several values
>>>
>>> they are build according CONFIG_ARM64 / LPAE
>>>
>>> But, I can't use this define in Kconfig
>>>
>>> I try :
>>> option  ARM_OPTION
>>> int "option"
>>> default DCACHE_WRITETHROUGHT if
>> CONFIG_SYS_ARM_CACHE_WRITETHROUGH
>>> default DCACHE_ WRITEALLOC if CONFIG_SYS_ARM_CACHE_
>> WRITEALLOC
>>> default DCACHE_WRITEBACK if
>> CONFIG_SYS_ARM_CACHE_WRITEBACK
>>>
>>> int and hex is invalid, and string can't be use with "".
>>>
>>> And I don't found way to build it automatically when option is activated.
>>>
>>> Any idea ?
>>
>> Maybe you can have a select in the Kconfig to set some differently named 
>> option,
>> e.g.
>>
>> DCACHE_MODE_WRITE{THROUGH,ALLOC,BACK}
>>
>> and then an ifdef in some header file, e.g.
>>
>> #ifdef CONFIG_DCACHE_MODE_WRITETHROUGH
>> #define ARM_CACHE_MODE DCACHE_WRITETHROUGH ...
>>
>> And then use ARM_CACHE_MODE where you need a value and
>> CONFIG_DCACHE_MODE{...} where you need a config option check.
>>
>> Does this work ?
> 
> I try with string and default (as select is allowed on for bolean or trisate),
> And I failed :-<
> 
> I don't found a way to have the de-stringficate the KConfig option
> to generated the correct define

The result is a boolean , isn't it ? One out of N configs ends up being
defined and the rest are not defined.

> config SYS_ARM_CACHE_POLICY
>   string "Name of the ARM data write cache policy"
>   default WRITEBACK if SYS_ARM_CACHE_WRITEBACK
>   default WRITETHROUGH if SYS_ARM_CACHE_WRITEBACK
>   default WRITEALLOC if SYS_ARM_CACHE_WRITEALLOC
> 
> #define DCACHE_DEFAULT_OPTION DCACHE_ ## CONFIG_SYS_ARM_CACHE_POLICY
> 
> => error: ‘DCACHE_CONFIG_SYS_ARM_CACHE_POLICY’ undeclared (first use in this 
> function); did you mean ‘CONFIG_SYS_ARM_CACHE_POLICY’?
> 
> #define DCACHE_OPTION(s)  DCACHE_ ## CONFIG_SYS_ARM_CACHE_POLICY
> 
> #define DCACHE_DEFAULT_OPTION DCACHE_OPTION(CONFIG_SYS_ARM_CACHE_POLICY)
> 
> arch/arm/include/asm/system.h:488:26: error: ‘DCACHE_’ undeclared (first use 
> in this function); did you mean ‘DCACHE_OFF’?
> arch/arm/lib/cache-cp15.c:99:25: error: expected ‘)’ before string constant
> 
> The stringification is possible but not the inverse operation (remove the 
> quote)...
> 
> In my .config, CONFIG_SYS_ARM_CACHE_POLICY="WRITEBACK"

What about this:

choice
prompt "Cache policy"
 default CACHE_WRITEBACK

config CACHE_WRITEBACK
 bool "Writeback"

config ...

endchoice

and then in some header

#ifdef CONFIG_CACHE_WRITEBACK
#define CONFIF_SYS_ARM_CACHE_WRITEBACK
#else
...

Would that work ?

But I feel I might really be missing the question here.


RE: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-09 Thread Patrick DELAUNAY
Dear Marek,

> Sent: jeudi 9 avril 2020 12:21
> To: Patrick DELAUNAY ; u-boot@lists.denx.de
> 
> On 4/9/20 12:01 PM, Patrick DELAUNAY wrote:
> > Dear Marek,
> 
> Hi,
> 
> >> From: Uboot-stm32 
> >> On Behalf Of Patrick DELAUNAY
> >>
> >> Dear Marek,
> >>
> >>> From: Marek Vasut 
> >>> Sent: vendredi 3 avril 2020 23:29
> >>>
> >>> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
>  Add the new flags DCACHE_DEFAULT_OPTION to define the default
>  option to use according the compilation flags
>  CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
> >>> CONFIG_SYS_ARM_CACHE_WRITEALLOC.
> >>>
> >>> Can't you unify these macros into a single Kconfig "select"
> >>> statement instead , and then just select the matching cache configuration 
> >>> in
> Kconfig ?
> >>
> >> Yes I will try, with 2 steps
> >> - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
> >
> > First step done...
> > I will push it as a separate patchset I think.
> >
> >> - add new option CONFIG_SYS_ARM_CACHE_OPTION
> >
> > In fact it is to difficult to use select because each defines
> > DCACHE_XXX value can have several values
> >
> > they are build according CONFIG_ARM64 / LPAE
> >
> > But, I can't use this define in Kconfig
> >
> > I try :
> > option  ARM_OPTION
> > int "option"
> > default DCACHE_WRITETHROUGHT if
> CONFIG_SYS_ARM_CACHE_WRITETHROUGH
> > default DCACHE_ WRITEALLOC if CONFIG_SYS_ARM_CACHE_
> WRITEALLOC
> > default DCACHE_WRITEBACK if
> CONFIG_SYS_ARM_CACHE_WRITEBACK
> >
> > int and hex is invalid, and string can't be use with "".
> >
> > And I don't found way to build it automatically when option is activated.
> >
> > Any idea ?
> 
> Maybe you can have a select in the Kconfig to set some differently named 
> option,
> e.g.
> 
> DCACHE_MODE_WRITE{THROUGH,ALLOC,BACK}
> 
> and then an ifdef in some header file, e.g.
> 
> #ifdef CONFIG_DCACHE_MODE_WRITETHROUGH
> #define ARM_CACHE_MODE DCACHE_WRITETHROUGH ...
> 
> And then use ARM_CACHE_MODE where you need a value and
> CONFIG_DCACHE_MODE{...} where you need a config option check.
> 
> Does this work ?

I try with string and default (as select is allowed on for bolean or trisate),
And I failed :-<

I don't found a way to have the de-stringficate the KConfig option
to generated the correct define

config SYS_ARM_CACHE_POLICY
string "Name of the ARM data write cache policy"
default WRITEBACK if SYS_ARM_CACHE_WRITEBACK
default WRITETHROUGH if SYS_ARM_CACHE_WRITEBACK
default WRITEALLOC if SYS_ARM_CACHE_WRITEALLOC

#define DCACHE_DEFAULT_OPTION   DCACHE_ ## CONFIG_SYS_ARM_CACHE_POLICY

=> error: ‘DCACHE_CONFIG_SYS_ARM_CACHE_POLICY’ undeclared (first use in this 
function); did you mean ‘CONFIG_SYS_ARM_CACHE_POLICY’?

#define DCACHE_OPTION(s)DCACHE_ ## CONFIG_SYS_ARM_CACHE_POLICY

#define DCACHE_DEFAULT_OPTION   DCACHE_OPTION(CONFIG_SYS_ARM_CACHE_POLICY)

arch/arm/include/asm/system.h:488:26: error: ‘DCACHE_’ undeclared (first use in 
this function); did you mean ‘DCACHE_OFF’?
arch/arm/lib/cache-cp15.c:99:25: error: expected ‘)’ before string constant

The stringification is possible but not the inverse operation (remove the 
quote)...

In my .config, CONFIG_SYS_ARM_CACHE_POLICY="WRITEBACK"

Regards

Patrick




Re: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-09 Thread Marek Vasut
On 4/9/20 12:01 PM, Patrick DELAUNAY wrote:
> Dear Marek,

Hi,

>> From: Uboot-stm32  On
>> Behalf Of Patrick DELAUNAY
>>
>> Dear Marek,
>>
>>> From: Marek Vasut 
>>> Sent: vendredi 3 avril 2020 23:29
>>>
>>> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
 Add the new flags DCACHE_DEFAULT_OPTION to define the default option
 to use according the compilation flags
 CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
>>> CONFIG_SYS_ARM_CACHE_WRITEALLOC.
>>>
>>> Can't you unify these macros into a single Kconfig "select" statement
>>> instead , and then just select the matching cache configuration in Kconfig ?
>>
>> Yes I will try, with 2 steps
>> - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
> 
> First step done...
> I will push it as a separate patchset I think.
> 
>> - add new option CONFIG_SYS_ARM_CACHE_OPTION
> 
> In fact it is to difficult to use select because each defines
> DCACHE_XXX value can have several values
> 
> they are build according CONFIG_ARM64 / LPAE
> 
> But, I can't use this define in Kconfig
> 
> I try :
> optionARM_OPTION
>   int "option"
>   default DCACHE_WRITETHROUGHT if CONFIG_SYS_ARM_CACHE_WRITETHROUGH
>   default DCACHE_ WRITEALLOC if CONFIG_SYS_ARM_CACHE_ WRITEALLOC
>   default DCACHE_WRITEBACK if CONFIG_SYS_ARM_CACHE_WRITEBACK
> 
> int and hex is invalid, and string can't be use with "".
> 
> And I don't found way to build it automatically when option is activated.
> 
> Any idea ?

Maybe you can have a select in the Kconfig to set some differently named
option, e.g.

DCACHE_MODE_WRITE{THROUGH,ALLOC,BACK}

and then an ifdef in some header file, e.g.

#ifdef CONFIG_DCACHE_MODE_WRITETHROUGH
#define ARM_CACHE_MODE DCACHE_WRITETHROUGH
...

And then use ARM_CACHE_MODE where you need a value and
CONFIG_DCACHE_MODE{...} where you need a config option check.

Does this work ?


RE: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-09 Thread Patrick DELAUNAY
Dear Marek,

> From: Uboot-stm32  On
> Behalf Of Patrick DELAUNAY
> 
> Dear Marek,
> 
> > From: Marek Vasut 
> > Sent: vendredi 3 avril 2020 23:29
> >
> > On 4/3/20 10:28 AM, Patrick Delaunay wrote:
> > > Add the new flags DCACHE_DEFAULT_OPTION to define the default option
> > > to use according the compilation flags
> > > CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
> > CONFIG_SYS_ARM_CACHE_WRITEALLOC.
> >
> > Can't you unify these macros into a single Kconfig "select" statement
> > instead , and then just select the matching cache configuration in Kconfig ?
> 
> Yes I will try, with 2 steps
> - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig

First step done...
I will push it as a separate patchset I think.

> - add new option CONFIG_SYS_ARM_CACHE_OPTION

In fact it is to difficult to use select because each defines
DCACHE_XXX value can have several values

they are build according CONFIG_ARM64 / LPAE

But, I can't use this define in Kconfig

I try :
option  ARM_OPTION
int "option"
default DCACHE_WRITETHROUGHT if CONFIG_SYS_ARM_CACHE_WRITETHROUGH
default DCACHE_ WRITEALLOC if CONFIG_SYS_ARM_CACHE_ WRITEALLOC
default DCACHE_WRITEBACK if CONFIG_SYS_ARM_CACHE_WRITEBACK

int and hex is invalid, and string can't be use with "".

And I don't found way to build it automatically when option is activated.

Any idea ?

Regards

Patrick


Re: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-08 Thread Marek Vasut
On 4/8/20 9:07 PM, Patrick DELAUNAY wrote:
> Hi
> 
>> From: Marek Vasut 
>> Sent: mercredi 8 avril 2020 20:18
>>
>> On 4/8/20 8:16 PM, Patrick DELAUNAY wrote:
>>> Dear Marek,
>>>
 From: Marek Vasut 
 Sent: vendredi 3 avril 2020 23:29

 On 4/3/20 10:28 AM, Patrick Delaunay wrote:
> Add the new flags DCACHE_DEFAULT_OPTION to define the default option
> to use according the compilation flags
> CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
 CONFIG_SYS_ARM_CACHE_WRITEALLOC.

 Can't you unify these macros into a single Kconfig "select" statement
 instead , and then just select the matching cache configuration in Kconfig 
 ?
>>>
>>> Yes I will try, with 2 steps
>>> - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
>>> - add new option CONFIG_SYS_ARM_CACHE_OPTION
>>>
 Or better yet, can't you extract this info from DT ?
>>>
>>> I don't think it is called before device tree parsing
>>>
>>
>> The FDT access should be set up as one of the first things during U-Boot's
>> boot_init_f , so it should be possible.
> 
> But I try to activate de dcache to speed-up the device tree parsing 
> So the MMU function is now called really early,  in arch init.
> 
> Or I miss something.

Ah, oops, please forget what I said.


RE: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-08 Thread Patrick DELAUNAY
Hi

> From: Marek Vasut 
> Sent: mercredi 8 avril 2020 20:18
> 
> On 4/8/20 8:16 PM, Patrick DELAUNAY wrote:
> > Dear Marek,
> >
> >> From: Marek Vasut 
> >> Sent: vendredi 3 avril 2020 23:29
> >>
> >> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
> >>> Add the new flags DCACHE_DEFAULT_OPTION to define the default option
> >>> to use according the compilation flags
> >>> CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
> >> CONFIG_SYS_ARM_CACHE_WRITEALLOC.
> >>
> >> Can't you unify these macros into a single Kconfig "select" statement
> >> instead , and then just select the matching cache configuration in Kconfig 
> >> ?
> >
> > Yes I will try, with 2 steps
> > - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
> > - add new option CONFIG_SYS_ARM_CACHE_OPTION
> >
> >> Or better yet, can't you extract this info from DT ?
> >
> > I don't think it is called before device tree parsing
> >
> 
> The FDT access should be set up as one of the first things during U-Boot's
> boot_init_f , so it should be possible.

But I try to activate de dcache to speed-up the device tree parsing 
So the MMU function is now called really early,  in arch init.

Or I miss something.

Patrick


Re: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-08 Thread Marek Vasut
On 4/8/20 8:16 PM, Patrick DELAUNAY wrote:
> Dear Marek,
> 
>> From: Marek Vasut 
>> Sent: vendredi 3 avril 2020 23:29
>>
>> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
>>> Add the new flags DCACHE_DEFAULT_OPTION to define the default option
>>> to use according the compilation flags
>>> CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
>> CONFIG_SYS_ARM_CACHE_WRITEALLOC.
>>
>> Can't you unify these macros into a single Kconfig "select" statement 
>> instead ,
>> and then just select the matching cache configuration in Kconfig ?
> 
> Yes I will try, with 2 steps
> - migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
> - add new option CONFIG_SYS_ARM_CACHE_OPTION
> 
>> Or better yet, can't you extract this info from DT ?
> 
> I don't think it is called before device tree parsing
> 

The FDT access should be set up as one of the first things during
U-Boot's boot_init_f , so it should be possible.


RE: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-08 Thread Patrick DELAUNAY
Dear Marek,

> From: Marek Vasut 
> Sent: vendredi 3 avril 2020 23:29
> 
> On 4/3/20 10:28 AM, Patrick Delaunay wrote:
> > Add the new flags DCACHE_DEFAULT_OPTION to define the default option
> > to use according the compilation flags
> > CONFIG_SYS_ARM_CACHE_WRITETHROUGH or
> CONFIG_SYS_ARM_CACHE_WRITEALLOC.
> 
> Can't you unify these macros into a single Kconfig "select" statement instead 
> ,
> and then just select the matching cache configuration in Kconfig ?

Yes I will try, with 2 steps
- migrate existing CONFIG_SYS_ARM_CACHE_ in Kconfig
- add new option CONFIG_SYS_ARM_CACHE_OPTION

> Or better yet, can't you extract this info from DT ?

I don't think it is called before device tree parsing

Patrick


Re: [PATCH 2/3] arm: caches: add DCACHE_DEFAULT_OPTION

2020-04-03 Thread Marek Vasut
On 4/3/20 10:28 AM, Patrick Delaunay wrote:
> Add the new flags DCACHE_DEFAULT_OPTION to define the default
> option to use according the compilation flags
> CONFIG_SYS_ARM_CACHE_WRITETHROUGH or CONFIG_SYS_ARM_CACHE_WRITEALLOC.

Can't you unify these macros into a single Kconfig "select" statement
instead , and then just select the matching cache configuration in Kconfig ?

Or better yet, can't you extract this info from DT ?