LoongArch: Add built-in dtb support
Subsystems (2)
v4 cover LoongArch: Add built-in dtb support
Hi all:
This patchset introduces LoongArch's built-in dtb support.
As we know, the Loongson-2K family supports DT. Inevitably, some systems do not provide a useful device tree to the kernel at boot time. Chasing around bootloaders for these systems is a headache, so we just keep a device tree table in the kernel, keyed by the dts filename, that contains the relevant DTBs.
Thanks.
-----
V4:
patch(1/7):
- Drop device_type property.
patch(2/7):
- Rename board.yaml to loongson.yaml.
patch(4/7):
- Keep the ranges attribute after compatible;
- Add bootargs = "ttyS0,115200", which is needed for reference board;
patch(5/7):
- Keep the ranges attribute after compatible;
- Add bootargs = "ttyS0,115200", which is needed for reference board;
- Change node name global-utilities to chipid.
patch(6/7):
- Keep the ranges attribute after compatible;
- Add bootargs = "ttyS0,115200", which is needed for reference board.
Link to V3:
https://lore.kernel.org/all/[email protected]/
V3:
patch(1/7):
- Add reference to the common cpu schema.
patch(2/7):
- Add reviewed-by tag.
patch(4/7):
- Drop bootargs;
- Move the cpus node to dtsi, which is part of the SoC.
patch(5/7):
- Drop bootargs;
- Move the cpus node to dtsi, which is part of the SoC;
- Fix gmac0/1-mdio node: compatible is always the first property;
- Drop i2c-gpio node.
patch(6/7):
- Drop bootargs;
- Move the cpus node to dtsi, which is part of the SoC.
- Changes liointc to liointc-1.0, for Loongson-2K2000 has 32 interrupt sources.
Link to V2:
https://lore.kernel.org/all/[email protected]/
V2:
patch(1/7):
- Drop model and clock-frequency properties;
- Add clocks property;
- Rewrite the description.
patch(2/7):
- Add the proper compatibles for boards.
patch(4/7)(5/7)(6/7):
- Format commit message head;
- Drop undocumented compatible, such as pci_bridge compatible;
- Distinguish the attributes, put SoC-related into DTSI and
board-related into DTS;
- Check DTS with 'make dtbs_check W=1'.
patch(7/7)
- New patch;
- Parses Molde name and CPU MHz from the DTS attribute.
Link to V1:
https://lore.kernel.org/loongarch/[email protected]/
Binbin Zhou (7):
dt-bindings: loongarch: Add CPU bindings for LoongArch
dt-bindings: loongarch: Add Loongson SoC boards compatibles
LoongArch: Allow device trees to be built into the kernel
LoongArch: dts: DeviceTree for Loongson-2K0500
LoongArch: dts: DeviceTree for Loongson-2K1000
LoongArch: dts: DeviceTree for Loongson-2K2000
LoongArch: Parsing CPU-related information from DTS
.../devicetree/bindings/loongarch/cpus.yaml | 61 +++ .../bindings/loongarch/loongson.yaml | 34 ++ arch/loongarch/Kconfig | 16 + arch/loongarch/Makefile | 10 +- arch/loongarch/boot/dts/Makefile | 7 +- .../boot/dts/loongson-2k0500-ref.dts | 89 ++++ arch/loongarch/boot/dts/loongson-2k0500.dtsi | 254 +++++++++++ .../boot/dts/loongson-2k1000-ref.dts | 172 ++++++++ arch/loongarch/boot/dts/loongson-2k1000.dtsi | 397 ++++++++++++++++++ .../boot/dts/loongson-2k2000-ref.dts | 73 ++++ arch/loongarch/boot/dts/loongson-2k2000.dtsi | 291 +++++++++++++ arch/loongarch/kernel/env.c | 33 ++ arch/loongarch/kernel/setup.c | 9 +- 13 files changed, 1440 insertions(+), 6 deletions(-) create mode 100644 Documentation/devicetree/bindings/loongarch/cpus.yaml create mode 100644 Documentation/devicetree/bindings/loongarch/loongson.yaml create mode 100644 arch/loongarch/boot/dts/loongson-2k0500-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k0500.dtsi create mode 100644 arch/loongarch/boot/dts/loongson-2k1000-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k1000.dtsi create mode 100644 arch/loongarch/boot/dts/loongson-2k2000-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k2000.dtsi
Signature · 1 line
2.39.3
PATCH v4 1/7 dt-bindings: loongarch: Add CPU bindings for LoongArch
Add the available CPUs in LoongArch binding with DT schema format using json-schema.
--- .../devicetree/bindings/loongarch/cpus.yaml | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 Documentation/devicetree/bindings/loongarch/cpus.yaml
Documentation/devicetree/bindings/loongarch/cpus.yaml new file +61 -0
@@ -0,0 +1,61 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/loongarch/cpus.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: LoongArch CPUs + +maintainers: + - Binbin Zhou <[email protected]> + +description: + This document describes the list of LoongArch CPU cores that support FDT, + it describe the layout of CPUs in a system through the "cpus" node. + +allOf: + - $ref: /schemas/cpu.yaml# + +properties: + compatible: + enum: + - loongson,la264 + - loongson,la364 + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + +required: + - compatible + - reg + - clocks + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/clock/loongson,ls2k-clk.h> + + cpus { + #size-cells = <0>; + #address-cells = <1>; + + cpu@0 { + compatible = "loongson,la264"; + device_type = "cpu"; + reg = <0>; + clocks = <&clk LOONGSON2_NODE_CLK>; + }; + + cpu@1 { + compatible = "loongson,la264"; + device_type = "cpu"; + reg = <1>; + clocks = <&clk LOONGSON2_NODE_CLK>; + }; + }; + +...
Signature · 1 line
2.39.3
Re: [PATCH v4 1/7] dt-bindings: loongarch: Add CPU bindings for LoongArch
Quoted 4 lines · Binbin Zhou
Add the available CPUs in LoongArch binding with DT schema format using json-schema.
Signed-off-by Binbin Zhou <[email protected]>
Thanks,
Conor.
PATCH v4 2/7 dt-bindings: loongarch: Add Loongson SoC boards compatibles
In reply to Binbin ZhouAdd Loongson SoC boards binding with DT schema format using json-schema.
--- .../bindings/loongarch/loongson.yaml | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Documentation/devicetree/bindings/loongarch/loongson.yaml
Documentation/devicetree/bindings/loongarch/loongson.yaml new file +34 -0
@@ -0,0 +1,34 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/loongarch/loongson.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Loongson SoC-based boards + +maintainers: + - Binbin Zhou <[email protected]> + +properties: + $nodename: + const: '/' + compatible: + oneOf: + - description: Loongson-2K0500 processor based boards + items: + - const: loongson,ls2k0500-ref + - const: loongson,ls2k0500 + + - description: Loongson-2K1000 processor based boards + items: + - const: loongson,ls2k1000-ref + - const: loongson,ls2k1000 + + - description: Loongson-2K2000 processor based boards + items: + - const: loongson,ls2k2000-ref + - const: loongson,ls2k2000 + +additionalProperties: true + +...
Signature · 1 line
2.39.3
PATCH v4 3/7 LoongArch: Allow device trees to be built into the kernel
In reply to Binbin ZhouSome systems do not provide a useful device tree to the kernel at boot time. Let's keep a device tree table in the kernel, keyed by the dts filename, containing the relevant DTBs.
--- arch/loongarch/Kconfig | 16 ++++++++++++++++ arch/loongarch/Makefile | 10 ++++++++-- arch/loongarch/boot/dts/Makefile | 3 +-- arch/loongarch/kernel/setup.c | 9 +++++++-- 4 files changed, 32 insertions(+), 6 deletions(-)
arch/loongarch/Kconfig +16 -0
@@ -326,6 +326,22 @@ config 64KB_3LEVEL endchoice +config BUILTIN_DTB + bool "Enable builtin dtb in kernel" + depends on OF + help + Some systems do not provide a useful device tree to the kernel at boot + time. Let's keep a device tree table in the kernel, keyed by the dts + filename, containing the relevant DTBs. + +config BUILTIN_DTB_NAME + string "Source file for LoongArch builtin dtb" + depends on BUILTIN_DTB + help + Base name (without suffix, relative to arch/loongarch/boot/dts/) + for the DTS file that will be used to produce the DTB linked into the + kernel. + config CMDLINE string "Built-in kernel command line" help
arch/loongarch/Makefile +8 -2
@@ -5,7 +5,8 @@ boot := arch/loongarch/boot -KBUILD_DEFCONFIG := loongson3_defconfig +KBUILD_DEFCONFIG := loongson3_defconfig +KBUILD_DTBS := dtbs image-name-y := vmlinux image-name-$(CONFIG_EFI_ZBOOT) := vmlinuz
@@ -140,11 +141,14 @@ PHONY += vdso_install vdso_install: $(Q)$(MAKE) $(build)=arch/loongarch/vdso $@ -all: $(notdir $(KBUILD_IMAGE)) +all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTBS) vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux $(Q)$(MAKE) $(build)=$(boot) $(bootvars-y) $(boot)/$@ +# device-trees +core-y += arch/loongarch/boot/dts/ + install: $(Q)install -D -m 755 $(KBUILD_IMAGE) $(INSTALL_PATH)/$(image-name-y)-$(KERNELRELEASE) $(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE)
@@ -152,5 +156,7 @@ install: define archhelp echo ' install - install kernel into $(INSTALL_PATH)' + echo ' dtbs - Device-tree blobs for enabled boards' + echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)' echo endef
arch/loongarch/boot/dts/Makefile +1 -2
@@ -1,4 +1,3 @@ # SPDX-License-Identifier: GPL-2.0-only -dtstree := $(srctree)/$(src) -dtb-y := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts)) +obj-$(CONFIG_BUILTIN_DTB) += $(addsuffix .dtb.o, $(CONFIG_BUILTIN_DTB_NAME))
arch/loongarch/kernel/setup.c +7 -2
@@ -296,8 +296,13 @@ static void __init fdt_setup(void)if (acpi_os_get_root_pointer ())return ; -/* Look for a device tree configuration table entry */ - fdt_pointer =efi_fdt_pointer (); +/* We prefer to try to use built-in dtb, checking its legality first. */ +if (!fdt_check_header (__dtb_start)) + fdt_pointer = __dtb_start; +else +/* Fallback to efi dtb, when built-in dtb is not available. */ + fdt_pointer =efi_fdt_pointer (); +if (!fdt_pointer ||fdt_check_header (fdt_pointer))return ;
Signature · 1 line
2.39.3
Rob Herring
maintainerRe: [PATCH v4 3/7] LoongArch: Allow device trees to be built into the kernel
Quoted 3 lines · Binbin Zhou
Some systems do not provide a useful device tree to the kernel at boot time. Let's keep a device tree table in the kernel, keyed by the dts filename, containing the relevant DTBs.
Support for this in other arches was added to support legacy bootloaders with no DT support. You should not need this for a new architecture. Fix the bootloader to provide a useful DT.
Rob
Re: [PATCH v4 3/7] LoongArch: Allow device trees to be built into the kernel
Hi Rob:
Quoted 10 lines · Rob Herring
Quoted 3 lines · Binbin Zhou
Some systems do not provide a useful device tree to the kernel at boot time. Let's keep a device tree table in the kernel, keyed by the dts filename, containing the relevant DTBs.
Support for this in other arches was added to support legacy bootloaders with no DT support. You should not need this for a new architecture. Fix the bootloader to provide a useful DT.
Yes, our bootloader already supports DT.
Our original intention of providing kernel built-in DTS is to describe all possible device information of that SoC, so that everyone can use it as a reference during development; we will unlikely to add more .dts files to the kernel besides the reference ones.
And as a reference, our built-in DTS provides the most basic bootable combinations (so it is generic enough) as an alternative in case the DTS in the bootloader is unexpected.
Does this make any sense?
Thanks.
Binbin
Quoted 1 line
Rob
Re: [PATCH v4 3/7] LoongArch: Allow device trees to be built into the kernel
Quoted 20 lines · Binbin Zhou
Hi Rob:
Quoted 10 lines · Rob Herring
Quoted 3 lines · Binbin Zhou
Some systems do not provide a useful device tree to the kernel at boot time. Let's keep a device tree table in the kernel, keyed by the dts filename, containing the relevant DTBs.
Support for this in other arches was added to support legacy bootloaders with no DT support. You should not need this for a new architecture. Fix the bootloader to provide a useful DT.
Yes, our bootloader already supports DT.
Our original intention of providing kernel built-in DTS is to describe all possible device information of that SoC, so that everyone can use it as a reference during development; we will unlikely to add more .dts files to the kernel besides the reference ones.
Quoted 5 lines
And as a reference, our built-in DTS provides the most basic bootable combinations (so it is generic enough) as an alternative in case the DTS in the bootloader is unexpected.
Does this make any sense?
I don't see how this answers the question - as far as I can tell Rob was asking specifically about the building the dtb into the kernel, whereas your response seems to talk about havint the dts files in the kernel tree.
Huacai Chen
maintainerRe: [PATCH v4 3/7] LoongArch: Allow device trees to be built into the kernel
Hi, Conor,
Quoted 26 lines · Conor Dooley
Quoted 24 lines · Binbin Zhou
Hi Rob:
Quoted 10 lines · Rob Herring
Quoted 3 lines · Binbin Zhou
Some systems do not provide a useful device tree to the kernel at boot time. Let's keep a device tree table in the kernel, keyed by the dts filename, containing the relevant DTBs.
Support for this in other arches was added to support legacy bootloaders with no DT support. You should not need this for a new architecture. Fix the bootloader to provide a useful DT.
Yes, our bootloader already supports DT.
Our original intention of providing kernel built-in DTS is to describe all possible device information of that SoC, so that everyone can use it as a reference during development; we will unlikely to add more .dts files to the kernel besides the reference ones.
And as a reference, our built-in DTS provides the most basic bootable combinations (so it is generic enough) as an alternative in case the DTS in the bootloader is unexpected.
Quoted 6 lines
Quoted 1 line
Does this make any sense?
I don't see how this answers the question - as far as I can tell Rob was asking specifically about the building the dtb into the kernel, whereas your response seems to talk about havint the dts files in the kernel tree.
I'm sorry, but from my point of view, giving users a chance to build the reference dts file into the kernel is not a bad idea. Of course the commit message can be improved.
Huacai
PATCH v4 4/7 LoongArch: dts: DeviceTree for Loongson-2K0500
In reply to Binbin ZhouAdd DeviceTree file for Loongson-2K0500 processor, which integrates one 64-bit dual emission superscalar LA264 processor core.
--- arch/loongarch/boot/dts/Makefile | 2 + .../boot/dts/loongson-2k0500-ref.dts | 89 ++++++ arch/loongarch/boot/dts/loongson-2k0500.dtsi | 254 ++++++++++++++++++ 3 files changed, 345 insertions(+) create mode 100644 arch/loongarch/boot/dts/loongson-2k0500-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k0500.dtsi
arch/loongarch/boot/dts/Makefile +2 -0
@@ -1,3 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-only +dtb-$(CONFIG_MACH_LOONGSON64) = loongson-2k0500-ref.dtb + obj-$(CONFIG_BUILTIN_DTB) += $(addsuffix .dtb.o, $(CONFIG_BUILTIN_DTB_NAME))
arch/loongarch/boot/dts/loongson-2k0500-ref.dts new file +89 -0
89 lines not on this page · raw message
arch/loongarch/boot/dts/loongson-2k0500.dtsi new file +254 -0
254 lines not on this page · raw message
Signature · 1 line
2.39.3
Re: [PATCH v4 4/7] LoongArch: dts: DeviceTree for Loongson-2K0500
Quoted 6 lines · Binbin Zhou
Add DeviceTree file for Loongson-2K0500 processor, which integrates one 64-bit dual emission superscalar LA264 processor core.
Reviewed-by Krzysztof Kozlowski <[email protected]>Signed-off-by Binbin Zhou <[email protected]>
Quoted 7 lines
--- arch/loongarch/boot/dts/Makefile | 2 + .../boot/dts/loongson-2k0500-ref.dts | 89 ++++++ arch/loongarch/boot/dts/loongson-2k0500.dtsi | 254 ++++++++++++++++++ 3 files changed, 345 insertions(+) create mode 100644 arch/loongarch/boot/dts/loongson-2k0500-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k0500.dtsi
This introduces some warnings which don't seem to be addressed by your fixes to loongson,liointc.yaml:
/home/rob/proj/linux-dt/.build-loongarch/arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11400: reg-names: ['main', 'isr0'] is too
short
from schema $id:
http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#/home/rob/proj/linux-dt/.build-loongarch/arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11400: Unevaluated properties are not allowed ('reg-names' was unexpected)
from schema $id:
http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#/home/rob/proj/linux-dt/.build-loongarch/arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11400: reg: [[0, 534844416, 0, 64], [0,
534843456, 0, 8]] is too short
from schema $id:
http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#/home/rob/proj/linux-dt/.build-loongarch/arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11440: reg-names: ['main', 'isr0'] is too
short
from schema $id:
http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#/home/rob/proj/linux-dt/.build-loongarch/arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11440: interrupt-names:0: 'int0' was expected
from schema $id:
http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#/home/rob/proj/linux-dt/.build-loongarch/arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11440: Unevaluated properties are not allowed ('interrupt-names', 'reg-names' were unexpected)
from schema $id:
http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#/home/rob/proj/linux-dt/.build-loongarch/arch/loongarch/boot/dts/loongson-2k0500-ref.dtb:
interrupt-controller@1fe11440: reg: [[0, 534844480, 0, 64], [0,
534843464, 0, 8]] is too short
from schema $id:
http://devicetree.org/schemas/interrupt-controller/loongson,liointc.yaml#
Rob
PATCH v4 5/7 LoongArch: dts: DeviceTree for Loongson-2K1000
In reply to Binbin ZhouAdd DeviceTree file for Loongson-2K1000 processor, which integrates two 64-bit dual emission superscalar LA264 processor cores.
--- arch/loongarch/boot/dts/Makefile | 3 +- .../boot/dts/loongson-2k1000-ref.dts | 172 ++++++++ arch/loongarch/boot/dts/loongson-2k1000.dtsi | 397 ++++++++++++++++++ 3 files changed, 571 insertions(+), 1 deletion(-) create mode 100644 arch/loongarch/boot/dts/loongson-2k1000-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k1000.dtsi
arch/loongarch/boot/dts/Makefile +2 -1
@@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only -dtb-$(CONFIG_MACH_LOONGSON64) = loongson-2k0500-ref.dtb +dtb-$(CONFIG_MACH_LOONGSON64) = loongson-2k0500-ref.dtb \ + loongson-2k1000-ref.dtb obj-$(CONFIG_BUILTIN_DTB) += $(addsuffix .dtb.o, $(CONFIG_BUILTIN_DTB_NAME))
arch/loongarch/boot/dts/loongson-2k1000-ref.dts new file +172 -0
172 lines not on this page · raw message
arch/loongarch/boot/dts/loongson-2k1000.dtsi new file +397 -0
397 lines not on this page · raw message
Signature · 1 line
2.39.3
PATCH v4 6/7 LoongArch: dts: DeviceTree for Loongson-2K2000
In reply to Binbin ZhouAdd DeviceTree file for Loongson-2K2000 processor, which integrates two 64-bit triple emission superscalar LA364 processor cores.
--- arch/loongarch/boot/dts/Makefile | 3 +- .../boot/dts/loongson-2k2000-ref.dts | 73 +++++ arch/loongarch/boot/dts/loongson-2k2000.dtsi | 291 ++++++++++++++++++ 3 files changed, 366 insertions(+), 1 deletion(-) create mode 100644 arch/loongarch/boot/dts/loongson-2k2000-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k2000.dtsi
arch/loongarch/boot/dts/Makefile +2 -1
@@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only dtb-$(CONFIG_MACH_LOONGSON64) = loongson-2k0500-ref.dtb \ - loongson-2k1000-ref.dtb + loongson-2k1000-ref.dtb \ + loongson-2k2000-ref.dtb obj-$(CONFIG_BUILTIN_DTB) += $(addsuffix .dtb.o, $(CONFIG_BUILTIN_DTB_NAME))
arch/loongarch/boot/dts/loongson-2k2000-ref.dts new file +73 -0
73 lines not on this page · raw message
arch/loongarch/boot/dts/loongson-2k2000.dtsi new file +291 -0
291 lines not on this page · raw message
Signature · 1 line
2.39.3
PATCH v4 7/7 LoongArch: Parsing CPU-related information from DTS
In reply to Binbin ZhouGenerally, we can get cpu-related information, such as model name, from /proc/cpuinfo. for DT-based systems, we need to parse the relevant information from DTS.
--- arch/loongarch/kernel/env.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
arch/loongarch/kernel/env.c +33 -0
@@ -5,13 +5,16 @@* Copyright (C) 2020-2022 Loongson Technology Corporation Limited */ #include <linux/acpi.h> +#include <linux/clk.h> #include <linux/efi.h> #include <linux/export.h> #include <linux/memblock.h> +#include <linux/of_clk.h> #include <asm/early_ioremap.h> #include <asm/bootinfo.h> #include <asm/loongson.h> #include <asm/setup.h> +#include <asm/time.h> u64 efi_system_table;struct loongson_system_configuration loongson_sysconf;
@@ -34,9 +37,39 @@ void __init init_environ(void) efi_system_table = fw_arg2; } +static int __init fdt_cpu_clk_init (void ) +{ +struct clk *clk; +struct device_node *np; + + np =of_get_cpu_node (0 ,NULL ); +if (!np) +return -ENODEV ; + + clk =of_clk_get (np,0 ); +if (IS_ERR (clk)) +return -ENODEV ; + + cpu_clock_freq =clk_get_rate (clk); +clk_put (clk); + +return 0 ; +} +late_initcall (fdt_cpu_clk_init); +static int __init init_cpu_fullname (void ) {int cpu; +char *prop; +struct device_node *root; + +/* Parsing cpuname from DTS model property */ + root =of_find_node_by_path ("/" ); +if (root) { +of_property_read_string (root,"model" , (const char **)&prop); +if (prop) + loongson_sysconf.cpuname =strsep (&prop," " ); + }if (loongson_sysconf.cpuname && !strncmp (loongson_sysconf.cpuname,"Loongson" ,8 )) {for (cpu =0 ; cpu <NR_CPUS ; cpu++)
Signature · 1 line
2.39.3
Huacai Chen
maintainerThis series looks good enough to me now, if no one has objections, I will queue it to loongarch-next.
Huacai
Quoted 110 lines · Binbin Zhou
Hi all:
This patchset introduces LoongArch's built-in dtb support.
As we know, the Loongson-2K family supports DT. Inevitably, some systems do not provide a useful device tree to the kernel at boot time. Chasing around bootloaders for these systems is a headache, so we just keep a device tree table in the kernel, keyed by the dts filename, that contains the relevant DTBs.
Thanks.
-----
V4:
patch(1/7):
- Dropdevice_typeproperty.
patch(2/7):
- Renameboard.yamltoloongson.yaml.
patch(4/7):
- Keep the ranges attribute after compatible;
- Add bootargs = "ttyS0,115200", which is needed for reference board;
patch(5/7):
- Keep the ranges attribute after compatible;
- Add bootargs = "ttyS0,115200", which is needed for reference board;
- Change node name global-utilities to chipid.
patch(6/7):
- Keep the ranges attribute after compatible;
- Add bootargs = "ttyS0,115200", which is needed for reference board.Link to V3:
https://lore.kernel.org/all/[email protected]/V3:
patch(1/7):
- Add reference to the common cpu schema.
patch(2/7):
- Add reviewed-by tag.
patch(4/7):
- Drop bootargs;
- Move the cpus node to dtsi, which is part of the SoC.
patch(5/7):
- Drop bootargs;
- Move the cpus node to dtsi, which is part of the SoC;
- Fix gmac0/1-mdio node: compatible is always the first property;
- Drop i2c-gpio node.
patch(6/7):
- Drop bootargs;
- Move the cpus node to dtsi, which is part of the SoC.
- Changes liointc to liointc-1.0, for Loongson-2K2000 has 32 interrupt sources.Link to V2:
https://lore.kernel.org/all/[email protected]/V2:
patch(1/7):
- Drop model and clock-frequency properties;
- Add clocks property;
- Rewrite the description.
patch(2/7):
- Add the proper compatibles for boards.
patch(4/7)(5/7)(6/7):
- Format commit message head;
- Drop undocumented compatible, such aspci_bridgecompatible;
- Distinguish the attributes, put SoC-related into DTSI andboard-related into DTS;- Check DTS with 'make
dtbs_checkW=1'.
patch(7/7)
- New patch;
- Parses Molde name and CPU MHz from the DTS attribute.Link to V1:
https://lore.kernel.org/loongarch/[email protected]/Binbin Zhou (7):
dt-bindings: loongarch: Add CPU bindings for LoongArch
dt-bindings: loongarch: Add Loongson SoC boards compatibles
LoongArch: Allow device trees to be built into the kernel
LoongArch: dts: DeviceTree for Loongson-2K0500
LoongArch: dts: DeviceTree for Loongson-2K1000
LoongArch: dts: DeviceTree for Loongson-2K2000
LoongArch: Parsing CPU-related information from DTS.../devicetree/bindings/loongarch/cpus.yaml | 61 +++ .../bindings/loongarch/loongson.yaml | 34 ++ arch/loongarch/Kconfig | 16 + arch/loongarch/Makefile | 10 +- arch/loongarch/boot/dts/Makefile | 7 +- .../boot/dts/loongson-2k0500-ref.dts | 89 ++++ arch/loongarch/boot/dts/loongson-2k0500.dtsi | 254 +++++++++++ .../boot/dts/loongson-2k1000-ref.dts | 172 ++++++++ arch/loongarch/boot/dts/loongson-2k1000.dtsi | 397 ++++++++++++++++++ .../boot/dts/loongson-2k2000-ref.dts | 73 ++++ arch/loongarch/boot/dts/loongson-2k2000.dtsi | 291 +++++++++++++ arch/loongarch/kernel/env.c | 33 ++ arch/loongarch/kernel/setup.c | 9 +- 13 files changed, 1440 insertions(+), 6 deletions(-) create mode 100644 Documentation/devicetree/bindings/loongarch/cpus.yaml create mode 100644 Documentation/devicetree/bindings/loongarch/loongson.yaml create mode 100644 arch/loongarch/boot/dts/loongson-2k0500-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k0500.dtsi create mode 100644 arch/loongarch/boot/dts/loongson-2k1000-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k1000.dtsi create mode 100644 arch/loongarch/boot/dts/loongson-2k2000-ref.dts create mode 100644 arch/loongarch/boot/dts/loongson-2k2000.dtsi--
2.39.3
Quoted 2 lines · Huacai Chen
This series looks good enough to me now, if no one has objections, I will queue it to loongarch-next.
Have you not read Rob's replies?
Huacai Chen
maintainerHi, Conor,
Quoted 6 lines · Conor Dooley
Quoted 2 lines · Huacai Chen
This series looks good enough to me now, if no one has objections, I will queue it to loongarch-next.
Have you not read Rob's replies?
I'm sorry, I have read but I thought Binbin's reply has answered Rob's question.
Huacai
Quoted 10 lines · Huacai Chen
Hi, Conor,
Quoted 6 lines · Conor Dooley
Quoted 2 lines · Huacai Chen
This series looks good enough to me now, if no one has objections, I will queue it to loongarch-next.
Have you not read Rob's replies?
I'm sorry, I have read but I thought Binbin's reply has answered Rob's question.
As far as I can tell, it didn't - but there were was a reply from Rob about dtbs_check issues too IIRC.
Huacai Chen
maintainerHi, Conor,
Quoted 7 lines · Conor Dooley
Quoted 5 lines · Huacai Chen
Hi, Conor,
Quoted 2 lines · Conor Dooley
On Fri, Aug 25, 2023 at 07:38:31PM +0800, Huacai Chen wrote:
Quoted 8 lines
Quoted 5 lines
Quoted 4 lines
Quoted 2 lines
This series looks good enough to me now, if no one has objections, I will queue it to loongarch-next.
Have you not read Rob's replies?
I'm sorry, I have read but I thought Binbin's reply has answered Rob's question.
As far as I can tell, it didn't - but there were was a reply from Rob about
dtbs_checkissues too IIRC.
OK, I see. The dtbs_check warning is being fixed in [1], but it seems that Binbin hasn't got the key point of Krzysztof.
https://lore.kernel.org/linux-mips/[email protected]/T/#t
Huacai