diff mbox series

[03/17] MIPS: dts: Add basic DT support for Loongson-1 boards

Message ID 20230729134318.1694467-4-keguang.zhang@gmail.com (mailing list archive)
State New
Headers show
Series MIPS: loongson32: Convert all platform devices to DT | expand

Commit Message

Keguang Zhang July 29, 2023, 1:43 p.m. UTC
Add initial devicetree for Loongson-1 boards, including
LSGZ_1B_DEV and SMARTLOONG_1C board.
These basic DTs contain CPU, clock and core INTC.

Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>
---
 arch/mips/boot/dts/Makefile                   |  1 +
 arch/mips/boot/dts/loongson/Makefile          |  3 +
 arch/mips/boot/dts/loongson/loongson1.dtsi    | 22 ++++++
 arch/mips/boot/dts/loongson/loongson1b.dtsi   | 75 +++++++++++++++++++
 arch/mips/boot/dts/loongson/loongson1c.dtsi   | 29 +++++++
 arch/mips/boot/dts/loongson/lsgz_1b_dev.dts   | 25 +++++++
 arch/mips/boot/dts/loongson/smartloong_1c.dts | 25 +++++++
 7 files changed, 180 insertions(+)
 create mode 100644 arch/mips/boot/dts/loongson/loongson1.dtsi
 create mode 100644 arch/mips/boot/dts/loongson/loongson1b.dtsi
 create mode 100644 arch/mips/boot/dts/loongson/loongson1c.dtsi
 create mode 100644 arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
 create mode 100644 arch/mips/boot/dts/loongson/smartloong_1c.dts

Comments

