* [PATCH v2 1/2] bmips: add BCM6358 support @ 2016-02-21 11:41 Álvaro Fernández Rojas [not found] ` <1456054881-26787-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 11+ messages in thread From: Álvaro Fernández Rojas @ 2016-02-21 11:41 UTC (permalink / raw) To: linux-mips, ralf, linux-kernel, devicetree, f.fainelli, jogo, cernekee Cc: Álvaro Fernández Rojas BCM6358 has a shared TLB which conflicts with current SMP support, so it must be disabled for now. BCM6358 uses >= 0xfffe0000 addresses for internal registers, which need to be remapped (by using a simplified version of BRCM63xx ioremap.h). Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --- v2: Use a different approach for remapping internal registers arch/mips/bmips/setup.c | 29 +++++++++++++++++------ arch/mips/include/asm/mach-bmips/ioremap.h | 37 ++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 arch/mips/include/asm/mach-bmips/ioremap.h diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c index 3553528..f834a86 100644 --- a/arch/mips/bmips/setup.c +++ b/arch/mips/bmips/setup.c @@ -18,6 +18,7 @@ #include <linux/of_fdt.h> #include <linux/of_platform.h> #include <linux/smp.h> +#include <linux/types.h> #include <asm/addrspace.h> #include <asm/bmips.h> #include <asm/bootinfo.h> @@ -35,9 +36,12 @@ static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000; +phys_addr_t bmips_internal_registers; + struct bmips_quirk { - const char *compatible; - void (*quirk_fn)(void); + const char *compatible; + void (*quirk_fn)(void); + const phys_addr_t regs; }; static void kbase_setup(void) @@ -95,17 +99,27 @@ static void bcm6328_quirks(void) bcm63xx_fixup_cpu1(); } +static void bcm6358_quirks(void) +{ + /* + * BCM6358 needs special handling for its shared TLB, so + * disable SMP for now + */ + bmips_smp_enabled = 0; +} + static void bcm6368_quirks(void) { bcm63xx_fixup_cpu1(); } static const struct bmips_quirk bmips_quirk_list[] = { - { "brcm,bcm3384-viper", &bcm3384_viper_quirks }, - { "brcm,bcm33843-viper", &bcm3384_viper_quirks }, - { "brcm,bcm6328", &bcm6328_quirks }, - { "brcm,bcm6368", &bcm6368_quirks }, - { "brcm,bcm63168", &bcm6368_quirks }, + { "brcm,bcm3384-viper", &bcm3384_viper_quirks, 0 }, + { "brcm,bcm33843-viper", &bcm3384_viper_quirks, 0 }, + { "brcm,bcm6328", &bcm6328_quirks, 0 }, + { "brcm,bcm6358", &bcm6358_quirks, 0xfffe0000 }, + { "brcm,bcm6368", &bcm6368_quirks, 0 }, + { "brcm,bcm63168", &bcm6368_quirks, 0 }, { }, }; @@ -162,6 +176,7 @@ void __init plat_mem_setup(void) for (q = bmips_quirk_list; q->quirk_fn; q++) { if (of_flat_dt_is_compatible(of_get_flat_dt_root(), q->compatible)) { + bmips_internal_registers = q->regs; q->quirk_fn(); } } diff --git a/arch/mips/include/asm/mach-bmips/ioremap.h b/arch/mips/include/asm/mach-bmips/ioremap.h new file mode 100644 index 0000000..5ffca94 --- /dev/null +++ b/arch/mips/include/asm/mach-bmips/ioremap.h @@ -0,0 +1,37 @@ +#ifndef __ASM_MACH_BMIPS_IOREMAP_H +#define __ASM_MACH_BMIPS_IOREMAP_H + +#include <linux/types.h> + +extern phys_addr_t bmips_internal_registers; + +static inline phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, + phys_addr_t size) +{ + return phys_addr; +} + +static inline int is_bmips_internal_registers(phys_addr_t offset) +{ + if (bmips_internal_registers != 0 && offset >= bmips_internal_registers) + return 1; + else + return 0; +} + +static inline void __iomem *plat_ioremap(phys_addr_t offset, + unsigned long size, + unsigned long flags) +{ + if (is_bmips_internal_registers(offset)) + return (void __iomem *) offset; + + return NULL; +} + +static inline int plat_iounmap(const volatile void __iomem *addr) +{ + return is_bmips_internal_registers((unsigned long) addr); +} + +#endif /* __ASM_MACH_BMIPS_IOREMAP_H */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <1456054881-26787-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH v2 1/2] bmips: add BCM6358 support [not found] ` <1456054881-26787-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2016-03-03 20:09 ` Florian Fainelli 2016-04-03 9:56 ` [PATCH v3 " Álvaro Fernández Rojas 1 sibling, 0 replies; 11+ messages in thread From: Florian Fainelli @ 2016-03-03 20:09 UTC (permalink / raw) To: Álvaro Fernández Rojas, linux-mips-6z/3iImG2C8G8FEW9MqTrA, ralf-6z/3iImG2C8G8FEW9MqTrA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, jogo-p3rKhJxN3npAfugRpC6u6w, cernekee-Re5JQEeQqe8AvxtiuMwx3w On 21/02/16 03:41, Álvaro Fernández Rojas wrote: > BCM6358 has a shared TLB which conflicts with current SMP support, so it must > be disabled for now. > BCM6358 uses >= 0xfffe0000 addresses for internal registers, which need to be > remapped (by using a simplified version of BRCM63xx ioremap.h). > > Signed-off-by: Álvaro Fernández Rojas <noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > --- > v2: Use a different approach for remapping internal registers > > arch/mips/bmips/setup.c | 29 +++++++++++++++++------ > arch/mips/include/asm/mach-bmips/ioremap.h | 37 ++++++++++++++++++++++++++++++ > 2 files changed, 59 insertions(+), 7 deletions(-) > create mode 100644 arch/mips/include/asm/mach-bmips/ioremap.h > > diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c > index 3553528..f834a86 100644 > --- a/arch/mips/bmips/setup.c > +++ b/arch/mips/bmips/setup.c > @@ -18,6 +18,7 @@ > #include <linux/of_fdt.h> > #include <linux/of_platform.h> > #include <linux/smp.h> > +#include <linux/types.h> > #include <asm/addrspace.h> > #include <asm/bmips.h> > #include <asm/bootinfo.h> > @@ -35,9 +36,12 @@ > > static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000; > > +phys_addr_t bmips_internal_registers; > + > struct bmips_quirk { > - const char *compatible; > - void (*quirk_fn)(void); > + const char *compatible; > + void (*quirk_fn)(void); > + const phys_addr_t regs; > }; That does not scale very well to having some sort of generic quirk function here. > > static void kbase_setup(void) > @@ -95,17 +99,27 @@ static void bcm6328_quirks(void) > bcm63xx_fixup_cpu1(); > } > > +static void bcm6358_quirks(void) > +{ > + /* > + * BCM6358 needs special handling for its shared TLB, so > + * disable SMP for now > + */ > + bmips_smp_enabled = 0; > +} > + > static void bcm6368_quirks(void) > { > bcm63xx_fixup_cpu1(); > } > > static const struct bmips_quirk bmips_quirk_list[] = { > - { "brcm,bcm3384-viper", &bcm3384_viper_quirks }, > - { "brcm,bcm33843-viper", &bcm3384_viper_quirks }, > - { "brcm,bcm6328", &bcm6328_quirks }, > - { "brcm,bcm6368", &bcm6368_quirks }, > - { "brcm,bcm63168", &bcm6368_quirks }, > + { "brcm,bcm3384-viper", &bcm3384_viper_quirks, 0 }, > + { "brcm,bcm33843-viper", &bcm3384_viper_quirks, 0 }, > + { "brcm,bcm6328", &bcm6328_quirks, 0 }, > + { "brcm,bcm6358", &bcm6358_quirks, 0xfffe0000 }, > + { "brcm,bcm6368", &bcm6368_quirks, 0 }, > + { "brcm,bcm63168", &bcm6368_quirks, 0 }, > { }, > }; > > @@ -162,6 +176,7 @@ void __init plat_mem_setup(void) > for (q = bmips_quirk_list; q->quirk_fn; q++) { > if (of_flat_dt_is_compatible(of_get_flat_dt_root(), > q->compatible)) { > + bmips_internal_registers = q->regs; > q->quirk_fn(); > } > } > diff --git a/arch/mips/include/asm/mach-bmips/ioremap.h b/arch/mips/include/asm/mach-bmips/ioremap.h > new file mode 100644 > index 0000000..5ffca94 > --- /dev/null > +++ b/arch/mips/include/asm/mach-bmips/ioremap.h > @@ -0,0 +1,37 @@ > +#ifndef __ASM_MACH_BMIPS_IOREMAP_H > +#define __ASM_MACH_BMIPS_IOREMAP_H > + > +#include <linux/types.h> > + > +extern phys_addr_t bmips_internal_registers; > + > +static inline phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, > + phys_addr_t size) > +{ > + return phys_addr; > +} > + > +static inline int is_bmips_internal_registers(phys_addr_t offset) > +{ > + if (bmips_internal_registers != 0 && offset >= bmips_internal_registers) > + return 1; Humm, we should probably just use a hardcoded constant here, and just pick one which works for all SoCs, so the 3368 base address for instance: 0xfff8_0000 seems like a good candidate, and also works for other DSL SoCs too. -- Florian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/2] bmips: add BCM6358 support [not found] ` <1456054881-26787-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-03-03 20:09 ` Florian Fainelli @ 2016-04-03 9:56 ` Álvaro Fernández Rojas [not found] ` <1459677376-10449-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-04-04 8:09 ` [PATCH v4 1/2] bmips: add BCM6358 support Álvaro Fernández Rojas 1 sibling, 2 replies; 11+ messages in thread From: Álvaro Fernández Rojas @ 2016-04-03 9:56 UTC (permalink / raw) To: linux-mips-6z/3iImG2C8G8FEW9MqTrA, ralf-6z/3iImG2C8G8FEW9MqTrA, devicetree-u79uwXL29TY76Z2rM5mHXA, f.fainelli-Re5JQEeQqe8AvxtiuMwx3w, jogo-p3rKhJxN3npAfugRpC6u6w, cernekee-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: Álvaro Fernández Rojas BCM6358 has a shared TLB which conflicts with current SMP support, so it must be disabled for now. BCM6358 uses >= 0xfffe0000 addresses for internal registers, which need to be remapped (by using a simplified version of BRCM63xx ioremap.h). However, 0xfff80000 is a better address since it also covers BCM3368, leaving the possibility to add it in the future. Signed-off-by: Álvaro Fernández Rojas <noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- v3: Use a hardcoded constant for is_bmips_internal_registers (BCM3368 base address) v2: Use a different approach for remapping internal registers arch/mips/bmips/setup.c | 10 +++++++++ arch/mips/include/asm/mach-bmips/ioremap.h | 33 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 arch/mips/include/asm/mach-bmips/ioremap.h diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c index 3553528..38b5bd5 100644 --- a/arch/mips/bmips/setup.c +++ b/arch/mips/bmips/setup.c @@ -95,6 +95,15 @@ static void bcm6328_quirks(void) bcm63xx_fixup_cpu1(); } +static void bcm6358_quirks(void) +{ + /* + * BCM6358 needs special handling for its shared TLB, so + * disable SMP for now + */ + bmips_smp_enabled = 0; +} + static void bcm6368_quirks(void) { bcm63xx_fixup_cpu1(); @@ -104,6 +113,7 @@ static const struct bmips_quirk bmips_quirk_list[] = { { "brcm,bcm3384-viper", &bcm3384_viper_quirks }, { "brcm,bcm33843-viper", &bcm3384_viper_quirks }, { "brcm,bcm6328", &bcm6328_quirks }, + { "brcm,bcm6358", &bcm6358_quirks }, { "brcm,bcm6368", &bcm6368_quirks }, { "brcm,bcm63168", &bcm6368_quirks }, { }, diff --git a/arch/mips/include/asm/mach-bmips/ioremap.h b/arch/mips/include/asm/mach-bmips/ioremap.h new file mode 100644 index 0000000..29c7a7b --- /dev/null +++ b/arch/mips/include/asm/mach-bmips/ioremap.h @@ -0,0 +1,33 @@ +#ifndef __ASM_MACH_BMIPS_IOREMAP_H +#define __ASM_MACH_BMIPS_IOREMAP_H + +#include <linux/types.h> + +static inline phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, phys_addr_t size) +{ + return phys_addr; +} + +static inline int is_bmips_internal_registers(phys_addr_t offset) +{ + if (offset >= 0xfff80000) + return 1; + + return 0; +} + +static inline void __iomem *plat_ioremap(phys_addr_t offset, unsigned long size, + unsigned long flags) +{ + if (is_bmips_internal_registers(offset)) + return (void __iomem *)offset; + + return NULL; +} + +static inline int plat_iounmap(const volatile void __iomem *addr) +{ + return is_bmips_internal_registers((unsigned long)addr); +} + +#endif /* __ASM_MACH_BMIPS_IOREMAP_H */ -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <1459677376-10449-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* [PATCH v3 2/2] bmips: add device tree example for BCM6358 [not found] ` <1459677376-10449-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2016-04-03 9:56 ` Álvaro Fernández Rojas 2016-04-04 5:16 ` Rob Herring 0 siblings, 1 reply; 11+ messages in thread From: Álvaro Fernández Rojas @ 2016-04-03 9:56 UTC (permalink / raw) To: linux-mips-6z/3iImG2C8G8FEW9MqTrA, ralf-6z/3iImG2C8G8FEW9MqTrA, devicetree-u79uwXL29TY76Z2rM5mHXA, f.fainelli-Re5JQEeQqe8AvxtiuMwx3w, jogo-p3rKhJxN3npAfugRpC6u6w, cernekee-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: Álvaro Fernández Rojas This adds a device tree example for SFR Neufbox4 (Sercomm version), which also serves as a real example for brcm,bcm6358-leds. Signed-off-by: Álvaro Fernández Rojas <noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- v3: Device tree fixes - Use interrupt-controller instead of periph_intc. - Use led@# instead of naming the LEDs. v2: Remove led0 alias and use stdout-path only .../devicetree/bindings/mips/brcm/soc.txt | 2 +- arch/mips/bmips/Kconfig | 4 + arch/mips/boot/dts/brcm/Makefile | 2 + arch/mips/boot/dts/brcm/bcm6358.dtsi | 111 +++++++++++++++++++++ arch/mips/boot/dts/brcm/bcm96358nb4ser.dts | 46 +++++++++ 5 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 arch/mips/boot/dts/brcm/bcm6358.dtsi create mode 100644 arch/mips/boot/dts/brcm/bcm96358nb4ser.dts diff --git a/Documentation/devicetree/bindings/mips/brcm/soc.txt b/Documentation/devicetree/bindings/mips/brcm/soc.txt index 7bab90c..e58a4f6 100644 --- a/Documentation/devicetree/bindings/mips/brcm/soc.txt +++ b/Documentation/devicetree/bindings/mips/brcm/soc.txt @@ -4,7 +4,7 @@ Required properties: - compatible: "brcm,bcm3384", "brcm,bcm33843" "brcm,bcm3384-viper", "brcm,bcm33843-viper" - "brcm,bcm6328", "brcm,bcm6368", + "brcm,bcm6328", "brcm,bcm6358", "brcm,bcm6368", "brcm,bcm7125", "brcm,bcm7346", "brcm,bcm7358", "brcm,bcm7360", "brcm,bcm7362", "brcm,bcm7420", "brcm,bcm7425" diff --git a/arch/mips/bmips/Kconfig b/arch/mips/bmips/Kconfig index e2c4fd6..264328d 100644 --- a/arch/mips/bmips/Kconfig +++ b/arch/mips/bmips/Kconfig @@ -21,6 +21,10 @@ config DT_BCM93384WVG_VIPER bool "BCM93384WVG Viper CPU (EXPERIMENTAL)" select BUILTIN_DTB +config DT_BCM96358NB4SER + bool "BCM96358NB4SER" + select BUILTIN_DTB + config DT_BCM96368MVWG bool "BCM96368MVWG" select BUILTIN_DTB diff --git a/arch/mips/boot/dts/brcm/Makefile b/arch/mips/boot/dts/brcm/Makefile index eabeb60..fda9d38 100644 --- a/arch/mips/boot/dts/brcm/Makefile +++ b/arch/mips/boot/dts/brcm/Makefile @@ -1,5 +1,6 @@ dtb-$(CONFIG_DT_BCM93384WVG) += bcm93384wvg.dtb dtb-$(CONFIG_DT_BCM93384WVG_VIPER) += bcm93384wvg_viper.dtb +dtb-$(CONFIG_DT_BCM96358NB4SER) += bcm96358nb4ser.dtb dtb-$(CONFIG_DT_BCM96368MVWG) += bcm96368mvwg.dtb dtb-$(CONFIG_DT_BCM9EJTAGPRB) += bcm9ejtagprb.dtb dtb-$(CONFIG_DT_BCM97125CBMB) += bcm97125cbmb.dtb @@ -14,6 +15,7 @@ dtb-$(CONFIG_DT_BCM97435SVMB) += bcm97435svmb.dtb dtb-$(CONFIG_DT_NONE) += \ bcm93384wvg.dtb \ bcm93384wvg_viper.dtb \ + bcm96358nb4ser.dtb \ bcm96368mvwg.dtb \ bcm9ejtagprb.dtb \ bcm97125cbmb.dtb \ diff --git a/arch/mips/boot/dts/brcm/bcm6358.dtsi b/arch/mips/boot/dts/brcm/bcm6358.dtsi new file mode 100644 index 0000000..5ac1ef0 --- /dev/null +++ b/arch/mips/boot/dts/brcm/bcm6358.dtsi @@ -0,0 +1,111 @@ +/ { + #address-cells = <1>; + #size-cells = <1>; + compatible = "brcm,bcm6358"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + mips-hpt-frequency = <150000000>; + + cpu@0 { + compatible = "brcm,bmips4350"; + device_type = "cpu"; + reg = <0>; + }; + + cpu@1 { + compatible = "brcm,bmips4350"; + device_type = "cpu"; + reg = <1>; + }; + }; + + clocks { + periph_clk: periph_clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + aliases { + uart0 = &uart0; + uart1 = &uart1; + }; + + cpu_intc: cpu_intc { + #address-cells = <0>; + compatible = "mti,cpu-interrupt-controller"; + + interrupt-controller; + #interrupt-cells = <1>; + }; + + ubus { + #address-cells = <1>; + #size-cells = <1>; + + compatible = "simple-bus"; + ranges; + + periph_cntl: syscon@fffe0000 { + compatible = "syscon"; + reg = <0xfffe0000 0xc>; + little-endian; + }; + + reboot: syscon-reboot@fffe0008 { + compatible = "syscon-reboot"; + regmap = <&periph_cntl>; + offset = <0x8>; + mask = <0x1>; + }; + + periph_intc: interrupt-controller@fffe000c { + compatible = "brcm,bcm3380-l2-intc"; + reg = <0xfffe0010 0x4 0xfffe000c 0x4>, + <0xfffe003c 0x4 0xfffe0038 0x4>; + + interrupt-controller; + #interrupt-cells = <1>; + + interrupt-parent = <&cpu_intc>; + interrupts = <2>; + }; + + leds0: led-controller@fffe00d0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "brcm,bcm6358-leds"; + reg = <0xfffe00d0 0x8>; + + status = "disabled"; + }; + + uart0: serial@fffe0100 { + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe0100 0x18>; + + interrupt-parent = <&periph_intc>; + interrupts = <2>; + + clocks = <&periph_clk>; + + status = "disabled"; + }; + + uart1: serial@fffe0120 { + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe0120 0x18>; + + interrupt-parent = <&periph_intc>; + interrupts = <3>; + + clocks = <&periph_clk>; + + status = "disabled"; + }; + }; +}; diff --git a/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts new file mode 100644 index 0000000..f412117 --- /dev/null +++ b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts @@ -0,0 +1,46 @@ +/dts-v1/; + +/include/ "bcm6358.dtsi" + +/ { + compatible = "sfr,nb4-ser", "brcm,bcm6358"; + model = "SFR Neufbox 4 (Sercomm)"; + + memory@0 { + device_type = "memory"; + reg = <0x00000000 0x02000000>; + }; + + chosen { + stdout-path = &uart0; + }; +}; + +&leds0 { + status = "ok"; + + led@0 { + reg = <0>; + active-low; + label = "nb4-ser:white:alarm"; + }; + led@2 { + reg = <2>; + active-low; + label = "nb4-ser:white:tv"; + }; + led@3 { + reg = <3>; + active-low; + label = "nb4-ser:white:tel"; + }; + led@4 { + reg = <4>; + active-low; + label = "nb4-ser:white:adsl"; + }; +}; + +&uart0 { + status = "okay"; +}; -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/2] bmips: add device tree example for BCM6358 2016-04-03 9:56 ` [PATCH v3 2/2] bmips: add device tree example for BCM6358 Álvaro Fernández Rojas @ 2016-04-04 5:16 ` Rob Herring 0 siblings, 0 replies; 11+ messages in thread From: Rob Herring @ 2016-04-04 5:16 UTC (permalink / raw) To: Álvaro Fernández Rojas Cc: linux-mips, ralf, devicetree, f.fainelli, jogo, cernekee On Sun, Apr 03, 2016 at 11:56:16AM +0200, Álvaro Fernández Rojas wrote: > This adds a device tree example for SFR Neufbox4 (Sercomm version), which > also serves as a real example for brcm,bcm6358-leds. > > Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> > --- > v3: Device tree fixes > - Use interrupt-controller instead of periph_intc. > - Use led@# instead of naming the LEDs. > v2: Remove led0 alias and use stdout-path only > > .../devicetree/bindings/mips/brcm/soc.txt | 2 +- > arch/mips/bmips/Kconfig | 4 + > arch/mips/boot/dts/brcm/Makefile | 2 + > arch/mips/boot/dts/brcm/bcm6358.dtsi | 111 +++++++++++++++++++++ > arch/mips/boot/dts/brcm/bcm96358nb4ser.dts | 46 +++++++++ > 5 files changed, 164 insertions(+), 1 deletion(-) > create mode 100644 arch/mips/boot/dts/brcm/bcm6358.dtsi > create mode 100644 arch/mips/boot/dts/brcm/bcm96358nb4ser.dts Acked-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v4 1/2] bmips: add BCM6358 support 2016-04-03 9:56 ` [PATCH v3 " Álvaro Fernández Rojas [not found] ` <1459677376-10449-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2016-04-04 8:09 ` Álvaro Fernández Rojas [not found] ` <1459757353-14683-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 1 sibling, 1 reply; 11+ messages in thread From: Álvaro Fernández Rojas @ 2016-04-04 8:09 UTC (permalink / raw) To: linux-mips, ralf, devicetree, f.fainelli, jogo, cernekee, robh Cc: Álvaro Fernández Rojas BCM6358 has a shared TLB which conflicts with current SMP support, so it must be disabled for now. BCM6358 uses >= 0xfffe0000 addresses for internal registers, which need to be remapped (by using a simplified version of BRCM63xx ioremap.h). However, 0xfff80000 is a better address, since it also covers BCM3368, leaving the possibility to add it in the future. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --- v4: no changes, resend v3: Use a hardcoded constant for is_bmips_internal_registers (BCM3368 base address) v2: Use a different approach for remapping internal registers arch/mips/bmips/setup.c | 10 +++++++++ arch/mips/include/asm/mach-bmips/ioremap.h | 33 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 arch/mips/include/asm/mach-bmips/ioremap.h diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c index 3553528..38b5bd5 100644 --- a/arch/mips/bmips/setup.c +++ b/arch/mips/bmips/setup.c @@ -95,6 +95,15 @@ static void bcm6328_quirks(void) bcm63xx_fixup_cpu1(); } +static void bcm6358_quirks(void) +{ + /* + * BCM6358 needs special handling for its shared TLB, so + * disable SMP for now + */ + bmips_smp_enabled = 0; +} + static void bcm6368_quirks(void) { bcm63xx_fixup_cpu1(); @@ -104,6 +113,7 @@ static const struct bmips_quirk bmips_quirk_list[] = { { "brcm,bcm3384-viper", &bcm3384_viper_quirks }, { "brcm,bcm33843-viper", &bcm3384_viper_quirks }, { "brcm,bcm6328", &bcm6328_quirks }, + { "brcm,bcm6358", &bcm6358_quirks }, { "brcm,bcm6368", &bcm6368_quirks }, { "brcm,bcm63168", &bcm6368_quirks }, { }, diff --git a/arch/mips/include/asm/mach-bmips/ioremap.h b/arch/mips/include/asm/mach-bmips/ioremap.h new file mode 100644 index 0000000..29c7a7b --- /dev/null +++ b/arch/mips/include/asm/mach-bmips/ioremap.h @@ -0,0 +1,33 @@ +#ifndef __ASM_MACH_BMIPS_IOREMAP_H +#define __ASM_MACH_BMIPS_IOREMAP_H + +#include <linux/types.h> + +static inline phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, phys_addr_t size) +{ + return phys_addr; +} + +static inline int is_bmips_internal_registers(phys_addr_t offset) +{ + if (offset >= 0xfff80000) + return 1; + + return 0; +} + +static inline void __iomem *plat_ioremap(phys_addr_t offset, unsigned long size, + unsigned long flags) +{ + if (is_bmips_internal_registers(offset)) + return (void __iomem *)offset; + + return NULL; +} + +static inline int plat_iounmap(const volatile void __iomem *addr) +{ + return is_bmips_internal_registers((unsigned long)addr); +} + +#endif /* __ASM_MACH_BMIPS_IOREMAP_H */ -- 2.1.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <1459757353-14683-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* [PATCH v4 2/2] bmips: add device tree example for BCM6358 [not found] ` <1459757353-14683-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2016-04-04 8:09 ` Álvaro Fernández Rojas [not found] ` <1459757353-14683-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-04-09 10:56 ` [PATCH 1/2] bmips: add BCM6358 support Álvaro Fernández Rojas 1 sibling, 1 reply; 11+ messages in thread From: Álvaro Fernández Rojas @ 2016-04-04 8:09 UTC (permalink / raw) To: linux-mips-6z/3iImG2C8G8FEW9MqTrA, ralf-6z/3iImG2C8G8FEW9MqTrA, devicetree-u79uwXL29TY76Z2rM5mHXA, f.fainelli-Re5JQEeQqe8AvxtiuMwx3w, jogo-p3rKhJxN3npAfugRpC6u6w, cernekee-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A Cc: Álvaro Fernández Rojas This adds a device tree example for SFR Neufbox4 (Sercomm version), which also serves as a real example for brcm,bcm6358-leds. Signed-off-by: Álvaro Fernández Rojas <noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- v4: Device tree improvements: - Switch to native-endian for syscon. - Switch to bcm6345-l1-intc interrupt controller. - Add ehci and ohci nodes. v3: Device tree fixes - Use interrupt-controller instead of periph_intc. - Use led@# instead of naming the LEDs. v2: Remove led0 alias and use stdout-path only .../devicetree/bindings/mips/brcm/soc.txt | 2 +- arch/mips/bmips/Kconfig | 4 + arch/mips/boot/dts/brcm/Makefile | 2 + arch/mips/boot/dts/brcm/bcm6358.dtsi | 130 +++++++++++++++++++++ arch/mips/boot/dts/brcm/bcm96358nb4ser.dts | 46 ++++++++ 5 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 arch/mips/boot/dts/brcm/bcm6358.dtsi create mode 100644 arch/mips/boot/dts/brcm/bcm96358nb4ser.dts diff --git a/Documentation/devicetree/bindings/mips/brcm/soc.txt b/Documentation/devicetree/bindings/mips/brcm/soc.txt index 7bab90c..e58a4f6 100644 --- a/Documentation/devicetree/bindings/mips/brcm/soc.txt +++ b/Documentation/devicetree/bindings/mips/brcm/soc.txt @@ -4,7 +4,7 @@ Required properties: - compatible: "brcm,bcm3384", "brcm,bcm33843" "brcm,bcm3384-viper", "brcm,bcm33843-viper" - "brcm,bcm6328", "brcm,bcm6368", + "brcm,bcm6328", "brcm,bcm6358", "brcm,bcm6368", "brcm,bcm7125", "brcm,bcm7346", "brcm,bcm7358", "brcm,bcm7360", "brcm,bcm7362", "brcm,bcm7420", "brcm,bcm7425" diff --git a/arch/mips/bmips/Kconfig b/arch/mips/bmips/Kconfig index e2c4fd6..264328d 100644 --- a/arch/mips/bmips/Kconfig +++ b/arch/mips/bmips/Kconfig @@ -21,6 +21,10 @@ config DT_BCM93384WVG_VIPER bool "BCM93384WVG Viper CPU (EXPERIMENTAL)" select BUILTIN_DTB +config DT_BCM96358NB4SER + bool "BCM96358NB4SER" + select BUILTIN_DTB + config DT_BCM96368MVWG bool "BCM96368MVWG" select BUILTIN_DTB diff --git a/arch/mips/boot/dts/brcm/Makefile b/arch/mips/boot/dts/brcm/Makefile index eabeb60..fda9d38 100644 --- a/arch/mips/boot/dts/brcm/Makefile +++ b/arch/mips/boot/dts/brcm/Makefile @@ -1,5 +1,6 @@ dtb-$(CONFIG_DT_BCM93384WVG) += bcm93384wvg.dtb dtb-$(CONFIG_DT_BCM93384WVG_VIPER) += bcm93384wvg_viper.dtb +dtb-$(CONFIG_DT_BCM96358NB4SER) += bcm96358nb4ser.dtb dtb-$(CONFIG_DT_BCM96368MVWG) += bcm96368mvwg.dtb dtb-$(CONFIG_DT_BCM9EJTAGPRB) += bcm9ejtagprb.dtb dtb-$(CONFIG_DT_BCM97125CBMB) += bcm97125cbmb.dtb @@ -14,6 +15,7 @@ dtb-$(CONFIG_DT_BCM97435SVMB) += bcm97435svmb.dtb dtb-$(CONFIG_DT_NONE) += \ bcm93384wvg.dtb \ bcm93384wvg_viper.dtb \ + bcm96358nb4ser.dtb \ bcm96368mvwg.dtb \ bcm9ejtagprb.dtb \ bcm97125cbmb.dtb \ diff --git a/arch/mips/boot/dts/brcm/bcm6358.dtsi b/arch/mips/boot/dts/brcm/bcm6358.dtsi new file mode 100644 index 0000000..5dc8432 --- /dev/null +++ b/arch/mips/boot/dts/brcm/bcm6358.dtsi @@ -0,0 +1,130 @@ +/ { + #address-cells = <1>; + #size-cells = <1>; + compatible = "brcm,bcm6358"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + mips-hpt-frequency = <150000000>; + + cpu@0 { + compatible = "brcm,bmips4350"; + device_type = "cpu"; + reg = <0>; + }; + + cpu@1 { + compatible = "brcm,bmips4350"; + device_type = "cpu"; + reg = <1>; + }; + }; + + clocks { + periph_clk: periph_clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + aliases { + uart0 = &uart0; + uart1 = &uart1; + }; + + cpu_intc: cpu_intc { + #address-cells = <0>; + compatible = "mti,cpu-interrupt-controller"; + + interrupt-controller; + #interrupt-cells = <1>; + }; + + ubus { + #address-cells = <1>; + #size-cells = <1>; + + compatible = "simple-bus"; + ranges; + + periph_cntl: syscon@fffe0000 { + compatible = "syscon"; + reg = <0xfffe0000 0xc>; + native-endian; + }; + + reboot: syscon-reboot@fffe0008 { + compatible = "syscon-reboot"; + regmap = <&periph_cntl>; + offset = <0x8>; + mask = <0x1>; + }; + + periph_intc: interrupt-controller@fffe000c { + compatible = "brcm,bcm6345-l1-intc"; + reg = <0xfffe000c 0x8>, + <0xfffe0038 0x8>; + + interrupt-controller; + #interrupt-cells = <1>; + + interrupt-parent = <&cpu_intc>; + interrupts = <2>, <3>; + }; + + leds0: led-controller@fffe00d0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "brcm,bcm6358-leds"; + reg = <0xfffe00d0 0x8>; + + status = "disabled"; + }; + + uart0: serial@fffe0100 { + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe0100 0x18>; + + interrupt-parent = <&periph_intc>; + interrupts = <2>; + + clocks = <&periph_clk>; + + status = "disabled"; + }; + + uart1: serial@fffe0120 { + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe0120 0x18>; + + interrupt-parent = <&periph_intc>; + interrupts = <3>; + + clocks = <&periph_clk>; + + status = "disabled"; + }; + + ehci0: usb@fffe1300 { + compatible = "brcm,bcm6358-ehci", "generic-ehci"; + reg = <0xfffe1300 0x100>; + big-endian; + interrupt-parent = <&periph_intc>; + interrupts = <10>; + status = "disabled"; + }; + + ohci0: usb@fffe1400 { + compatible = "brcm,bcm6358-ohci", "generic-ohci"; + reg = <0xfffe1400 0x100>; + big-endian; + no-big-frame-no; + interrupt-parent = <&periph_intc>; + interrupts = <5>; + status = "disabled"; + }; + }; +}; diff --git a/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts new file mode 100644 index 0000000..f412117 --- /dev/null +++ b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts @@ -0,0 +1,46 @@ +/dts-v1/; + +/include/ "bcm6358.dtsi" + +/ { + compatible = "sfr,nb4-ser", "brcm,bcm6358"; + model = "SFR Neufbox 4 (Sercomm)"; + + memory@0 { + device_type = "memory"; + reg = <0x00000000 0x02000000>; + }; + + chosen { + stdout-path = &uart0; + }; +}; + +&leds0 { + status = "ok"; + + led@0 { + reg = <0>; + active-low; + label = "nb4-ser:white:alarm"; + }; + led@2 { + reg = <2>; + active-low; + label = "nb4-ser:white:tv"; + }; + led@3 { + reg = <3>; + active-low; + label = "nb4-ser:white:tel"; + }; + led@4 { + reg = <4>; + active-low; + label = "nb4-ser:white:adsl"; + }; +}; + +&uart0 { + status = "okay"; +}; -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <1459757353-14683-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH v4 2/2] bmips: add device tree example for BCM6358 [not found] ` <1459757353-14683-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2016-04-07 17:57 ` Rob Herring 0 siblings, 0 replies; 11+ messages in thread From: Rob Herring @ 2016-04-07 17:57 UTC (permalink / raw) To: Álvaro Fernández Rojas Cc: linux-mips-6z/3iImG2C8G8FEW9MqTrA, ralf-6z/3iImG2C8G8FEW9MqTrA, devicetree-u79uwXL29TY76Z2rM5mHXA, f.fainelli-Re5JQEeQqe8AvxtiuMwx3w, jogo-p3rKhJxN3npAfugRpC6u6w, cernekee-Re5JQEeQqe8AvxtiuMwx3w On Mon, Apr 04, 2016 at 10:09:13AM +0200, Álvaro Fernández Rojas wrote: > This adds a device tree example for SFR Neufbox4 (Sercomm version), which > also serves as a real example for brcm,bcm6358-leds. > > Signed-off-by: Álvaro Fernández Rojas <noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > --- > v4: Device tree improvements: > - Switch to native-endian for syscon. > - Switch to bcm6345-l1-intc interrupt controller. > - Add ehci and ohci nodes. > v3: Device tree fixes > - Use interrupt-controller instead of periph_intc. > - Use led@# instead of naming the LEDs. > v2: Remove led0 alias and use stdout-path only > > .../devicetree/bindings/mips/brcm/soc.txt | 2 +- > arch/mips/bmips/Kconfig | 4 + > arch/mips/boot/dts/brcm/Makefile | 2 + > arch/mips/boot/dts/brcm/bcm6358.dtsi | 130 +++++++++++++++++++++ > arch/mips/boot/dts/brcm/bcm96358nb4ser.dts | 46 ++++++++ > 5 files changed, 183 insertions(+), 1 deletion(-) > create mode 100644 arch/mips/boot/dts/brcm/bcm6358.dtsi > create mode 100644 arch/mips/boot/dts/brcm/bcm96358nb4ser.dts > > diff --git a/Documentation/devicetree/bindings/mips/brcm/soc.txt b/Documentation/devicetree/bindings/mips/brcm/soc.txt > index 7bab90c..e58a4f6 100644 > --- a/Documentation/devicetree/bindings/mips/brcm/soc.txt > +++ b/Documentation/devicetree/bindings/mips/brcm/soc.txt > @@ -4,7 +4,7 @@ Required properties: > > - compatible: "brcm,bcm3384", "brcm,bcm33843" > "brcm,bcm3384-viper", "brcm,bcm33843-viper" > - "brcm,bcm6328", "brcm,bcm6368", > + "brcm,bcm6328", "brcm,bcm6358", "brcm,bcm6368", > "brcm,bcm7125", "brcm,bcm7346", "brcm,bcm7358", "brcm,bcm7360", > "brcm,bcm7362", "brcm,bcm7420", "brcm,bcm7425" > > diff --git a/arch/mips/bmips/Kconfig b/arch/mips/bmips/Kconfig > index e2c4fd6..264328d 100644 > --- a/arch/mips/bmips/Kconfig > +++ b/arch/mips/bmips/Kconfig > @@ -21,6 +21,10 @@ config DT_BCM93384WVG_VIPER > bool "BCM93384WVG Viper CPU (EXPERIMENTAL)" > select BUILTIN_DTB > > +config DT_BCM96358NB4SER > + bool "BCM96358NB4SER" > + select BUILTIN_DTB > + > config DT_BCM96368MVWG > bool "BCM96368MVWG" > select BUILTIN_DTB > diff --git a/arch/mips/boot/dts/brcm/Makefile b/arch/mips/boot/dts/brcm/Makefile > index eabeb60..fda9d38 100644 > --- a/arch/mips/boot/dts/brcm/Makefile > +++ b/arch/mips/boot/dts/brcm/Makefile > @@ -1,5 +1,6 @@ > dtb-$(CONFIG_DT_BCM93384WVG) += bcm93384wvg.dtb > dtb-$(CONFIG_DT_BCM93384WVG_VIPER) += bcm93384wvg_viper.dtb > +dtb-$(CONFIG_DT_BCM96358NB4SER) += bcm96358nb4ser.dtb > dtb-$(CONFIG_DT_BCM96368MVWG) += bcm96368mvwg.dtb > dtb-$(CONFIG_DT_BCM9EJTAGPRB) += bcm9ejtagprb.dtb > dtb-$(CONFIG_DT_BCM97125CBMB) += bcm97125cbmb.dtb > @@ -14,6 +15,7 @@ dtb-$(CONFIG_DT_BCM97435SVMB) += bcm97435svmb.dtb > dtb-$(CONFIG_DT_NONE) += \ > bcm93384wvg.dtb \ > bcm93384wvg_viper.dtb \ > + bcm96358nb4ser.dtb \ > bcm96368mvwg.dtb \ > bcm9ejtagprb.dtb \ > bcm97125cbmb.dtb \ > diff --git a/arch/mips/boot/dts/brcm/bcm6358.dtsi b/arch/mips/boot/dts/brcm/bcm6358.dtsi > new file mode 100644 > index 0000000..5dc8432 > --- /dev/null > +++ b/arch/mips/boot/dts/brcm/bcm6358.dtsi > @@ -0,0 +1,130 @@ > +/ { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "brcm,bcm6358"; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + > + mips-hpt-frequency = <150000000>; I guess this is already defined for MIPS, but there is a generic timer freq property defined in ePAPR. > + > + cpu@0 { > + compatible = "brcm,bmips4350"; > + device_type = "cpu"; > + reg = <0>; > + }; > + > + cpu@1 { > + compatible = "brcm,bmips4350"; > + device_type = "cpu"; > + reg = <1>; > + }; > + }; > + > + clocks { > + periph_clk: periph_clk { No underscores in node names. > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + clock-frequency = <50000000>; > + }; > + }; > + > + aliases { > + uart0 = &uart0; > + uart1 = &uart1; Alias names should be serialN. > + }; > + > + cpu_intc: cpu_intc { This should also be "interrupt-controller". > + #address-cells = <0>; > + compatible = "mti,cpu-interrupt-controller"; > + > + interrupt-controller; > + #interrupt-cells = <1>; > + }; > + > + ubus { > + #address-cells = <1>; > + #size-cells = <1>; > + > + compatible = "simple-bus"; > + ranges; Would be preferred to limit this to 0xfffe0000 (or appropriate range) if in fact all peripherals fall within this range. > + > + periph_cntl: syscon@fffe0000 { > + compatible = "syscon"; > + reg = <0xfffe0000 0xc>; > + native-endian; > + }; > + > + reboot: syscon-reboot@fffe0008 { > + compatible = "syscon-reboot"; > + regmap = <&periph_cntl>; > + offset = <0x8>; > + mask = <0x1>; > + }; > + > + periph_intc: interrupt-controller@fffe000c { > + compatible = "brcm,bcm6345-l1-intc"; > + reg = <0xfffe000c 0x8>, > + <0xfffe0038 0x8>; > + > + interrupt-controller; > + #interrupt-cells = <1>; > + > + interrupt-parent = <&cpu_intc>; > + interrupts = <2>, <3>; > + }; > + > + leds0: led-controller@fffe00d0 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "brcm,bcm6358-leds"; > + reg = <0xfffe00d0 0x8>; > + > + status = "disabled"; > + }; > + > + uart0: serial@fffe0100 { > + compatible = "brcm,bcm6345-uart"; > + reg = <0xfffe0100 0x18>; > + > + interrupt-parent = <&periph_intc>; > + interrupts = <2>; > + > + clocks = <&periph_clk>; > + > + status = "disabled"; > + }; > + > + uart1: serial@fffe0120 { > + compatible = "brcm,bcm6345-uart"; > + reg = <0xfffe0120 0x18>; > + > + interrupt-parent = <&periph_intc>; > + interrupts = <3>; > + > + clocks = <&periph_clk>; > + > + status = "disabled"; > + }; > + > + ehci0: usb@fffe1300 { Why the numbering? Is there more than 1 EHCI? > + compatible = "brcm,bcm6358-ehci", "generic-ehci"; Is this documented? > + reg = <0xfffe1300 0x100>; > + big-endian; > + interrupt-parent = <&periph_intc>; > + interrupts = <10>; > + status = "disabled"; > + }; > + > + ohci0: usb@fffe1400 { More than 1 OHCI? > + compatible = "brcm,bcm6358-ohci", "generic-ohci"; Is this documented? > + reg = <0xfffe1400 0x100>; > + big-endian; > + no-big-frame-no; > + interrupt-parent = <&periph_intc>; > + interrupts = <5>; > + status = "disabled"; > + }; > + }; > +}; > diff --git a/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts > new file mode 100644 > index 0000000..f412117 > --- /dev/null > +++ b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts > @@ -0,0 +1,46 @@ > +/dts-v1/; > + > +/include/ "bcm6358.dtsi" > + > +/ { > + compatible = "sfr,nb4-ser", "brcm,bcm6358"; Is sfr,nb4-ser documented? > + model = "SFR Neufbox 4 (Sercomm)"; > + > + memory@0 { > + device_type = "memory"; > + reg = <0x00000000 0x02000000>; > + }; > + > + chosen { > + stdout-path = &uart0; > + }; > +}; > + > +&leds0 { > + status = "ok"; > + > + led@0 { > + reg = <0>; > + active-low; > + label = "nb4-ser:white:alarm"; > + }; > + led@2 { > + reg = <2>; > + active-low; > + label = "nb4-ser:white:tv"; > + }; > + led@3 { > + reg = <3>; > + active-low; > + label = "nb4-ser:white:tel"; > + }; > + led@4 { > + reg = <4>; > + active-low; > + label = "nb4-ser:white:adsl"; > + }; > +}; > + > +&uart0 { > + status = "okay"; > +}; > -- > 2.1.4 > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/2] bmips: add BCM6358 support [not found] ` <1459757353-14683-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-04-04 8:09 ` [PATCH v4 2/2] bmips: add device tree example for BCM6358 Álvaro Fernández Rojas @ 2016-04-09 10:56 ` Álvaro Fernández Rojas 2016-04-09 10:56 ` [PATCH 2/2] bmips: add device tree example for BCM6358 Álvaro Fernández Rojas 1 sibling, 1 reply; 11+ messages in thread From: Álvaro Fernández Rojas @ 2016-04-09 10:56 UTC (permalink / raw) To: linux-mips-6z/3iImG2C8G8FEW9MqTrA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, ralf-6z/3iImG2C8G8FEW9MqTrA, f.fainelli-Re5JQEeQqe8AvxtiuMwx3w, jogo-p3rKhJxN3npAfugRpC6u6w, cernekee-Re5JQEeQqe8AvxtiuMwx3w, robh-DgEjT+Ai2ygdnm+yROfE0A, simon-A6De1vDTPLDsq35pWSNszA Cc: Álvaro Fernández Rojas BCM6358 has a shared TLB which conflicts with current SMP support, so it must be disabled for now. BCM6358 uses >= 0xfffe0000 addresses for internal registers, which need to be remapped (by using a simplified version of BRCM63xx ioremap.h). However, 0xfff80000 is a better address, since it also covers BCM3368, leaving the possibility to add it in the future. Signed-off-by: Álvaro Fernández Rojas <noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- v5: no changes, resend v4: no changes, resend v3: Use a hardcoded constant for is_bmips_internal_registers (BCM3368 base address) v2: Use a different approach for remapping internal registers arch/mips/bmips/setup.c | 10 +++++++++ arch/mips/include/asm/mach-bmips/ioremap.h | 33 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 arch/mips/include/asm/mach-bmips/ioremap.h diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c index 3553528..38b5bd5 100644 --- a/arch/mips/bmips/setup.c +++ b/arch/mips/bmips/setup.c @@ -95,6 +95,15 @@ static void bcm6328_quirks(void) bcm63xx_fixup_cpu1(); } +static void bcm6358_quirks(void) +{ + /* + * BCM6358 needs special handling for its shared TLB, so + * disable SMP for now + */ + bmips_smp_enabled = 0; +} + static void bcm6368_quirks(void) { bcm63xx_fixup_cpu1(); @@ -104,6 +113,7 @@ static const struct bmips_quirk bmips_quirk_list[] = { { "brcm,bcm3384-viper", &bcm3384_viper_quirks }, { "brcm,bcm33843-viper", &bcm3384_viper_quirks }, { "brcm,bcm6328", &bcm6328_quirks }, + { "brcm,bcm6358", &bcm6358_quirks }, { "brcm,bcm6368", &bcm6368_quirks }, { "brcm,bcm63168", &bcm6368_quirks }, { }, diff --git a/arch/mips/include/asm/mach-bmips/ioremap.h b/arch/mips/include/asm/mach-bmips/ioremap.h new file mode 100644 index 0000000..29c7a7b --- /dev/null +++ b/arch/mips/include/asm/mach-bmips/ioremap.h @@ -0,0 +1,33 @@ +#ifndef __ASM_MACH_BMIPS_IOREMAP_H +#define __ASM_MACH_BMIPS_IOREMAP_H + +#include <linux/types.h> + +static inline phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, phys_addr_t size) +{ + return phys_addr; +} + +static inline int is_bmips_internal_registers(phys_addr_t offset) +{ + if (offset >= 0xfff80000) + return 1; + + return 0; +} + +static inline void __iomem *plat_ioremap(phys_addr_t offset, unsigned long size, + unsigned long flags) +{ + if (is_bmips_internal_registers(offset)) + return (void __iomem *)offset; + + return NULL; +} + +static inline int plat_iounmap(const volatile void __iomem *addr) +{ + return is_bmips_internal_registers((unsigned long)addr); +} + +#endif /* __ASM_MACH_BMIPS_IOREMAP_H */ -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/2] bmips: add device tree example for BCM6358 2016-04-09 10:56 ` [PATCH 1/2] bmips: add BCM6358 support Álvaro Fernández Rojas @ 2016-04-09 10:56 ` Álvaro Fernández Rojas [not found] ` <1460199408-18738-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 11+ messages in thread From: Álvaro Fernández Rojas @ 2016-04-09 10:56 UTC (permalink / raw) To: linux-mips, linux-kernel, devicetree, ralf, f.fainelli, jogo, cernekee, robh, simon Cc: Álvaro Fernández Rojas This adds a device tree example for SFR Neufbox4 (Sercomm version), which also serves as a real example for brcm,bcm6358-leds. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --- v5: more device tree improvements - There is just ohci/ehci node. - Avoid using underscores in node names. - Use interrupt-controller for cpu_intc. - Rename uart aliases to serial. v4: Device tree improvements: - Switch to native-endian for syscon. - Switch to bcm6345-l1-intc interrupt controller. - Add ehci and ohci nodes. v3: Device tree fixes - Use interrupt-controller instead of periph_intc. - Use led@# instead of naming the LEDs. v2: Remove led0 alias and use stdout-path only .../devicetree/bindings/mips/brcm/soc.txt | 2 +- arch/mips/bmips/Kconfig | 4 + arch/mips/boot/dts/brcm/Makefile | 2 + arch/mips/boot/dts/brcm/bcm6358.dtsi | 130 +++++++++++++++++++++ arch/mips/boot/dts/brcm/bcm96358nb4ser.dts | 46 ++++++++ 5 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 arch/mips/boot/dts/brcm/bcm6358.dtsi create mode 100644 arch/mips/boot/dts/brcm/bcm96358nb4ser.dts diff --git a/Documentation/devicetree/bindings/mips/brcm/soc.txt b/Documentation/devicetree/bindings/mips/brcm/soc.txt index 7bab90c..e58a4f6 100644 --- a/Documentation/devicetree/bindings/mips/brcm/soc.txt +++ b/Documentation/devicetree/bindings/mips/brcm/soc.txt @@ -4,7 +4,7 @@ Required properties: - compatible: "brcm,bcm3384", "brcm,bcm33843" "brcm,bcm3384-viper", "brcm,bcm33843-viper" - "brcm,bcm6328", "brcm,bcm6368", + "brcm,bcm6328", "brcm,bcm6358", "brcm,bcm6368", "brcm,bcm7125", "brcm,bcm7346", "brcm,bcm7358", "brcm,bcm7360", "brcm,bcm7362", "brcm,bcm7420", "brcm,bcm7425" diff --git a/arch/mips/bmips/Kconfig b/arch/mips/bmips/Kconfig index e2c4fd6..264328d 100644 --- a/arch/mips/bmips/Kconfig +++ b/arch/mips/bmips/Kconfig @@ -21,6 +21,10 @@ config DT_BCM93384WVG_VIPER bool "BCM93384WVG Viper CPU (EXPERIMENTAL)" select BUILTIN_DTB +config DT_BCM96358NB4SER + bool "BCM96358NB4SER" + select BUILTIN_DTB + config DT_BCM96368MVWG bool "BCM96368MVWG" select BUILTIN_DTB diff --git a/arch/mips/boot/dts/brcm/Makefile b/arch/mips/boot/dts/brcm/Makefile index eabeb60..fda9d38 100644 --- a/arch/mips/boot/dts/brcm/Makefile +++ b/arch/mips/boot/dts/brcm/Makefile @@ -1,5 +1,6 @@ dtb-$(CONFIG_DT_BCM93384WVG) += bcm93384wvg.dtb dtb-$(CONFIG_DT_BCM93384WVG_VIPER) += bcm93384wvg_viper.dtb +dtb-$(CONFIG_DT_BCM96358NB4SER) += bcm96358nb4ser.dtb dtb-$(CONFIG_DT_BCM96368MVWG) += bcm96368mvwg.dtb dtb-$(CONFIG_DT_BCM9EJTAGPRB) += bcm9ejtagprb.dtb dtb-$(CONFIG_DT_BCM97125CBMB) += bcm97125cbmb.dtb @@ -14,6 +15,7 @@ dtb-$(CONFIG_DT_BCM97435SVMB) += bcm97435svmb.dtb dtb-$(CONFIG_DT_NONE) += \ bcm93384wvg.dtb \ bcm93384wvg_viper.dtb \ + bcm96358nb4ser.dtb \ bcm96368mvwg.dtb \ bcm9ejtagprb.dtb \ bcm97125cbmb.dtb \ diff --git a/arch/mips/boot/dts/brcm/bcm6358.dtsi b/arch/mips/boot/dts/brcm/bcm6358.dtsi new file mode 100644 index 0000000..f9d8d39 --- /dev/null +++ b/arch/mips/boot/dts/brcm/bcm6358.dtsi @@ -0,0 +1,130 @@ +/ { + #address-cells = <1>; + #size-cells = <1>; + compatible = "brcm,bcm6358"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + mips-hpt-frequency = <150000000>; + + cpu@0 { + compatible = "brcm,bmips4350"; + device_type = "cpu"; + reg = <0>; + }; + + cpu@1 { + compatible = "brcm,bmips4350"; + device_type = "cpu"; + reg = <1>; + }; + }; + + clocks { + periph_clk: periph-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + aliases { + serial0 = &uart0; + serial1 = &uart1; + }; + + cpu_intc: interrupt-controller { + #address-cells = <0>; + compatible = "mti,cpu-interrupt-controller"; + + interrupt-controller; + #interrupt-cells = <1>; + }; + + ubus { + #address-cells = <1>; + #size-cells = <1>; + + compatible = "simple-bus"; + ranges; + + periph_cntl: syscon@fffe0000 { + compatible = "syscon"; + reg = <0xfffe0000 0xc>; + native-endian; + }; + + reboot: syscon-reboot@fffe0008 { + compatible = "syscon-reboot"; + regmap = <&periph_cntl>; + offset = <0x8>; + mask = <0x1>; + }; + + periph_intc: interrupt-controller@fffe000c { + compatible = "brcm,bcm6345-l1-intc"; + reg = <0xfffe000c 0x8>, + <0xfffe0038 0x8>; + + interrupt-controller; + #interrupt-cells = <1>; + + interrupt-parent = <&cpu_intc>; + interrupts = <2>, <3>; + }; + + leds0: led-controller@fffe00d0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "brcm,bcm6358-leds"; + reg = <0xfffe00d0 0x8>; + + status = "disabled"; + }; + + uart0: serial@fffe0100 { + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe0100 0x18>; + + interrupt-parent = <&periph_intc>; + interrupts = <2>; + + clocks = <&periph_clk>; + + status = "disabled"; + }; + + uart1: serial@fffe0120 { + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe0120 0x18>; + + interrupt-parent = <&periph_intc>; + interrupts = <3>; + + clocks = <&periph_clk>; + + status = "disabled"; + }; + + ehci: usb@fffe1300 { + compatible = "brcm,bcm6358-ehci", "generic-ehci"; + reg = <0xfffe1300 0x100>; + big-endian; + interrupt-parent = <&periph_intc>; + interrupts = <10>; + status = "disabled"; + }; + + ohci: usb@fffe1400 { + compatible = "brcm,bcm6358-ohci", "generic-ohci"; + reg = <0xfffe1400 0x100>; + big-endian; + no-big-frame-no; + interrupt-parent = <&periph_intc>; + interrupts = <5>; + status = "disabled"; + }; + }; +}; diff --git a/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts new file mode 100644 index 0000000..f412117 --- /dev/null +++ b/arch/mips/boot/dts/brcm/bcm96358nb4ser.dts @@ -0,0 +1,46 @@ +/dts-v1/; + +/include/ "bcm6358.dtsi" + +/ { + compatible = "sfr,nb4-ser", "brcm,bcm6358"; + model = "SFR Neufbox 4 (Sercomm)"; + + memory@0 { + device_type = "memory"; + reg = <0x00000000 0x02000000>; + }; + + chosen { + stdout-path = &uart0; + }; +}; + +&leds0 { + status = "ok"; + + led@0 { + reg = <0>; + active-low; + label = "nb4-ser:white:alarm"; + }; + led@2 { + reg = <2>; + active-low; + label = "nb4-ser:white:tv"; + }; + led@3 { + reg = <3>; + active-low; + label = "nb4-ser:white:tel"; + }; + led@4 { + reg = <4>; + active-low; + label = "nb4-ser:white:adsl"; + }; +}; + +&uart0 { + status = "okay"; +}; -- 2.1.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <1460199408-18738-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH 2/2] bmips: add device tree example for BCM6358 [not found] ` <1460199408-18738-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> @ 2016-04-11 19:33 ` Rob Herring 0 siblings, 0 replies; 11+ messages in thread From: Rob Herring @ 2016-04-11 19:33 UTC (permalink / raw) To: Álvaro Fernández Rojas Cc: linux-mips-6z/3iImG2C8G8FEW9MqTrA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, ralf-6z/3iImG2C8G8FEW9MqTrA, f.fainelli-Re5JQEeQqe8AvxtiuMwx3w, jogo-p3rKhJxN3npAfugRpC6u6w, cernekee-Re5JQEeQqe8AvxtiuMwx3w, simon-A6De1vDTPLDsq35pWSNszA On Sat, Apr 09, 2016 at 12:56:48PM +0200, Álvaro Fernández Rojas wrote: > This adds a device tree example for SFR Neufbox4 (Sercomm version), which > also serves as a real example for brcm,bcm6358-leds. > > Signed-off-by: Álvaro Fernández Rojas <noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > --- > v5: more device tree improvements > - There is just ohci/ehci node. > - Avoid using underscores in node names. > - Use interrupt-controller for cpu_intc. > - Rename uart aliases to serial. > v4: Device tree improvements: > - Switch to native-endian for syscon. > - Switch to bcm6345-l1-intc interrupt controller. > - Add ehci and ohci nodes. > v3: Device tree fixes > - Use interrupt-controller instead of periph_intc. > - Use led@# instead of naming the LEDs. > v2: Remove led0 alias and use stdout-path only > > .../devicetree/bindings/mips/brcm/soc.txt | 2 +- > arch/mips/bmips/Kconfig | 4 + > arch/mips/boot/dts/brcm/Makefile | 2 + > arch/mips/boot/dts/brcm/bcm6358.dtsi | 130 +++++++++++++++++++++ > arch/mips/boot/dts/brcm/bcm96358nb4ser.dts | 46 ++++++++ > 5 files changed, 183 insertions(+), 1 deletion(-) > create mode 100644 arch/mips/boot/dts/brcm/bcm6358.dtsi > create mode 100644 arch/mips/boot/dts/brcm/bcm96358nb4ser.dts Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-04-11 19:33 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-02-21 11:41 [PATCH v2 1/2] bmips: add BCM6358 support Álvaro Fernández Rojas [not found] ` <1456054881-26787-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-03-03 20:09 ` Florian Fainelli 2016-04-03 9:56 ` [PATCH v3 " Álvaro Fernández Rojas [not found] ` <1459677376-10449-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-04-03 9:56 ` [PATCH v3 2/2] bmips: add device tree example for BCM6358 Álvaro Fernández Rojas 2016-04-04 5:16 ` Rob Herring 2016-04-04 8:09 ` [PATCH v4 1/2] bmips: add BCM6358 support Álvaro Fernández Rojas [not found] ` <1459757353-14683-1-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-04-04 8:09 ` [PATCH v4 2/2] bmips: add device tree example for BCM6358 Álvaro Fernández Rojas [not found] ` <1459757353-14683-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-04-07 17:57 ` Rob Herring 2016-04-09 10:56 ` [PATCH 1/2] bmips: add BCM6358 support Álvaro Fernández Rojas 2016-04-09 10:56 ` [PATCH 2/2] bmips: add device tree example for BCM6358 Álvaro Fernández Rojas [not found] ` <1460199408-18738-2-git-send-email-noltari-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2016-04-11 19:33 ` Rob Herring
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).