Hi All,

There is a typo in comments in original commit message. The correct values are 
as follows.

with v8:
--------

        $ size spl/arch/arm/mach-rmobile/cpu_info.o
                text       data     bss     dec     hex filename
                330           0       0     330     14a 
spl/arch/arm/mach-rmobile/cpu_info.o
 
        $ ls -al spl/arch/arm/mach-rmobile/cpu_info.o
                -rw-r--r-- 1 biju biju 9176 Jan 16 18:10 
spl/arch/arm/mach-rmobile/cpu_info.o
 
        $ ls -al spl/arch/arm/mach-rmobile/cpu_info-rcar.o
                -rw-r--r-- 1 biju biju 6244 Jan 16 18:30 
spl/arch/arm/mach-rmobile/cpu_info-rcar.o

        $ size spl/arch/arm/mach-rmobile/cpu_info-rcar.o
                text       data     bss     dec     hex filename
                120           0       0     120      78         
spl/arch/arm/mach-rmobile/cpu_info-rcar.o

with v7:
--------
        $ size spl/arch/arm/mach-rmobile/cpu_info.o
                text       data     bss     dec     hex filename
                462           0       0     462     1ce 
spl/arch/arm/mach-rmobile/cpu_info.o

        $ ls -al spl/arch/arm/mach-rmobile/cpu_info.o
                -rw-r--r-- 1 biju biju 9308 Jan 16 17:28 
spl/arch/arm/mach-rmobile/cpu_info.o

        $ ls -al spl/arch/arm/mach-rmobile/cpu_info-rcar.o
                -rw-r--r-- 1 biju biju 6864 Jan 16 18:28 
spl/arch/arm/mach-rmobile/cpu_info-rcar.o

        $ size spl/arch/arm/mach-rmobile/cpu_info-rcar.o
                text       data     bss     dec     hex filename
                154           0       0     154      9a 
spl/arch/arm/mach-rmobile/cpu_info-rcar.o

Regards,
Biju