Du Huanpeng July 30, 2023, 5:11 p.m. UTC | #1
Keguang Zhang <keguang.zhang@gmail.com> 于2023年7月29日周六 21:45写道:
>
> Add initial devicetree for Loongson-1 boards, including
> LSGZ_1B_DEV and SMARTLOONG_1C board.
> These basic DTs contain CPU, clock and core INTC.
>
> Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>
> ---
>  arch/mips/boot/dts/Makefile                   |  1 +
>  arch/mips/boot/dts/loongson/Makefile          |  3 +
>  arch/mips/boot/dts/loongson/loongson1.dtsi    | 22 ++++++
>  arch/mips/boot/dts/loongson/loongson1b.dtsi   | 75 +++++++++++++++++++
>  arch/mips/boot/dts/loongson/loongson1c.dtsi   | 29 +++++++
>  arch/mips/boot/dts/loongson/lsgz_1b_dev.dts   | 25 +++++++
>  arch/mips/boot/dts/loongson/smartloong_1c.dts | 25 +++++++
>  7 files changed, 180 insertions(+)
>  create mode 100644 arch/mips/boot/dts/loongson/loongson1.dtsi
>  create mode 100644 arch/mips/boot/dts/loongson/loongson1b.dtsi
>  create mode 100644 arch/mips/boot/dts/loongson/loongson1c.dtsi
>  create mode 100644 arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
>  create mode 100644 arch/mips/boot/dts/loongson/smartloong_1c.dts
>
> diff --git a/arch/mips/boot/dts/Makefile b/arch/mips/boot/dts/Makefile
> index 928f38a79dff..2e040b1ba97b 100644
> --- a/arch/mips/boot/dts/Makefile
> +++ b/arch/mips/boot/dts/Makefile
> @@ -6,6 +6,7 @@ subdir-$(CONFIG_FIT_IMAGE_FDT_BOSTON)   += img
>  subdir-$(CONFIG_MACH_INGENIC)          += ingenic
>  subdir-$(CONFIG_LANTIQ)                        += lantiq
>  subdir-$(CONFIG_MACH_LOONGSON64)       += loongson
> +subdir-$(CONFIG_MACH_LOONGSON32)       += loongson
>  subdir-$(CONFIG_SOC_VCOREIII)          += mscc
>  subdir-$(CONFIG_MIPS_MALTA)            += mti
>  subdir-$(CONFIG_LEGACY_BOARD_SEAD3)    += mti
> diff --git a/arch/mips/boot/dts/loongson/Makefile b/arch/mips/boot/dts/loongson/Makefile
> index 5c6433e441ee..9d95f1351d5f 100644
> --- a/arch/mips/boot/dts/loongson/Makefile
> +++ b/arch/mips/boot/dts/loongson/Makefile
> @@ -6,4 +6,7 @@ dtb-$(CONFIG_MACH_LOONGSON64)   += loongson64c_8core_rs780e.dtb
>  dtb-$(CONFIG_MACH_LOONGSON64)  += loongson64g_4core_ls7a.dtb
>  dtb-$(CONFIG_MACH_LOONGSON64)  += loongson64v_4core_virtio.dtb
>
> +dtb-$(CONFIG_LOONGSON1B_LSGZ_DEV)      += lsgz_1b_dev.dtb
> +dtb-$(CONFIG_LOONGSON1C_SMARTLOONG)    += smartloong_1c.dtb
> +
>  obj-$(CONFIG_BUILTIN_DTB)      += $(addsuffix .o, $(dtb-y))
> diff --git a/arch/mips/boot/dts/loongson/loongson1.dtsi b/arch/mips/boot/dts/loongson/loongson1.dtsi
> new file mode 100644
> index 000000000000..a2b5c828bbbd
> --- /dev/null
> +++ b/arch/mips/boot/dts/loongson/loongson1.dtsi
> @@ -0,0 +1,22 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/clock/loongson,ls1x-clk.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +
> +/ {
> +       #address-cells = <1>;
> +       #size-cells = <1>;
> +
> +       cpu_intc: interrupt-controller {
> +               compatible = "mti,cpu-interrupt-controller";
> +               #address-cells = <0>;
> +
> +               interrupt-controller;
> +               #interrupt-cells = <1>;
> +       };
> +};
> diff --git a/arch/mips/boot/dts/loongson/loongson1b.dtsi b/arch/mips/boot/dts/loongson/loongson1b.dtsi
> new file mode 100644
> index 000000000000..784ae9b6572d
> --- /dev/null
> +++ b/arch/mips/boot/dts/loongson/loongson1b.dtsi
> @@ -0,0 +1,75 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> + */
> +
> +/dts-v1/;
> +#include "loongson1.dtsi"
> +
> +/ {
> +       cpus {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +
> +               cpu@0 {
> +                       device_type = "cpu";
> +                       reg = <0>;
> +                       #clock-cells = <1>;
> +                       clocks = <&clkc LS1X_CLKID_CPU>;
> +                       operating-points-v2 = <&cpu_opp_table>;
> +               };
> +       };
> +
> +       cpu_opp_table: opp-table {
> +               compatible = "operating-points-v2";
> +               opp-shared;
> +
> +               opp-44000000 {
> +                       opp-hz = /bits/ 64 <44000000>;
> +               };
> +               opp-47142000 {
> +                       opp-hz = /bits/ 64 <47142000>;
> +               };
> +               opp-50769000 {
> +                       opp-hz = /bits/ 64 <50769000>;
> +               };
> +               opp-55000000 {
> +                       opp-hz = /bits/ 64 <55000000>;
> +               };
> +               opp-60000000 {
> +                       opp-hz = /bits/ 64 <60000000>;
> +               };
> +               opp-66000000 {
> +                       opp-hz = /bits/ 64 <66000000>;
> +               };
> +               opp-73333000 {
> +                       opp-hz = /bits/ 64 <73333000>;
> +               };
> +               opp-82500000 {
> +                       opp-hz = /bits/ 64 <82500000>;
> +               };
> +               opp-94285000 {
> +                       opp-hz = /bits/ 64 <94285000>;
> +               };
> +               opp-110000000 {
> +                       opp-hz = /bits/ 64 <110000000>;
> +               };
> +               opp-132000000 {
> +                       opp-hz = /bits/ 64 <132000000>;
> +               };
> +               opp-165000000 {
> +                       opp-hz = /bits/ 64 <165000000>;
> +               };
> +               opp-220000000 {
> +                       opp-hz = /bits/ 64 <220000000>;
> +               };
> +       };
> +
> +       clkc: clock-controller@1fe78030 {
> +               compatible = "loongson,ls1b-clk";
> +               reg = <0x1fe78030 0x8>;
> +
> +               clocks = <&xtal>;
> +               #clock-cells = <1>;
> +       };
> +};
> diff --git a/arch/mips/boot/dts/loongson/loongson1c.dtsi b/arch/mips/boot/dts/loongson/loongson1c.dtsi
> new file mode 100644
> index 000000000000..d552e1668984
> --- /dev/null
> +++ b/arch/mips/boot/dts/loongson/loongson1c.dtsi
> @@ -0,0 +1,29 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> + */
> +
> +/dts-v1/;
> +#include "loongson1.dtsi"
> +
> +/ {
> +       cpus {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +
> +               cpu@0 {
> +                       device_type = "cpu";
> +                       reg = <0>;
> +                       #clock-cells = <1>;
> +                       clocks = <&clkc LS1X_CLKID_CPU>;
> +               };
> +       };
> +
> +       clkc: clock-controller@1fe78030 {
> +               compatible = "loongson,ls1c-clk";
> +               reg = <0x1fe78030 0x8>;
> +
> +               clocks = <&xtal>;
> +               #clock-cells = <1>;
> +       };
> +};
> diff --git a/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts b/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
> new file mode 100644
> index 000000000000..d12c723b0a2b
> --- /dev/null
> +++ b/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
> @@ -0,0 +1,25 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> + */
> +
> +/dts-v1/;
> +
> +#include "loongson1b.dtsi"
> +
> +/ {
> +       compatible = "loongson,lsgz-1b-dev", "loongson,ls1b";
> +       model = "LSGZ_1B_DEV Board";
> +
> +       memory@0 {
> +               device_type = "memory";
> +               reg = <0x0 0x4000000>;
> +       };
> +
> +       xtal: xtal {
for your information, hope it helps:
in <devicetree-specification-v0.4.pdf> Page: 8
The name of a node should be somewhat generic, reflecting the function
of the device and not its precise programming model. If appropriate,
 the name should be one of the following choices:
... clock ...

> +               compatible = "fixed-clock";
> +               clock-frequency = <33000000>;
> +               clock-output-names = "xtal";
> +               #clock-cells = <0>;
> +       };
> +};
> diff --git a/arch/mips/boot/dts/loongson/smartloong_1c.dts b/arch/mips/boot/dts/loongson/smartloong_1c.dts
> new file mode 100644
> index 000000000000..64e869acfd86
> --- /dev/null
> +++ b/arch/mips/boot/dts/loongson/smartloong_1c.dts
> @@ -0,0 +1,25 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> + */
> +
> +/dts-v1/;
> +
> +#include "loongson1c.dtsi"
> +
> +/ {
> +       compatible = "loongmasses,smartloong-1c", "loongson,ls1c";
> +       model = "Smartloong_1C Board";
> +
> +       memory@0 {
> +               device_type = "memory";
> +               reg = <0x0 0x2000000>;
> +       };
> +
> +       xtal: xtal {
> +               compatible = "fixed-clock";
> +               clock-frequency = <24000000>;
> +               clock-output-names = "xtal";
> +               #clock-cells = <0>;
> +       };
> +};
> --
> 2.39.2
>

