diff mbox series

[3/6] MIPS: Loongson: Use firmware arguments to get board name

Message ID 1583742206-29163-4-git-send-email-yangtiezhu@loongson.cn
State New
Headers show
Series Add basic support for Loongson 7A1000 bridge chip | expand

Commit Message

Tiezhu Yang March 9, 2020, 8:23 a.m. UTC
In order to distinguish various types of bridge chip such as AMD RS780E
or Loongson 7A1000, we can use firmware arguments to get board name.

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 arch/mips/include/asm/mach-loongson64/boot_param.h | 1 +
 arch/mips/loongson64/env.c                         | 5 +++++
 2 files changed, 6 insertions(+)

Comments

Jiaxun Yang March 9, 2020, 8:36 a.m. UTC | #1
---- 在 星期一, 2020-03-09 16:23:23 Tiezhu Yang <yangtiezhu@loongson.cn> 撰写 ----
 > In order to distinguish various types of bridge chip such as AMD RS780E
 > or Loongson 7A1000, we can use firmware arguments to get board name.
 > 
Hi Tiezhu,

Thanks for your contribution.
Your series is sightly conflict with my "modernize" series. But that's fine,
if your code can meet mainline requirement, I'm going to adjust my works. 

See my comments bellow.

 > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
 > ---
 >  arch/mips/include/asm/mach-loongson64/boot_param.h | 1 +
 >  arch/mips/loongson64/env.c                         | 5 +++++
 >  2 files changed, 6 insertions(+)
 > 
 > diff --git a/arch/mips/include/asm/mach-loongson64/boot_param.h b/arch/mips/include/asm/mach-loongson64/boot_param.h
 > index 8c286be..225a563 100644
 > --- a/arch/mips/include/asm/mach-loongson64/boot_param.h
 > +++ b/arch/mips/include/asm/mach-loongson64/boot_param.h
 > @@ -217,5 +217,6 @@ struct loongson_system_configuration {
 >  
 >  extern struct efi_memory_map_loongson *loongson_memmap;
 >  extern struct loongson_system_configuration loongson_sysconf;
 > +extern struct board_devices *eboard;
 >  
 >  #endif
 > diff --git a/arch/mips/loongson64/env.c b/arch/mips/loongson64/env.c
 > index 0daeb7b..a244a8c 100644
 > --- a/arch/mips/loongson64/env.c
 > +++ b/arch/mips/loongson64/env.c
 > @@ -24,6 +24,9 @@ EXPORT_SYMBOL(cpu_clock_freq);
 >  struct efi_memory_map_loongson *loongson_memmap;
 >  struct loongson_system_configuration loongson_sysconf;
 >  
 > +struct board_devices *eboard;
 > +EXPORT_SYMBOL(eboard);

Can we make it as a part of struct loongson_sysconf and export that struct?
Memory of struct eboard is not managed by kernel,  we shouldn't export such symbol.

Also I noticed that you're checking PCH type repeatly in other subsystems. Can you just
determine the PCH type here?

 > +
 >  u64 loongson_chipcfg[MAX_PACKAGES] = {0xffffffffbfc00180};
 >  u64 loongson_chiptemp[MAX_PACKAGES];
 >  u64 loongson_freqctrl[MAX_PACKAGES];
 > @@ -51,6 +54,8 @@ void __init prom_init_env(void)
 >          ((u64)loongson_p + loongson_p->system_offset);
 >      ecpu = (struct efi_cpuinfo_loongson *)
 >          ((u64)loongson_p + loongson_p->cpu_offset);
 > +    eboard = (struct board_devices *)
 > +        ((u64)loongson_p + loongson_p->boarddev_table_offset);
 >      eirq_source = (struct irq_source_routing_table *)
 >          ((u64)loongson_p + loongson_p->irq_offset);
 >      loongson_memmap = (struct efi_memory_map_loongson *)
 > -- 
 > 2.1.0
 > 
 >
Tiezhu Yang March 10, 2020, 2:38 a.m. UTC | #2
On 03/09/2020 04:36 PM, Jiaxun Yang wrote:
>
>   ---- 在 星期一, 2020-03-09 16:23:23 Tiezhu Yang <yangtiezhu@loongson.cn> 撰写 ----
>   > In order to distinguish various types of bridge chip such as AMD RS780E
>   > or Loongson 7A1000, we can use firmware arguments to get board name.
>   >
> Hi Tiezhu,
>
> Thanks for your contribution.
> Your series is sightly conflict with my "modernize" series. But that's fine,
> if your code can meet mainline requirement, I'm going to adjust my works.

Hi Jiaxun,

Thanks very much for your kindly reply.

>
> See my comments bellow.
>
>   > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
>   > ---
>   >  arch/mips/include/asm/mach-loongson64/boot_param.h | 1 +
>   >  arch/mips/loongson64/env.c                         | 5 +++++
>   >  2 files changed, 6 insertions(+)
>   >
>   > diff --git a/arch/mips/include/asm/mach-loongson64/boot_param.h b/arch/mips/include/asm/mach-loongson64/boot_param.h
>   > index 8c286be..225a563 100644
>   > --- a/arch/mips/include/asm/mach-loongson64/boot_param.h
>   > +++ b/arch/mips/include/asm/mach-loongson64/boot_param.h
>   > @@ -217,5 +217,6 @@ struct loongson_system_configuration {
>   >
>   >  extern struct efi_memory_map_loongson *loongson_memmap;
>   >  extern struct loongson_system_configuration loongson_sysconf;
>   > +extern struct board_devices *eboard;
>   >
>   >  #endif
>   > diff --git a/arch/mips/loongson64/env.c b/arch/mips/loongson64/env.c
>   > index 0daeb7b..a244a8c 100644
>   > --- a/arch/mips/loongson64/env.c
>   > +++ b/arch/mips/loongson64/env.c
>   > @@ -24,6 +24,9 @@ EXPORT_SYMBOL(cpu_clock_freq);
>   >  struct efi_memory_map_loongson *loongson_memmap;
>   >  struct loongson_system_configuration loongson_sysconf;
>   >
>   > +struct board_devices *eboard;
>   > +EXPORT_SYMBOL(eboard);
>
> Can we make it as a part of struct loongson_sysconf and export that struct?
> Memory of struct eboard is not managed by kernel,  we shouldn't export such symbol.

OK, I will do it.

>
> Also I noticed that you're checking PCH type repeatly in other subsystems. Can you just
> determine the PCH type here?

Yes, of course.

Thanks,

Tiezhu Yang

>
>   > +
>   >  u64 loongson_chipcfg[MAX_PACKAGES] = {0xffffffffbfc00180};
>   >  u64 loongson_chiptemp[MAX_PACKAGES];
>   >  u64 loongson_freqctrl[MAX_PACKAGES];
>   > @@ -51,6 +54,8 @@ void __init prom_init_env(void)
>   >          ((u64)loongson_p + loongson_p->system_offset);
>   >      ecpu = (struct efi_cpuinfo_loongson *)
>   >          ((u64)loongson_p + loongson_p->cpu_offset);
>   > +    eboard = (struct board_devices *)
>   > +        ((u64)loongson_p + loongson_p->boarddev_table_offset);
>   >      eirq_source = (struct irq_source_routing_table *)
>   >          ((u64)loongson_p + loongson_p->irq_offset);
>   >      loongson_memmap = (struct efi_memory_map_loongson *)
>   > --
>   > 2.1.0
>   >
>   >
diff mbox series

Patch

diff --git a/arch/mips/include/asm/mach-loongson64/boot_param.h b/arch/mips/include/asm/mach-loongson64/boot_param.h
index 8c286be..225a563 100644
--- a/arch/mips/include/asm/mach-loongson64/boot_param.h
+++ b/arch/mips/include/asm/mach-loongson64/boot_param.h
@@ -217,5 +217,6 @@  struct loongson_system_configuration {
 
 extern struct efi_memory_map_loongson *loongson_memmap;
 extern struct loongson_system_configuration loongson_sysconf;
+extern struct board_devices *eboard;
 
 #endif
diff --git a/arch/mips/loongson64/env.c b/arch/mips/loongson64/env.c
index 0daeb7b..a244a8c 100644
--- a/arch/mips/loongson64/env.c
+++ b/arch/mips/loongson64/env.c
@@ -24,6 +24,9 @@  EXPORT_SYMBOL(cpu_clock_freq);
 struct efi_memory_map_loongson *loongson_memmap;
 struct loongson_system_configuration loongson_sysconf;
 
+struct board_devices *eboard;
+EXPORT_SYMBOL(eboard);
+
 u64 loongson_chipcfg[MAX_PACKAGES] = {0xffffffffbfc00180};
 u64 loongson_chiptemp[MAX_PACKAGES];
 u64 loongson_freqctrl[MAX_PACKAGES];
@@ -51,6 +54,8 @@  void __init prom_init_env(void)
 		((u64)loongson_p + loongson_p->system_offset);
 	ecpu = (struct efi_cpuinfo_loongson *)
 		((u64)loongson_p + loongson_p->cpu_offset);
+	eboard = (struct board_devices *)
+		((u64)loongson_p + loongson_p->boarddev_table_offset);
 	eirq_source = (struct irq_source_routing_table *)
 		((u64)loongson_p + loongson_p->irq_offset);
 	loongson_memmap = (struct efi_memory_map_loongson *)