Commit bf9012b808515bf1314538e8d423080951d012df
Committed by
Daniel Schwierzeck
1 parent
5a0efcf78a
Exists in
smarc_8mq_lf_v2020.04
and in
17 other branches
MIPS: add support for Broadcom MIPS BCM6348 SoC family
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Showing 6 changed files with 215 additions and 1 deletions Side-by-side Diff
arch/mips/dts/brcm,bcm6348.dtsi
1 | +/* | |
2 | + * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com> | |
3 | + * | |
4 | + * SPDX-License-Identifier: GPL-2.0+ | |
5 | + */ | |
6 | + | |
7 | +#include <dt-bindings/clock/bcm6348-clock.h> | |
8 | +#include <dt-bindings/gpio/gpio.h> | |
9 | +#include <dt-bindings/reset/bcm6348-reset.h> | |
10 | +#include "skeleton.dtsi" | |
11 | + | |
12 | +/ { | |
13 | + compatible = "brcm,bcm6348"; | |
14 | + | |
15 | + cpus { | |
16 | + reg = <0xfffe0000 0x4>; | |
17 | + #address-cells = <1>; | |
18 | + #size-cells = <0>; | |
19 | + u-boot,dm-pre-reloc; | |
20 | + | |
21 | + cpu@0 { | |
22 | + compatible = "brcm,bcm6348-cpu", "mips,mips4Kc"; | |
23 | + device_type = "cpu"; | |
24 | + reg = <0>; | |
25 | + u-boot,dm-pre-reloc; | |
26 | + }; | |
27 | + }; | |
28 | + | |
29 | + clocks { | |
30 | + compatible = "simple-bus"; | |
31 | + #address-cells = <1>; | |
32 | + #size-cells = <1>; | |
33 | + u-boot,dm-pre-reloc; | |
34 | + | |
35 | + periph_osc: periph-osc { | |
36 | + compatible = "fixed-clock"; | |
37 | + #clock-cells = <0>; | |
38 | + clock-frequency = <50000000>; | |
39 | + u-boot,dm-pre-reloc; | |
40 | + }; | |
41 | + | |
42 | + periph_clk: periph-clk { | |
43 | + compatible = "brcm,bcm6345-clk"; | |
44 | + reg = <0xfffe0004 0x4>; | |
45 | + #clock-cells = <1>; | |
46 | + }; | |
47 | + }; | |
48 | + | |
49 | + pflash: nor@1fc00000 { | |
50 | + compatible = "cfi-flash"; | |
51 | + reg = <0x1fc00000 0x2000000>; | |
52 | + bank-width = <2>; | |
53 | + #address-cells = <1>; | |
54 | + #size-cells = <1>; | |
55 | + | |
56 | + status = "disabled"; | |
57 | + }; | |
58 | + | |
59 | + ubus { | |
60 | + compatible = "simple-bus"; | |
61 | + #address-cells = <1>; | |
62 | + #size-cells = <1>; | |
63 | + u-boot,dm-pre-reloc; | |
64 | + | |
65 | + pll_cntl: syscon@fffe0008 { | |
66 | + compatible = "syscon"; | |
67 | + reg = <0xfffe0008 0x4>; | |
68 | + }; | |
69 | + | |
70 | + syscon-reboot { | |
71 | + compatible = "syscon-reboot"; | |
72 | + regmap = <&pll_cntl>; | |
73 | + offset = <0x0>; | |
74 | + mask = <0x1>; | |
75 | + }; | |
76 | + | |
77 | + periph_rst: reset-controller@fffe0028 { | |
78 | + compatible = "brcm,bcm6345-reset"; | |
79 | + reg = <0xfffe0028 0x4>; | |
80 | + #reset-cells = <1>; | |
81 | + }; | |
82 | + | |
83 | + wdt: watchdog@fffe021c { | |
84 | + compatible = "brcm,bcm6345-wdt"; | |
85 | + reg = <0xfffe021c 0xc>; | |
86 | + clocks = <&periph_osc>; | |
87 | + }; | |
88 | + | |
89 | + wdt-reboot { | |
90 | + compatible = "wdt-reboot"; | |
91 | + wdt = <&wdt>; | |
92 | + }; | |
93 | + | |
94 | + uart0: serial@fffe0300 { | |
95 | + compatible = "brcm,bcm6345-uart"; | |
96 | + reg = <0xfffe0300 0x18>; | |
97 | + clocks = <&periph_osc>; | |
98 | + | |
99 | + status = "disabled"; | |
100 | + }; | |
101 | + | |
102 | + gpio1: gpio-controller@fffe0400 { | |
103 | + compatible = "brcm,bcm6345-gpio"; | |
104 | + reg = <0xfffe0400 0x4>, <0xfffe0408 0x4>; | |
105 | + gpio-controller; | |
106 | + #gpio-cells = <2>; | |
107 | + ngpios = <5>; | |
108 | + | |
109 | + status = "disabled"; | |
110 | + }; | |
111 | + | |
112 | + gpio0: gpio-controller@fffe0404 { | |
113 | + compatible = "brcm,bcm6345-gpio"; | |
114 | + reg = <0xfffe0404 0x4>, <0xfffe040c 0x4>; | |
115 | + gpio-controller; | |
116 | + #gpio-cells = <2>; | |
117 | + | |
118 | + status = "disabled"; | |
119 | + }; | |
120 | + | |
121 | + memory-controller@fffe2300 { | |
122 | + compatible = "brcm,bcm6338-mc"; | |
123 | + reg = <0xfffe2300 0x38>; | |
124 | + u-boot,dm-pre-reloc; | |
125 | + }; | |
126 | + }; | |
127 | +}; |
arch/mips/mach-bmips/Kconfig
... | ... | @@ -3,6 +3,7 @@ |
3 | 3 | |
4 | 4 | config SYS_SOC |
5 | 5 | default "bcm6328" if SOC_BMIPS_BCM6328 |
6 | + default "bcm6348" if SOC_BMIPS_BCM6348 | |
6 | 7 | default "bcm6358" if SOC_BMIPS_BCM6358 |
7 | 8 | default "bcm63268" if SOC_BMIPS_BCM63268 |
8 | 9 | |
... | ... | @@ -19,6 +20,17 @@ |
19 | 20 | select SYSRESET_SYSCON |
20 | 21 | help |
21 | 22 | This supports BMIPS BCM6328 family including BCM63281 and BCM63283. |
23 | + | |
24 | +config SOC_BMIPS_BCM6348 | |
25 | + bool "BMIPS BCM6348 family" | |
26 | + select SUPPORTS_BIG_ENDIAN | |
27 | + select SUPPORTS_CPU_MIPS32_R1 | |
28 | + select MIPS_TUNE_4KC | |
29 | + select MIPS_L1_CACHE_SHIFT_4 | |
30 | + select SWAP_IO_SPACE | |
31 | + select SYSRESET_WATCHDOG | |
32 | + help | |
33 | + This supports BMIPS BCM6348 family. | |
22 | 34 | |
23 | 35 | config SOC_BMIPS_BCM6358 |
24 | 36 | bool "BMIPS BCM6358 family" |
arch/mips/mach-bmips/include/ioremap.h
... | ... | @@ -18,7 +18,8 @@ |
18 | 18 | |
19 | 19 | static inline int is_bmips_internal_registers(phys_addr_t offset) |
20 | 20 | { |
21 | -#if defined(CONFIG_SOC_BMIPS_BCM6358) | |
21 | +#if defined(CONFIG_SOC_BMIPS_BCM6348) || \ | |
22 | + defined(CONFIG_SOC_BMIPS_BCM6358) | |
22 | 23 | if (offset >= 0xfffe0000) |
23 | 24 | return 1; |
24 | 25 | #endif |
include/configs/bmips_bcm6348.h
1 | +/* | |
2 | + * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com> | |
3 | + * | |
4 | + * SPDX-License-Identifier: GPL-2.0+ | |
5 | + */ | |
6 | + | |
7 | +#ifndef __CONFIG_BMIPS_BCM6348_H | |
8 | +#define __CONFIG_BMIPS_BCM6348_H | |
9 | + | |
10 | +/* CPU */ | |
11 | +#define CONFIG_SYS_MIPS_TIMER_FREQ 128000000 | |
12 | + | |
13 | +/* RAM */ | |
14 | +#define CONFIG_NR_DRAM_BANKS 1 | |
15 | +#define CONFIG_SYS_SDRAM_BASE 0x80000000 | |
16 | + | |
17 | +/* U-Boot */ | |
18 | +#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_SDRAM_BASE + 0x100000 | |
19 | + | |
20 | +#if defined(CONFIG_BMIPS_BOOT_RAM) | |
21 | +#define CONFIG_SKIP_LOWLEVEL_INIT | |
22 | +#define CONFIG_SYS_INIT_SP_OFFSET 0x2000 | |
23 | +#endif | |
24 | + | |
25 | +#define CONFIG_SYS_FLASH_BASE 0xbfc00000 | |
26 | +#define CONFIG_SYS_FLASH_EMPTY_INFO | |
27 | +#define CONFIG_SYS_FLASH_PROTECTION | |
28 | +#define CONFIG_SYS_MAX_FLASH_BANKS_DETECT 1 | |
29 | + | |
30 | +#endif /* __CONFIG_BMIPS_BCM6348_H */ |
include/dt-bindings/clock/bcm6348-clock.h
1 | +/* | |
2 | + * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com> | |
3 | + * | |
4 | + * Derived from linux/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#ifndef __DT_BINDINGS_CLOCK_BCM6348_H | |
10 | +#define __DT_BINDINGS_CLOCK_BCM6348_H | |
11 | + | |
12 | +#define BCM6348_CLK_ADSL 0 | |
13 | +#define BCM6348_CLK_MPI 1 | |
14 | +#define BCM6348_CLK_SDRAM 2 | |
15 | +#define BCM6348_CLK_M2M 3 | |
16 | +#define BCM6348_CLK_ENET 4 | |
17 | +#define BCM6348_CLK_SAR 5 | |
18 | +#define BCM6348_CLK_USBS 6 | |
19 | +#define BCM6348_CLK_USBH 8 | |
20 | +#define BCM6348_CLK_SPI 9 | |
21 | + | |
22 | +#endif /* __DT_BINDINGS_CLOCK_BCM6348_H */ |
include/dt-bindings/reset/bcm6348-reset.h
1 | +/* | |
2 | + * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com> | |
3 | + * | |
4 | + * Derived from linux/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#ifndef __DT_BINDINGS_RESET_BCM6348_H | |
10 | +#define __DT_BINDINGS_RESET_BCM6348_H | |
11 | + | |
12 | +#define BCM6348_RST_SPI 0 | |
13 | +#define BCM6348_RST_ENET 2 | |
14 | +#define BCM6348_RST_USBH 3 | |
15 | +#define BCM6348_RST_USBS 4 | |
16 | +#define BCM6348_RST_ADSL 5 | |
17 | +#define BCM6348_RST_DMAMEM 6 | |
18 | +#define BCM6348_RST_SAR 7 | |
19 | +#define BCM6348_RST_ACLC 8 | |
20 | +#define BCM6348_RST_ADSL_MIPS 10 | |
21 | + | |
22 | +#endif /* __DT_BINDINGS_RESET_BCM6348_H */ |