---
Du Huanpeng
Keguang Zhang July 31, 2023, 3:06 a.m. UTC | #2
On Mon, Jul 31, 2023 at 1:11 AM Du Huanpeng <u74147@gmail.com> wrote:
>
> Keguang Zhang <keguang.zhang@gmail.com> 于2023年7月29日周六 21:45写道:
> >
> > Add initial devicetree for Loongson-1 boards, including
> > LSGZ_1B_DEV and SMARTLOONG_1C board.
> > These basic DTs contain CPU, clock and core INTC.
> >
> > Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>
> > ---
> >  arch/mips/boot/dts/Makefile                   |  1 +
> >  arch/mips/boot/dts/loongson/Makefile          |  3 +
> >  arch/mips/boot/dts/loongson/loongson1.dtsi    | 22 ++++++
> >  arch/mips/boot/dts/loongson/loongson1b.dtsi   | 75 +++++++++++++++++++
> >  arch/mips/boot/dts/loongson/loongson1c.dtsi   | 29 +++++++
> >  arch/mips/boot/dts/loongson/lsgz_1b_dev.dts   | 25 +++++++
> >  arch/mips/boot/dts/loongson/smartloong_1c.dts | 25 +++++++
> >  7 files changed, 180 insertions(+)
> >  create mode 100644 arch/mips/boot/dts/loongson/loongson1.dtsi
> >  create mode 100644 arch/mips/boot/dts/loongson/loongson1b.dtsi
> >  create mode 100644 arch/mips/boot/dts/loongson/loongson1c.dtsi
> >  create mode 100644 arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
> >  create mode 100644 arch/mips/boot/dts/loongson/smartloong_1c.dts
> >
> > diff --git a/arch/mips/boot/dts/Makefile b/arch/mips/boot/dts/Makefile
> > index 928f38a79dff..2e040b1ba97b 100644
> > --- a/arch/mips/boot/dts/Makefile
> > +++ b/arch/mips/boot/dts/Makefile
> > @@ -6,6 +6,7 @@ subdir-$(CONFIG_FIT_IMAGE_FDT_BOSTON)   += img
> >  subdir-$(CONFIG_MACH_INGENIC)          += ingenic
> >  subdir-$(CONFIG_LANTIQ)                        += lantiq
> >  subdir-$(CONFIG_MACH_LOONGSON64)       += loongson
> > +subdir-$(CONFIG_MACH_LOONGSON32)       += loongson
> >  subdir-$(CONFIG_SOC_VCOREIII)          += mscc
> >  subdir-$(CONFIG_MIPS_MALTA)            += mti
> >  subdir-$(CONFIG_LEGACY_BOARD_SEAD3)    += mti
> > diff --git a/arch/mips/boot/dts/loongson/Makefile b/arch/mips/boot/dts/loongson/Makefile
> > index 5c6433e441ee..9d95f1351d5f 100644
> > --- a/arch/mips/boot/dts/loongson/Makefile
> > +++ b/arch/mips/boot/dts/loongson/Makefile
> > @@ -6,4 +6,7 @@ dtb-$(CONFIG_MACH_LOONGSON64)   += loongson64c_8core_rs780e.dtb
> >  dtb-$(CONFIG_MACH_LOONGSON64)  += loongson64g_4core_ls7a.dtb
> >  dtb-$(CONFIG_MACH_LOONGSON64)  += loongson64v_4core_virtio.dtb
> >
> > +dtb-$(CONFIG_LOONGSON1B_LSGZ_DEV)      += lsgz_1b_dev.dtb
> > +dtb-$(CONFIG_LOONGSON1C_SMARTLOONG)    += smartloong_1c.dtb
> > +
> >  obj-$(CONFIG_BUILTIN_DTB)      += $(addsuffix .o, $(dtb-y))
> > diff --git a/arch/mips/boot/dts/loongson/loongson1.dtsi b/arch/mips/boot/dts/loongson/loongson1.dtsi
> > new file mode 100644
> > index 000000000000..a2b5c828bbbd
> > --- /dev/null
> > +++ b/arch/mips/boot/dts/loongson/loongson1.dtsi
> > @@ -0,0 +1,22 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include <dt-bindings/clock/loongson,ls1x-clk.h>
> > +#include <dt-bindings/interrupt-controller/irq.h>
> > +
> > +/ {
> > +       #address-cells = <1>;
> > +       #size-cells = <1>;
> > +
> > +       cpu_intc: interrupt-controller {
> > +               compatible = "mti,cpu-interrupt-controller";
> > +               #address-cells = <0>;
> > +
> > +               interrupt-controller;
> > +               #interrupt-cells = <1>;
> > +       };
> > +};
> > diff --git a/arch/mips/boot/dts/loongson/loongson1b.dtsi b/arch/mips/boot/dts/loongson/loongson1b.dtsi
> > new file mode 100644
> > index 000000000000..784ae9b6572d
> > --- /dev/null
> > +++ b/arch/mips/boot/dts/loongson/loongson1b.dtsi
> > @@ -0,0 +1,75 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> > + */
> > +
> > +/dts-v1/;
> > +#include "loongson1.dtsi"
> > +
> > +/ {
> > +       cpus {
> > +               #address-cells = <1>;
> > +               #size-cells = <0>;
> > +
> > +               cpu@0 {
> > +                       device_type = "cpu";
> > +                       reg = <0>;
> > +                       #clock-cells = <1>;
> > +                       clocks = <&clkc LS1X_CLKID_CPU>;
> > +                       operating-points-v2 = <&cpu_opp_table>;
> > +               };
> > +       };
> > +
> > +       cpu_opp_table: opp-table {
> > +               compatible = "operating-points-v2";
> > +               opp-shared;
> > +
> > +               opp-44000000 {
> > +                       opp-hz = /bits/ 64 <44000000>;
> > +               };
> > +               opp-47142000 {
> > +                       opp-hz = /bits/ 64 <47142000>;
> > +               };
> > +               opp-50769000 {
> > +                       opp-hz = /bits/ 64 <50769000>;
> > +               };
> > +               opp-55000000 {
> > +                       opp-hz = /bits/ 64 <55000000>;
> > +               };
> > +               opp-60000000 {
> > +                       opp-hz = /bits/ 64 <60000000>;
> > +               };
> > +               opp-66000000 {
> > +                       opp-hz = /bits/ 64 <66000000>;
> > +               };
> > +               opp-73333000 {
> > +                       opp-hz = /bits/ 64 <73333000>;
> > +               };
> > +               opp-82500000 {
> > +                       opp-hz = /bits/ 64 <82500000>;
> > +               };
> > +               opp-94285000 {
> > +                       opp-hz = /bits/ 64 <94285000>;
> > +               };
> > +               opp-110000000 {
> > +                       opp-hz = /bits/ 64 <110000000>;
> > +               };
> > +               opp-132000000 {
> > +                       opp-hz = /bits/ 64 <132000000>;
> > +               };
> > +               opp-165000000 {
> > +                       opp-hz = /bits/ 64 <165000000>;
> > +               };
> > +               opp-220000000 {
> > +                       opp-hz = /bits/ 64 <220000000>;
> > +               };
> > +       };
> > +
> > +       clkc: clock-controller@1fe78030 {
> > +               compatible = "loongson,ls1b-clk";
> > +               reg = <0x1fe78030 0x8>;
> > +
> > +               clocks = <&xtal>;
> > +               #clock-cells = <1>;
> > +       };
> > +};
> > diff --git a/arch/mips/boot/dts/loongson/loongson1c.dtsi b/arch/mips/boot/dts/loongson/loongson1c.dtsi
> > new file mode 100644
> > index 000000000000..d552e1668984
> > --- /dev/null
> > +++ b/arch/mips/boot/dts/loongson/loongson1c.dtsi
> > @@ -0,0 +1,29 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> > + */
> > +
> > +/dts-v1/;
> > +#include "loongson1.dtsi"
> > +
> > +/ {
> > +       cpus {
> > +               #address-cells = <1>;
> > +               #size-cells = <0>;
> > +
> > +               cpu@0 {
> > +                       device_type = "cpu";
> > +                       reg = <0>;
> > +                       #clock-cells = <1>;
> > +                       clocks = <&clkc LS1X_CLKID_CPU>;
> > +               };
> > +       };
> > +
> > +       clkc: clock-controller@1fe78030 {
> > +               compatible = "loongson,ls1c-clk";
> > +               reg = <0x1fe78030 0x8>;
> > +
> > +               clocks = <&xtal>;
> > +               #clock-cells = <1>;
> > +       };
> > +};
> > diff --git a/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts b/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
> > new file mode 100644
> > index 000000000000..d12c723b0a2b
> > --- /dev/null
> > +++ b/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
> > @@ -0,0 +1,25 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include "loongson1b.dtsi"
> > +
> > +/ {
> > +       compatible = "loongson,lsgz-1b-dev", "loongson,ls1b";
> > +       model = "LSGZ_1B_DEV Board";
> > +
> > +       memory@0 {
> > +               device_type = "memory";
> > +               reg = <0x0 0x4000000>;
> > +       };
> > +
> > +       xtal: xtal {
> for your information, hope it helps:
> in <devicetree-specification-v0.4.pdf> Page: 8
> The name of a node should be somewhat generic, reflecting the function
> of the device and not its precise programming model. If appropriate,
>  the name should be one of the following choices:
> ... clock ...
>
Will fix this.
Thanks!

> > +               compatible = "fixed-clock";
> > +               clock-frequency = <33000000>;
> > +               clock-output-names = "xtal";
> > +               #clock-cells = <0>;
> > +       };
> > +};
> > diff --git a/arch/mips/boot/dts/loongson/smartloong_1c.dts b/arch/mips/boot/dts/loongson/smartloong_1c.dts
> > new file mode 100644
> > index 000000000000..64e869acfd86
> > --- /dev/null
> > +++ b/arch/mips/boot/dts/loongson/smartloong_1c.dts
> > @@ -0,0 +1,25 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include "loongson1c.dtsi"
> > +
> > +/ {
> > +       compatible = "loongmasses,smartloong-1c", "loongson,ls1c";
> > +       model = "Smartloong_1C Board";
> > +
> > +       memory@0 {
> > +               device_type = "memory";
> > +               reg = <0x0 0x2000000>;
> > +       };
> > +
> > +       xtal: xtal {
> > +               compatible = "fixed-clock";
> > +               clock-frequency = <24000000>;
> > +               clock-output-names = "xtal";
> > +               #clock-cells = <0>;
> > +       };
> > +};
> > --
> > 2.39.2
> >
>
> ---
> Du Huanpeng
diff mbox series

