diff mbox

[U-Boot,RFC] FIT: use default configuration, if given configuration is not found

Message ID 1430726006-13474-2-git-send-email-yegorslists@googlemail.com
State Rejected
Delegated to: Tom Rini
Headers show

Commit Message

Yegor Yefremov May 4, 2015, 7:53 a.m. UTC
From: Yegor Yefremov <yegorslists@googlemail.com>

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
 common/image-fit.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

Comments

Joe Hershberger May 4, 2015, 6:16 p.m. UTC | #1
Hi Yegor,

On Mon, May 4, 2015 at 2:53 AM,  <yegorslists@googlemail.com> wrote:
> From: Yegor Yefremov <yegorslists@googlemail.com>
>
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> ---
>  common/image-fit.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/common/image-fit.c b/common/image-fit.c
> index c61be65..b892d06 100644
> --- a/common/image-fit.c
> +++ b/common/image-fit.c
> @@ -1547,6 +1547,10 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
>                 } else {
>                         cfg_noffset = fit_conf_get_node(fit,
>                                                         fit_uname_config);
> +
> +                       if (cfg_noffset < 0) {
> +                               cfg_noffset = fit_conf_get_node(fit, NULL);
> +                       }

It seems if you ask for a specific configuration that is not
available, you should get an error.

You can accomplish similar behavior you are implementing here by using
the shell to try the default if the specified one returns an error.

>                 }
>                 if (cfg_noffset < 0) {
>                         puts("Could not find configuration node\n");

Cheers,
-Joe
Yegor Yefremov May 12, 2015, 6:43 a.m. UTC | #2
Hi Joe,

On Mon, May 4, 2015 at 8:16 PM, Joe Hershberger
<joe.hershberger@gmail.com> wrote:
> Hi Yegor,
>
> On Mon, May 4, 2015 at 2:53 AM,  <yegorslists@googlemail.com> wrote:
>> From: Yegor Yefremov <yegorslists@googlemail.com>
>>
>> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>> ---
>>  common/image-fit.c |    4 ++++
>>  1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/common/image-fit.c b/common/image-fit.c
>> index c61be65..b892d06 100644
>> --- a/common/image-fit.c
>> +++ b/common/image-fit.c
>> @@ -1547,6 +1547,10 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
>>                 } else {
>>                         cfg_noffset = fit_conf_get_node(fit,
>>                                                         fit_uname_config);
>> +
>> +                       if (cfg_noffset < 0) {
>> +                               cfg_noffset = fit_conf_get_node(fit, NULL);
>> +                       }
>
> It seems if you ask for a specific configuration that is not
> available, you should get an error.
>
> You can accomplish similar behavior you are implementing here by using
> the shell to try the default if the specified one returns an error.

Thanks. It is working:

bootm ${loadaddr}#conf${board_name}; if test $? -ne 0; then echo
"Using default FIT configuration"; bootm ${loadaddr}; fi;

Now I have another question, how can I split long line in uEnv.txt? Is
it possible at all?

Yegor
Joe Hershberger May 12, 2015, 8:18 p.m. UTC | #3
Hi Yegor,

On Tue, May 12, 2015 at 1:43 AM, Yegor Yefremov
<yegorslists@googlemail.com> wrote:
> Hi Joe,
>
> On Mon, May 4, 2015 at 8:16 PM, Joe Hershberger
> <joe.hershberger@gmail.com> wrote:
>> Hi Yegor,
>>
>> On Mon, May 4, 2015 at 2:53 AM,  <yegorslists@googlemail.com> wrote:
>>> From: Yegor Yefremov <yegorslists@googlemail.com>
>>>
>>> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>>> ---
>>>  common/image-fit.c |    4 ++++
>>>  1 files changed, 4 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/common/image-fit.c b/common/image-fit.c
>>> index c61be65..b892d06 100644
>>> --- a/common/image-fit.c
>>> +++ b/common/image-fit.c
>>> @@ -1547,6 +1547,10 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
>>>                 } else {
>>>                         cfg_noffset = fit_conf_get_node(fit,
>>>                                                         fit_uname_config);
>>> +
>>> +                       if (cfg_noffset < 0) {
>>> +                               cfg_noffset = fit_conf_get_node(fit, NULL);
>>> +                       }
>>
>> It seems if you ask for a specific configuration that is not
>> available, you should get an error.
>>
>> You can accomplish similar behavior you are implementing here by using
>> the shell to try the default if the specified one returns an error.
>
> Thanks. It is working:
>
> bootm ${loadaddr}#conf${board_name}; if test $? -ne 0; then echo
> "Using default FIT configuration"; bootm ${loadaddr}; fi;

Great!

> Now I have another question, how can I split long line in uEnv.txt? Is
> it possible at all?

I assume you are loading it and eventually calling env import on the memory?

Have you tried passing the -t switch to the env import command?

Or are you talking about a single variable value that is a long line?

-Joe
Yegor Yefremov May 12, 2015, 8:41 p.m. UTC | #4
Hi Joe,

On Tue, May 12, 2015 at 10:18 PM, Joe Hershberger
<joe.hershberger@gmail.com> wrote:
> Hi Yegor,
>
> On Tue, May 12, 2015 at 1:43 AM, Yegor Yefremov
> <yegorslists@googlemail.com> wrote:
>> Hi Joe,
>>
>> On Mon, May 4, 2015 at 8:16 PM, Joe Hershberger
>> <joe.hershberger@gmail.com> wrote:
>>> Hi Yegor,
>>>
>>> On Mon, May 4, 2015 at 2:53 AM,  <yegorslists@googlemail.com> wrote:
>>>> From: Yegor Yefremov <yegorslists@googlemail.com>
>>>>
>>>> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>>>> ---
>>>>  common/image-fit.c |    4 ++++
>>>>  1 files changed, 4 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/common/image-fit.c b/common/image-fit.c
>>>> index c61be65..b892d06 100644
>>>> --- a/common/image-fit.c
>>>> +++ b/common/image-fit.c
>>>> @@ -1547,6 +1547,10 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
>>>>                 } else {
>>>>                         cfg_noffset = fit_conf_get_node(fit,
>>>>                                                         fit_uname_config);
>>>> +
>>>> +                       if (cfg_noffset < 0) {
>>>> +                               cfg_noffset = fit_conf_get_node(fit, NULL);
>>>> +                       }
>>>
>>> It seems if you ask for a specific configuration that is not
>>> available, you should get an error.
>>>
>>> You can accomplish similar behavior you are implementing here by using
>>> the shell to try the default if the specified one returns an error.
>>
>> Thanks. It is working:
>>
>> bootm ${loadaddr}#conf${board_name}; if test $? -ne 0; then echo
>> "Using default FIT configuration"; bootm ${loadaddr}; fi;
>
> Great!
>
>> Now I have another question, how can I split long line in uEnv.txt? Is
>> it possible at all?
>
> I assume you are loading it and eventually calling env import on the memory?
>
> Have you tried passing the -t switch to the env import command?
>
> Or are you talking about a single variable value that is a long line?

Yes, I'm talking about a single variable with very long value.

Yegor
Joe Hershberger May 12, 2015, 8:46 p.m. UTC | #5
Hi Yegor,

On Tue, May 12, 2015 at 3:41 PM, Yegor Yefremov
<yegorslists@googlemail.com> wrote:
> Hi Joe,
>
> On Tue, May 12, 2015 at 10:18 PM, Joe Hershberger
> <joe.hershberger@gmail.com> wrote:
>> Hi Yegor,
>>
>> On Tue, May 12, 2015 at 1:43 AM, Yegor Yefremov
>> <yegorslists@googlemail.com> wrote:
>>> Hi Joe,
>>>
>>> On Mon, May 4, 2015 at 8:16 PM, Joe Hershberger
>>> <joe.hershberger@gmail.com> wrote:
>>>> Hi Yegor,
>>>>
>>>> On Mon, May 4, 2015 at 2:53 AM,  <yegorslists@googlemail.com> wrote:
>>>>> From: Yegor Yefremov <yegorslists@googlemail.com>
>>>>>
>>>>> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>>>>> ---
>>>>>  common/image-fit.c |    4 ++++
>>>>>  1 files changed, 4 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/common/image-fit.c b/common/image-fit.c
>>>>> index c61be65..b892d06 100644
>>>>> --- a/common/image-fit.c
>>>>> +++ b/common/image-fit.c
>>>>> @@ -1547,6 +1547,10 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
>>>>>                 } else {
>>>>>                         cfg_noffset = fit_conf_get_node(fit,
>>>>>                                                         fit_uname_config);
>>>>> +
>>>>> +                       if (cfg_noffset < 0) {
>>>>> +                               cfg_noffset = fit_conf_get_node(fit, NULL);
>>>>> +                       }
>>>>
>>>> It seems if you ask for a specific configuration that is not
>>>> available, you should get an error.
>>>>
>>>> You can accomplish similar behavior you are implementing here by using
>>>> the shell to try the default if the specified one returns an error.
>>>
>>> Thanks. It is working:
>>>
>>> bootm ${loadaddr}#conf${board_name}; if test $? -ne 0; then echo
>>> "Using default FIT configuration"; bootm ${loadaddr}; fi;
>>
>> Great!
>>
>>> Now I have another question, how can I split long line in uEnv.txt? Is
>>> it possible at all?
>>
>> I assume you are loading it and eventually calling env import on the memory?
>>
>> Have you tried passing the -t switch to the env import command?
>>
>> Or are you talking about a single variable value that is a long line?
>
> Yes, I'm talking about a single variable with very long value.

I think we would need to patch the env import to handle escaping
newlines to do something like this. Then you could end a line with \
and it would still be part of the value of the previous variable.

I'm not sure of a way as it works now.

-Joe
diff mbox

Patch

diff --git a/common/image-fit.c b/common/image-fit.c
index c61be65..b892d06 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -1547,6 +1547,10 @@  int fit_image_load(bootm_headers_t *images, ulong addr,
 		} else {
 			cfg_noffset = fit_conf_get_node(fit,
 							fit_uname_config);
+
+			if (cfg_noffset < 0) {
+				cfg_noffset = fit_conf_get_node(fit, NULL);
+			}
 		}
 		if (cfg_noffset < 0) {
 			puts("Could not find configuration node\n");