> Subject: [PATCH v8 1/4] arm: rmobile: Add RZ/G2[HMNE] SoC support
> 
> RZ/G2 SoC's are identical to R-Car Gen3 SoC's apart from some automotive
> peripherals.
> 
> RZ/G2H (R8A774E1) = R-Car H3-N (R8A77951).
> RZ/G2M (R8A774A1) = R-Car M3-W (R8A77960).
> RZ/G2N (R8A774B1) = R-Car M3-N (R8A77965).
> RZ/G2E (R8A774C0) = R-Car E3 (R8A77990).
> 
> As the devices are the same they also have the same SoC PRR register
> values. SoC driver is used to distinguish the cpu type based on the
> family.
> 
> Signed-off-by: Biju Das <biju.das...@bp.renesas.com>
> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad...@bp.renesas.com>
> ---
> v7->v8
>  * Optimized the cpu detection image size, when Renesas SoC identification
>    driver is disabled for R-Car Gen2 SPL builds
> 
> with v8:
> --------
>   $ size spl/arch/arm/mach-rmobile/cpu_info.o
>    text          data     bss     dec     hex filename
>     462             0       0     462     1ce
>       spl/arch/arm/mach-rmobile/cpu_info.o
> 
>   $ ls -al spl/arch/arm/mach-rmobile/cpu_info.o
>       -rw-r--r-- 1 biju biju 9308 Jan 16 17:28 spl/arch/arm/mach-
> rmobile/cpu_info.o
> 
>   $ ls -al spl/arch/arm/mach-rmobile/cpu_info-rcar.o
>       -rw-r--r-- 1 biju biju 6864 Jan 16 18:28 spl/arch/arm/mach-
> rmobile/cpu_info-rcar.o
> 
>   $ size spl/arch/arm/mach-rmobile/cpu_info-rcar.o
>    text          data     bss     dec     hex filename
>     154             0       0     154      9a
>       spl/arch/arm/mach-rmobile/cpu_info-rcar.o
> 
> with v7:
> --------
>   $ size spl/arch/arm/mach-rmobile/cpu_info.o
>    text          data     bss     dec     hex filename
>     330             0       0     330     14a
>       spl/arch/arm/mach-rmobile/cpu_info.o
> 
>   $ ls -al spl/arch/arm/mach-rmobile/cpu_info.o
>       -rw-r--r-- 1 biju biju 9176 Jan 16 18:10 spl/arch/arm/mach-
> rmobile/cpu_info.o
> 
>   $ ls -al spl/arch/arm/mach-rmobile/cpu_info-rcar.o
>       -rw-r--r-- 1 biju biju 6244 Jan 16 18:30 spl/arch/arm/mach-
> rmobile/cpu_info-rcar.o
> 
>   $ size spl/arch/arm/mach-rmobile/cpu_info-rcar.o
>    text          data     bss     dec     hex filename
>     120             0       0     120      78
>       spl/arch/arm/mach-rmobile/cpu_info-rcar.o
> 
> v6->v7
>  * Seperated driver patch series from board support patches.
> v5->v6
>  * Optimized the unique CPU identification method by using Renesas SoC
> identification driver.
> v4->v5
>  * Add support for unique identification of RZ/G2 CPU types
>    (Ref:
> https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwor
> k.ozlabs.org%2Fproject%2Fuboot%2Fpatch%2F20201008085941.3600-1-
> biju.das.jz%40bp.renesas.com%2F&amp;data=04%7C01%7Cbiju.das.jz%40bp.renesa
> s.com%7Cf359d4ea30294c1866b008d8ba5e79d4%7C53d82571da1947e49cb4625a166a4a2
> a%7C0%7C0%7C637464262268730689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDA
> iLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=s2xAHTFxU
> JuB%2FQwRRMVoQ37EDOgqvZqceenB6v3RFp8%3D&amp;reserved=0)
> v3->v4
>  * Dropped CPU info reporting logic for RZ/G2. Will address this later.
>  * Added PRRID's for RZG2[HMNE]
>    (Ref:
> https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwor
> k.ozlabs.org%2Fproject%2Fuboot%2Fpatch%2F20201001103658.4835-1-
> biju.das.jz%40bp.renesas.com%2F&amp;data=04%7C01%7Cbiju.das.jz%40bp.renesa
> s.com%7Cf359d4ea30294c1866b008d8ba5e79d4%7C53d82571da1947e49cb4625a166a4a2
> a%7C0%7C0%7C637464262268730689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDA
> iLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=v3ecivGm4
> %2B%2FuqKlGv20Cf9iJh%2Br41NeCpm4wFoKFuHY%3D&amp;reserved=0)
> 
> v2->v3
>  * Reworked as per Marek's suggestion
>  * Added rzg2_get_cpu_type function to get cpu_type by matching TFA
> compatible string
>  * Removed SoC family type Enum
>    (Ref:
> https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwor
> k.ozlabs.org%2Fproject%2Fuboot%2Fpatch%2F20200922160317.16296-2-
> biju.das.jz%40bp.renesas.com%2F&amp;data=04%7C01%7Cbiju.das.jz%40bp.renesa
> s.com%7Cf359d4ea30294c1866b008d8ba5e79d4%7C53d82571da1947e49cb4625a166a4a2
> a%7C0%7C0%7C637464262268730689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDA
> iLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=HGQE08DH0
> uRGy1C%2Fi1mZUUWHm%2FzAAR%2Bl995O8H1SGsc%3D&amp;reserved=0)
> 
> v1->v2:
>  * Add comment's related to loop logic
>    (ref:
> https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatchwor
> k.ozlabs.org%2Fproject%2Fuboot%2Fpatch%2F20200918160307.14323-1-
> biju.das.jz%40bp.renesas.com%2F&amp;data=04%7C01%7Cbiju.das.jz%40bp.renesa
> s.com%7Cf359d4ea30294c1866b008d8ba5e79d4%7C53d82571da1947e49cb4625a166a4a2
> a%7C0%7C0%7C637464262268730689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDA
> iLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=VnyOQwVJj
> cf1MCA8ylvf4vfZ%2Bo%2Bv52q2o%2FCfKKuDtZM%3D&amp;reserved=0)
> 
> v1:
>  * New patch
> 
> (ref:https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpat
> chwork.ozlabs.org%2Fproject%2Fuboot%2Fpatch%2F20200915143630.7678-4-
> biju.das.jz%40bp.renesas.com%2F&amp;data=04%7C01%7Cbiju.das.jz%40bp.renesa
> s.com%7Cf359d4ea30294c1866b008d8ba5e79d4%7C53d82571da1947e49cb4625a166a4a2
> a%7C0%7C0%7C637464262268730689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDA
> iLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=nFnGgVT%2
> FSNZEqiwCDjnmvUqQEy7LOjiQDac3JMCAyBc%3D&amp;reserved=0
> ---
>  arch/arm/mach-rmobile/Makefile               |  7 +++
>  arch/arm/mach-rmobile/cpu_info-rcar.c        | 20 ++++++-
>  arch/arm/mach-rmobile/cpu_info.c             | 12 +++-
>  arch/arm/mach-rmobile/include/mach/rmobile.h | 63 +++++++++++++++-----
>  arch/arm/mach-rmobile/soc_family-info.c      | 21 +++++++
>  5 files changed, 102 insertions(+), 21 deletions(-)  create mode 100644
> arch/arm/mach-rmobile/soc_family-info.c
> 
> diff --git a/arch/arm/mach-rmobile/Makefile b/arch/arm/mach-
> rmobile/Makefile index 3206bce722..305dee87e2 100644
> --- a/arch/arm/mach-rmobile/Makefile
> +++ b/arch/arm/mach-rmobile/Makefile
> @@ -13,6 +13,13 @@ obj-$(CONFIG_SH73A0) += lowlevel_init.o cpu_info-
> sh73a0.o pfc-sh73a0.o
>  obj-$(CONFIG_R8A7740) += lowlevel_init.o cpu_info-r8a7740.o pfc-r8a7740.o
>  obj-$(CONFIG_RCAR_GEN2) += lowlevel_init_ca15.o cpu_info-rcar.o
>  obj-$(CONFIG_RCAR_GEN3) += lowlevel_init_gen3.o cpu_info-rcar.o memmap-
> gen3.o
> +obj-$(CONFIG_RCAR_GEN3) += soc_family-info.o
> +
> +ifeq ($(CONFIG_RCAR_GEN2),y)
> +ifneq ($(CONFIG_SPL_BUILD),y)
> +obj-y += soc_family-info.o
> +endif
> +endif
> 
>  OBJCOPYFLAGS_u-boot-spl.srec := -O srec  quiet_cmd_objcopy = OBJCOPY $@
> diff --git a/arch/arm/mach-rmobile/cpu_info-rcar.c b/arch/arm/mach-
> rmobile/cpu_info-rcar.c
> index 5bde24ae0e..7d162235d2 100644
> --- a/arch/arm/mach-rmobile/cpu_info-rcar.c
> +++ b/arch/arm/mach-rmobile/cpu_info-rcar.c
> @@ -1,8 +1,8 @@
>  // SPDX-License-Identifier: GPL-2.0
>  /*
> - * arch/arm/cpu/armv7/rmobile/cpu_info-rcar.c
> + * arch/arm/mach-rmobile/cpu_info-rcar.c
>   *
> - * Copyright (C) 2013,2014 Renesas Electronics Corporation
> + * Copyright (C) 2013-2021 Renesas Electronics Corporation
>   */
>  #include <common.h>
>  #include <asm/io.h>
> @@ -12,6 +12,15 @@
>  #define R8A7796_REV_1_1              0x5210
>  #define R8A7796_REV_1_3              0x5211
> 
> +#if defined(CONFIG_RCAR_GEN2) && defined(CONFIG_SPL_BUILD) static bool
> +__is_rzg_family(void) {
> +     return false;
> +}
> +bool is_rzg_family(void)
> +             __attribute__((weak, alias("__is_rzg_family"))); #endif
> +
>  static u32 rmobile_get_prr(void)
>  {
>  #ifdef CONFIG_RCAR_GEN3
> @@ -23,7 +32,12 @@ static u32 rmobile_get_prr(void)
> 
>  u32 rmobile_get_cpu_type(void)
>  {
> -     return (rmobile_get_prr() & 0x00007F00) >> 8;
> +     u32 soc_id = (rmobile_get_prr() & 0x7F00) >> 8;
> +
> +     if (is_rzg_family())
> +             soc_id |= RZG_CPU_MASK;
> +
> +     return soc_id;
>  }
> 
>  u32 rmobile_get_cpu_rev_integer(void)
> diff --git a/arch/arm/mach-rmobile/cpu_info.c b/arch/arm/mach-
> rmobile/cpu_info.c
> index fdbbd72e28..2555fa4903 100644
> --- a/arch/arm/mach-rmobile/cpu_info.c
> +++ b/arch/arm/mach-rmobile/cpu_info.c
> @@ -3,12 +3,12 @@
>   * (C) Copyright 2012 Nobuhiro Iwamatsu
> <nobuhiro.iwamatsu...@renesas.com>
>   * (C) Copyright 2012 Renesas Solutions Corp.
>   */
> -#include <common.h>
> -#include <cpu_func.h>
>  #include <asm/cache.h>
> -#include <init.h>
>  #include <asm/io.h>
> +#include <common.h>
> +#include <cpu_func.h>
>  #include <env.h>
> +#include <init.h>
>  #include <linux/ctype.h>
> 
>  #ifdef CONFIG_ARCH_CPU_INIT
> @@ -64,6 +64,11 @@ static const struct {
>       { RMOBILE_CPU_TYPE_R8A7792, "R8A7792" },
>       { RMOBILE_CPU_TYPE_R8A7793, "R8A7793" },
>       { RMOBILE_CPU_TYPE_R8A7794, "R8A7794" },
> +#ifdef CONFIG_RCAR_GEN3
> +     { RMOBILE_CPU_TYPE_R8A774A1, "R8A774A1" },
> +     { RMOBILE_CPU_TYPE_R8A774B1, "R8A774B1" },
> +     { RMOBILE_CPU_TYPE_R8A774C0, "R8A774C0" },
> +     { RMOBILE_CPU_TYPE_R8A774E1, "R8A774E1" },
>       { RMOBILE_CPU_TYPE_R8A7795, "R8A7795" },
>       { RMOBILE_CPU_TYPE_R8A7796, "R8A7796" },
>       { RMOBILE_CPU_TYPE_R8A77965, "R8A77965" }, @@ -71,6 +76,7 @@ static
> const struct {
>       { RMOBILE_CPU_TYPE_R8A77980, "R8A77980" },
>       { RMOBILE_CPU_TYPE_R8A77990, "R8A77990" },
>       { RMOBILE_CPU_TYPE_R8A77995, "R8A77995" },
> +#endif
>       { 0x0, "CPU" },
>  };
> 
> diff --git a/arch/arm/mach-rmobile/include/mach/rmobile.h b/arch/arm/mach-
> rmobile/include/mach/rmobile.h
> index a50249dc96..58e51e8df2 100644
> --- a/arch/arm/mach-rmobile/include/mach/rmobile.h
> +++ b/arch/arm/mach-rmobile/include/mach/rmobile.h
> @@ -1,6 +1,8 @@
>  #ifndef __ASM_ARCH_RMOBILE_H
>  #define __ASM_ARCH_RMOBILE_H
> 
> +#include <stdbool.h>
> +
>  #if defined(CONFIG_ARCH_RMOBILE)
>  #if defined(CONFIG_SH73A0)
>  #include <asm/arch/sh73a0.h>
> @@ -24,23 +26,54 @@
>  #endif
>  #endif /* CONFIG_ARCH_RMOBILE */
> 
> -/* PRR CPU IDs */
> -#define RMOBILE_CPU_TYPE_SH73A0              0x37
> -#define RMOBILE_CPU_TYPE_R8A7740     0x40
> -#define RMOBILE_CPU_TYPE_R8A7790     0x45
> -#define RMOBILE_CPU_TYPE_R8A7791     0x47
> -#define RMOBILE_CPU_TYPE_R8A7792     0x4A
> -#define RMOBILE_CPU_TYPE_R8A7793     0x4B
> -#define RMOBILE_CPU_TYPE_R8A7794     0x4C
> -#define RMOBILE_CPU_TYPE_R8A7795     0x4F
> -#define RMOBILE_CPU_TYPE_R8A7796     0x52
> -#define RMOBILE_CPU_TYPE_R8A77965    0x55
> -#define RMOBILE_CPU_TYPE_R8A77970    0x54
> -#define RMOBILE_CPU_TYPE_R8A77980    0x56
> -#define RMOBILE_CPU_TYPE_R8A77990    0x57
> -#define RMOBILE_CPU_TYPE_R8A77995    0x58
> +/* PRR IDs */
> +#define SOC_ID_SH73A0                0x37
> +#define SOC_ID_R8A7740               0x40
> +#define SOC_ID_R8A774A1              0x52
> +#define SOC_ID_R8A774B1              0x55
> +#define SOC_ID_R8A774C0              0x57
> +#define SOC_ID_R8A774E1              0x4F
> +#define SOC_ID_R8A7790               0x45
> +#define SOC_ID_R8A7791               0x47
> +#define SOC_ID_R8A7792               0x4A
> +#define SOC_ID_R8A7793               0x4B
> +#define SOC_ID_R8A7794               0x4C
> +#define SOC_ID_R8A7795               0x4F
> +#define SOC_ID_R8A7796               0x52
> +#define SOC_ID_R8A77965              0x55
> +#define SOC_ID_R8A77970              0x54
> +#define SOC_ID_R8A77980              0x56
> +#define SOC_ID_R8A77990              0x57
> +#define SOC_ID_R8A77995              0x58
> +
> +/* CPU IDs */
> +#define RMOBILE_CPU_TYPE_SH73A0              SOC_ID_SH73A0
> +#define RMOBILE_CPU_TYPE_R8A7740     SOC_ID_R8A7740
> +#define RMOBILE_CPU_TYPE_R8A774A1    (SOC_ID_R8A774A1 | RZG_CPU_MASK)
> +#define RMOBILE_CPU_TYPE_R8A774B1    (SOC_ID_R8A774B1 | RZG_CPU_MASK)
> +#define RMOBILE_CPU_TYPE_R8A774C0    (SOC_ID_R8A774C0 | RZG_CPU_MASK)
> +#define RMOBILE_CPU_TYPE_R8A774E1    (SOC_ID_R8A774E1 | RZG_CPU_MASK)
> +#define RMOBILE_CPU_TYPE_R8A7790     SOC_ID_R8A7790
> +#define RMOBILE_CPU_TYPE_R8A7791     SOC_ID_R8A7791
> +#define RMOBILE_CPU_TYPE_R8A7792     SOC_ID_R8A7792
> +#define RMOBILE_CPU_TYPE_R8A7793     SOC_ID_R8A7793
> +#define RMOBILE_CPU_TYPE_R8A7794     SOC_ID_R8A7794
> +#define RMOBILE_CPU_TYPE_R8A7795     SOC_ID_R8A7795
> +#define RMOBILE_CPU_TYPE_R8A7796     SOC_ID_R8A7796
> +#define RMOBILE_CPU_TYPE_R8A77965    SOC_ID_R8A77965
> +#define RMOBILE_CPU_TYPE_R8A77970    SOC_ID_R8A77970
> +#define RMOBILE_CPU_TYPE_R8A77980    SOC_ID_R8A77980
> +#define RMOBILE_CPU_TYPE_R8A77990    SOC_ID_R8A77990
> +#define RMOBILE_CPU_TYPE_R8A77995    SOC_ID_R8A77995
> +
> +/*
> + * R-Car and RZ/G SoC's share same PRR ID's for the same SoC type. The
> + * RZG_CPU_MASK is used to provide a unique CPU identification for RZ/G
> SoC's.
> + */
> +#define RZG_CPU_MASK 0x1000
> 
>  #ifndef __ASSEMBLY__
> +bool is_rzg_family(void);
>  u32 rmobile_get_cpu_type(void);
>  u32 rmobile_get_cpu_rev_integer(void);
>  u32 rmobile_get_cpu_rev_fraction(void);
> diff --git a/arch/arm/mach-rmobile/soc_family-info.c b/arch/arm/mach-
> rmobile/soc_family-info.c
> new file mode 100644
> index 0000000000..f09bd1a79f
> --- /dev/null
> +++ b/arch/arm/mach-rmobile/soc_family-info.c
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2021 Renesas Electronics Corporation
> + *
> + */
> +#include <common.h>
> +#include <soc.h>
> +
> +bool is_rzg_family(void)
> +{
> +     bool rzg_family_type = false;
> +     struct udevice *soc;
> +     char name[16];
> +
> +     if (!(soc_get(&soc) || soc_get_family(soc, name, 16))) {
> +             if (!strcmp(name, "RZ/G2"))
> +                     rzg_family_type = true;
> +     }
> +
> +     return rzg_family_type;
> +}
> --
> 2.17.1

Reply via email to