Patch

diff --git a/arch/mips/boot/dts/Makefile b/arch/mips/boot/dts/Makefile
index 928f38a79dff..2e040b1ba97b 100644
--- a/arch/mips/boot/dts/Makefile
+++ b/arch/mips/boot/dts/Makefile
@@ -6,6 +6,7 @@  subdir-$(CONFIG_FIT_IMAGE_FDT_BOSTON)	+= img
 subdir-$(CONFIG_MACH_INGENIC)		+= ingenic
 subdir-$(CONFIG_LANTIQ)			+= lantiq
 subdir-$(CONFIG_MACH_LOONGSON64)	+= loongson
+subdir-$(CONFIG_MACH_LOONGSON32)	+= loongson
 subdir-$(CONFIG_SOC_VCOREIII)		+= mscc
 subdir-$(CONFIG_MIPS_MALTA)		+= mti
 subdir-$(CONFIG_LEGACY_BOARD_SEAD3)	+= mti
diff --git a/arch/mips/boot/dts/loongson/Makefile b/arch/mips/boot/dts/loongson/Makefile
index 5c6433e441ee..9d95f1351d5f 100644
--- a/arch/mips/boot/dts/loongson/Makefile
+++ b/arch/mips/boot/dts/loongson/Makefile
@@ -6,4 +6,7 @@  dtb-$(CONFIG_MACH_LOONGSON64)	+= loongson64c_8core_rs780e.dtb
 dtb-$(CONFIG_MACH_LOONGSON64)	+= loongson64g_4core_ls7a.dtb
 dtb-$(CONFIG_MACH_LOONGSON64)	+= loongson64v_4core_virtio.dtb
 
