From de70e8879bb253f4d2a9ba9149cd41cb38b94ed8 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Wed, 6 Apr 2022 02:21:32 +0200 Subject: env: Implement lower priority arch_env_get_location() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently there is only one way to override desired environment location, by implementing env_get_location(). This is increasingly being conflated both on board level and architecture level, which leads to a problem on boards where this function is already implemented on architecture level, since those boards have no way to override this environment location on board level anymore. Implement arch_env_get_location() function which is architecture specific and should only ever be implemented in architecture code. This function has lower priority than env_get_location(), which should only ever be implemented in board code, and which overrides the arch_env_get_location() architecture environment selection. This way, architecture can define its default environment chooser, while board can now override it as needed at all times. There is no functional change, since env_get_location() simply returns arch_env_get_location(), and arch_env_get_location() implements the current env_get_location() default content. Signed-off-by: Marek Vasut Cc: Adam Ford Cc: Fabio Estevam Cc: Marek BehĂșn Cc: Peng Fan Cc: Simon Glass Cc: Stefano Babic Cc: Tim Harvey Cc: Tom Rini Cc: Tommaso Merciai Cc: Vladimir Oltean --- include/env_internal.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'include') diff --git a/include/env_internal.h b/include/env_internal.h index b704c033631..f30fd6159d8 100644 --- a/include/env_internal.h +++ b/include/env_internal.h @@ -234,10 +234,26 @@ const char *env_ext4_get_intf(void); */ const char *env_ext4_get_dev_part(void); +/** + * arch_env_get_location()- Provide the best location for the U-Boot environment + * + * It is a weak function allowing board to overidde the environment location + * on architecture level. This has lower priority than env_get_location(), + * which can be defined on board level. + * + * @op: operations performed on the environment + * @prio: priority between the multiple environments, 0 being the + * highest priority + * Return: an enum env_location value on success, or -ve error code. + */ +enum env_location arch_env_get_location(enum env_operation op, int prio); + /** * env_get_location()- Provide the best location for the U-Boot environment * * It is a weak function allowing board to overidde the environment location + * on board level. This has higher priority than arch_env_get_location(), + * which can be defined on architecture level. * * @op: operations performed on the environment * @prio: priority between the multiple environments, 0 being the -- cgit v1.2.3