[PATCH 1/2] arm: rmobile: Add RZ/G2M SoC
Marek Vasut
marek.vasut at gmail.com
Sat Sep 19 04:47:47 CEST 2020
On 9/18/20 6:03 PM, Biju Das wrote:
> Add CPU and PRR IDs for R8A774A1(a.k.a RZ/G2M) SoC.
[...]
> +static const struct udevice_id *of_soc_match_compatible(void)
> +{
> + const struct udevice_id *of_match = soc_ids;
> + int i;
> +
> + for (i = 0; i < ARRAY_SIZE(soc_ids); i++) {
> + if (!fdt_node_check_compatible(gd->fdt_blob, 0,
> + of_match->compatible))
> + return of_match;
> + of_match++;
> + }
> +
> + return NULL;
> +}
This should rather be a generic function, I think this is something that
already exists in Linux common code too, right ?
> static int rmobile_cpuinfo_idx(void)
> {
> int i = 0;
> u32 cpu_type = rmobile_get_cpu_type();
> + const struct udevice_id *match = of_soc_match_compatible();
>
> + /*
> + * This loop identifies CPU based on PRR register, it differentiates
> + * RZ/G SoC's from R-Car SoC's by matching RZ/G SoC compatible string
> + * from DT against the family_type.
> + */
> for (; i < ARRAY_SIZE(rmobile_cpuinfo); i++)
> - if (rmobile_cpuinfo[i].cpu_type == cpu_type)
> - break;
> + if (rmobile_cpuinfo[i].cpu_type == cpu_type) {
> + if (match &&
> + rmobile_cpuinfo[i].family_type == match->data)
> + break;
> + else if (!match &&
> + rmobile_cpuinfo[i].family_type != SOC_RZG2)
> + break;
> + }
I still don't understand this, so if cpu_type ==
RMOBILE_CPU_TYPE_R8A7796 , then it can be either RZG2 or R8A7796, right?
And there is no PRR bit or any other bit to tell those two chips apart ?
I would like to avoid using the OF match here, because that fails if you
use MULTI_DTB_FIT , does it not ? So can you please check whether there
might be some way to tell the two SoCs apart ?
More information about the U-Boot
mailing list