+dtb-$(CONFIG_LOONGSON1B_LSGZ_DEV)	+= lsgz_1b_dev.dtb
+dtb-$(CONFIG_LOONGSON1C_SMARTLOONG)	+= smartloong_1c.dtb
+
 obj-$(CONFIG_BUILTIN_DTB)	+= $(addsuffix .o, $(dtb-y))
diff --git a/arch/mips/boot/dts/loongson/loongson1.dtsi b/arch/mips/boot/dts/loongson/loongson1.dtsi
new file mode 100644
index 000000000000..a2b5c828bbbd
--- /dev/null
+++ b/arch/mips/boot/dts/loongson/loongson1.dtsi
@@ -0,0 +1,22 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/clock/loongson,ls1x-clk.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	cpu_intc: interrupt-controller {
+		compatible = "mti,cpu-interrupt-controller";
+		#address-cells = <0>;
+
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+};
diff --git a/arch/mips/boot/dts/loongson/loongson1b.dtsi b/arch/mips/boot/dts/loongson/loongson1b.dtsi
new file mode 100644
index 000000000000..784ae9b6572d
--- /dev/null
+++ b/arch/mips/boot/dts/loongson/loongson1b.dtsi
@@ -0,0 +1,75 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
+ */
+
+/dts-v1/;
+#include "loongson1.dtsi"
+
+/ {
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			device_type = "cpu";
+			reg = <0>;
+			#clock-cells = <1>;
+			clocks = <&clkc LS1X_CLKID_CPU>;
+			operating-points-v2 = <&cpu_opp_table>;
+		};
+	};
+
+	cpu_opp_table: opp-table {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp-44000000 {
+			opp-hz = /bits/ 64 <44000000>;
+		};
+		opp-47142000 {
+			opp-hz = /bits/ 64 <47142000>;
+		};
+		opp-50769000 {
+			opp-hz = /bits/ 64 <50769000>;
+		};
+		opp-55000000 {
+			opp-hz = /bits/ 64 <55000000>;
+		};
+		opp-60000000 {
+			opp-hz = /bits/ 64 <60000000>;
+		};
+		opp-66000000 {
+			opp-hz = /bits/ 64 <66000000>;
+		};
+		opp-73333000 {
+			opp-hz = /bits/ 64 <73333000>;
+		};
+		opp-82500000 {
+			opp-hz = /bits/ 64 <82500000>;
+		};
+		opp-94285000 {
+			opp-hz = /bits/ 64 <94285000>;
+		};
+		opp-110000000 {
+			opp-hz = /bits/ 64 <110000000>;
+		};
+		opp-132000000 {
+			opp-hz = /bits/ 64 <132000000>;
+		};
+		opp-165000000 {
+			opp-hz = /bits/ 64 <165000000>;
+		};
+		opp-220000000 {
+			opp-hz = /bits/ 64 <220000000>;
+		};
+	};
+
+	clkc: clock-controller@1fe78030 {
+		compatible = "loongson,ls1b-clk";
+		reg = <0x1fe78030 0x8>;
+
+		clocks = <&xtal>;
+		#clock-cells = <1>;
+	};
+};
diff --git a/arch/mips/boot/dts/loongson/loongson1c.dtsi b/arch/mips/boot/dts/loongson/loongson1c.dtsi
new file mode 100644
index 000000000000..d552e1668984
--- /dev/null
+++ b/arch/mips/boot/dts/loongson/loongson1c.dtsi
@@ -0,0 +1,29 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
+ */
+
+/dts-v1/;
+#include "loongson1.dtsi"
+
+/ {
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		cpu@0 {
+			device_type = "cpu";
+			reg = <0>;
+			#clock-cells = <1>;
+			clocks = <&clkc LS1X_CLKID_CPU>;
+		};
+	};
+
+	clkc: clock-controller@1fe78030 {
+		compatible = "loongson,ls1c-clk";
+		reg = <0x1fe78030 0x8>;
+
+		clocks = <&xtal>;
+		#clock-cells = <1>;
+	};
+};
diff --git a/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts b/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
new file mode 100644
index 000000000000..d12c723b0a2b
--- /dev/null
+++ b/arch/mips/boot/dts/loongson/lsgz_1b_dev.dts
@@ -0,0 +1,25 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "loongson1b.dtsi"
+
+/ {
+	compatible = "loongson,lsgz-1b-dev", "loongson,ls1b";
+	model = "LSGZ_1B_DEV Board";
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x4000000>;
+	};
+
+	xtal: xtal {
+		compatible = "fixed-clock";
+		clock-frequency = <33000000>;
+		clock-output-names = "xtal";
+		#clock-cells = <0>;
+	};
+};
diff --git a/arch/mips/boot/dts/loongson/smartloong_1c.dts b/arch/mips/boot/dts/loongson/smartloong_1c.dts
new file mode 100644
index 000000000000..64e869acfd86
--- /dev/null
+++ b/arch/mips/boot/dts/loongson/smartloong_1c.dts
@@ -0,0 +1,25 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2023 Keguang Zhang <keguang.zhang@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "loongson1c.dtsi"
+
+/ {
+	compatible = "loongmasses,smartloong-1c", "loongson,ls1c";
+	model = "Smartloong_1C Board";
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x2000000>;
+	};
+
+	xtal: xtal {
+		compatible = "fixed-clock";
+		clock-frequency = <24000000>;
+		clock-output-names = "xtal";
+		#clock-cells = <0>;
+	};
+};