From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932459AbaIWVPs (ORCPT ); Tue, 23 Sep 2014 17:15:48 -0400 Received: from mail-gw1-out.broadcom.com ([216.31.210.62]:36388 "EHLO mail-gw1-out.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756915AbaIWVPk (ORCPT ); Tue, 23 Sep 2014 17:15:40 -0400 X-IronPort-AV: E=Sophos;i="5.04,582,1406617200"; d="scan'208";a="46807884" From: Jonathan Richardson To: Christian Daudt , Matt Porter , Russell King , Mike Turquette , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , JD Zheng CC: , , , , Scott Branden , Ray Jui , Jonathan Richardson Subject: [PATCH v2 4/6] ARM: dts: Enable Broadcom Cygnus SoC Date: Tue, 23 Sep 2014 14:17:35 -0700 Message-ID: <1411507057-14771-5-git-send-email-jonathar@broadcom.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1411507057-14771-1-git-send-email-jonathar@broadcom.com> References: <1411507057-14771-1-git-send-email-jonathar@broadcom.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DT files to enable cygnus consisting of the enterprise phone board variant and cygnus core configuration. Reviewed-by: Ray Jui Reviewed-by: Arun Parameswaran Reviewed-by: Scott Branden Tested-by: Jonathan Richardson Reviewed-by: JD (Jiandong) Zheng Signed-off-by: Jonathan Richardson --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/bcm-cygnus.dtsi | 349 ++++++++++++++++++++++++++++++++ arch/arm/boot/dts/bcm911360_entphn.dts | 22 ++ 3 files changed, 372 insertions(+) create mode 100644 arch/arm/boot/dts/bcm-cygnus.dtsi create mode 100644 arch/arm/boot/dts/bcm911360_entphn.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index b8c5cd3..b95d41d 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -52,6 +52,7 @@ dtb-$(CONFIG_ARCH_AT91) += sama5d36ek.dtb dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb +dtb-$(CONFIG_ARCH_BCM_CYGNUS) += bcm911360_entphn.dtb dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ bcm21664-garnet.dtb diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi new file mode 100644 index 0000000..81da0d8 --- /dev/null +++ b/arch/arm/boot/dts/bcm-cygnus.dtsi @@ -0,0 +1,349 @@ +/* + * Copyright 2014 Broadcom Corporation. All rights reserved. + * + * Unless you and Broadcom execute a separate written software license + * agreement governing use of this software, this software is licensed to you + * under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include + +#include "skeleton.dtsi" + +/ { + compatible = "brcm,cygnus"; + model = "Broadcom Cygnus SoC"; + interrupt-parent = <&gic>; + + aliases { + serial0 = &uart3; + serial1 = &uart0; + }; + + chosen { + bootargs = "console=ttyS0,115200 earlyprintk debug"; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + next-level-cache = <&L2>; + reg = <0x0>; + }; + }; + + clocks { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + osc: oscillator { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <25000000>; + }; + + lcpll: lcpll@0301d02c { + #clock-cells = <0>; + compatible = "brcm,cygnus-lcpll-clk"; + reg = <0x0301d02c 0x1c>; + clocks = <&osc>; + }; + + genpll: genpll@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-clk"; + reg = <0x0301d000 0x2c>, + <0x180AA024 0x4>, + <0x0301C020 0x4>; + clocks = <&osc>; + }; + + axi21_clk: genpll_ch0@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <0>; + }; + + clk_25MHz: genpll_ch1@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <1>; + }; + + sys_clk: genpll_ch2@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <2>; + }; + + ethernet_clk: genpll_ch3@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <3>; + }; + + asiu_audio_clk: genpll_ch4@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <4>; + }; + + asiu_can_clk: genpll_ch5@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <5>; + }; + + pcie_clk: lcpll_ch0@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <0>; + }; + + ddr_clk: lcpll_ch1@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <1>; + }; + + sdio_clk: lcpll_ch2@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <2>; + }; + + usb_clk: lcpll_ch3@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <3>; + }; + + smart_card_clk: lcpll_ch4@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <4>; + }; + + ch5_unknown_clk: lcpll_ch5@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <5>; + }; + + /* + * There are 2 clocks derived from genpll ch0 (axi21) which are + * divided internally by 2 and 4. If axi21 clock rate changes, these + * derived clock rates scale accordingly. + */ + + axi41_clk: axi41_clk { + reg = <0x0301d000 0x2c>; + #clock-cells = <0>; + compatible = "brcm,cygnus-pll-derived"; + clocks = <&axi21_clk>; + div = <2>; + }; + + axi81_clk: axi81_clk { + reg = <0x0301d000 0x2c>; + #clock-cells = <0>; + compatible = "brcm,cygnus-pll-derived"; + clocks = <&axi21_clk>; + div = <4>; + }; + + /* + * The main output of the ARM PLL is arm_clk with several derived + * child clocks: + * periph_clk + * apb_clk + * arm_switch + * apb0_free + */ + a9pll: arm_clk@19000000 { + compatible = "brcm,iproc-arm-a9pll"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&osc>; + }; + + periph_clk: periph_clk@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <3>; + }; + + apb0_free: apb0_free@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <0>; + }; + + arm_switch: arm_switch@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <1>; + }; + + apb_clk: apb_clk@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <2>; + }; + + /* + * Clocks derived from oscillator. + */ + keypad_clk: keypad_clk@0301D048 { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D048 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <0>; + div = <392>; + }; + + adc_clk: adc_clk@0301D04C { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D04C 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <1>; + }; + + pwm_clk: pwm_clk@0301D050 { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D050 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <2>; + }; + + mipipll: mipipll@180a9800 { + #clock-cells = <0>; + compatible = "brcm,cygnus-mipipll-clk"; + reg = <0x180a9800 0x2c>, + top_clk_gating_ctrl: <0x180AA024 0x4>, + crmu_pll_aon_ctrl: <0x0301C020 0x4>; + clocks = <&osc>; + }; + + lcd_clk: mipipll_ch1@180a9800 { + #clock-cells = <0>; + compatible = "brcm,cygnus-mipipll-ch"; + reg = <0x180a9800 0x2c>, + <0x180AA024 0x4>; + clocks = <&mipipll>; + channel = <1>; + }; + }; + + amba { + #address-cells = <1>; + #size-cells = <1>; + compatible = "arm,amba-bus", "simple-bus"; + interrupt-parent = <&gic>; + ranges; + + wdt@18009000 { + compatible = "arm,sp805" , "arm,primecell"; + reg = <0x18009000 0x1000>; + interrupts = ; + clocks = <&axi81_clk>; + clock-names = "apb_pclk"; + }; + }; + + uart3: serial@18023000 { + compatible = "snps,dw-apb-uart"; + reg = <0x18023000 0x100>; + reg-shift = <2>; + reg-io-width = <4>; + interrupts = ; + clock-frequency = <100000000>; + clocks = <&axi81_clk>; + status = "okay"; + }; + + uart0: serial@18020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x18020000 0x100>; + reg-shift = <2>; + reg-io-width = <4>; + interrupts = ; + clocks = <&axi81_clk>; + clock-frequency = <100000000>; + status = "okay"; + }; + + gic: interrupt-controller@19021000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + reg = <0x19021000 0x1000>, + <0x19020100 0x100>; + }; + + L2: l2-cache { + compatible = "arm,pl310-cache"; + reg = <0x19022000 0x1000>; + cache-unified; + cache-level = <2>; + }; + + timer@19020200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0x19020200 0x100>; + interrupts = ; + clocks = <&periph_clk>; + }; + +}; diff --git a/arch/arm/boot/dts/bcm911360_entphn.dts b/arch/arm/boot/dts/bcm911360_entphn.dts new file mode 100644 index 0000000..cee4aff --- /dev/null +++ b/arch/arm/boot/dts/bcm911360_entphn.dts @@ -0,0 +1,22 @@ +/* + * Copyright 2014 Broadcom Corporation. All rights reserved. + * + * Unless you and Broadcom execute a separate written software license + * agreement governing use of this software, this software is licensed to you + * under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +#include "bcm-cygnus.dtsi" + +/ { + model = "Cygnus Enterprise Phone (BCM911360_ENTPHN)"; + compatible = "brcm,bcm911360_entphn", "brcm,cygnus"; +}; -- 1.7.9.5 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonathan Richardson Subject: [PATCH v2 4/6] ARM: dts: Enable Broadcom Cygnus SoC Date: Tue, 23 Sep 2014 14:17:35 -0700 Message-ID: <1411507057-14771-5-git-send-email-jonathar@broadcom.com> References: <1411507057-14771-1-git-send-email-jonathar@broadcom.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <1411507057-14771-1-git-send-email-jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Christian Daudt , Matt Porter , Russell King , Mike Turquette , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , JD Zheng Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Scott Branden , Ray Jui , Jonathan Richardson List-Id: devicetree@vger.kernel.org DT files to enable cygnus consisting of the enterprise phone board variant and cygnus core configuration. Reviewed-by: Ray Jui Reviewed-by: Arun Parameswaran Reviewed-by: Scott Branden Tested-by: Jonathan Richardson Reviewed-by: JD (Jiandong) Zheng Signed-off-by: Jonathan Richardson --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/bcm-cygnus.dtsi | 349 ++++++++++++++++++++++++++++++++ arch/arm/boot/dts/bcm911360_entphn.dts | 22 ++ 3 files changed, 372 insertions(+) create mode 100644 arch/arm/boot/dts/bcm-cygnus.dtsi create mode 100644 arch/arm/boot/dts/bcm911360_entphn.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index b8c5cd3..b95d41d 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -52,6 +52,7 @@ dtb-$(CONFIG_ARCH_AT91) += sama5d36ek.dtb dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb +dtb-$(CONFIG_ARCH_BCM_CYGNUS) += bcm911360_entphn.dtb dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ bcm21664-garnet.dtb diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi new file mode 100644 index 0000000..81da0d8 --- /dev/null +++ b/arch/arm/boot/dts/bcm-cygnus.dtsi @@ -0,0 +1,349 @@ +/* + * Copyright 2014 Broadcom Corporation. All rights reserved. + * + * Unless you and Broadcom execute a separate written software license + * agreement governing use of this software, this software is licensed to you + * under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include + +#include "skeleton.dtsi" + +/ { + compatible = "brcm,cygnus"; + model = "Broadcom Cygnus SoC"; + interrupt-parent = <&gic>; + + aliases { + serial0 = &uart3; + serial1 = &uart0; + }; + + chosen { + bootargs = "console=ttyS0,115200 earlyprintk debug"; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + next-level-cache = <&L2>; + reg = <0x0>; + }; + }; + + clocks { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + osc: oscillator { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <25000000>; + }; + + lcpll: lcpll@0301d02c { + #clock-cells = <0>; + compatible = "brcm,cygnus-lcpll-clk"; + reg = <0x0301d02c 0x1c>; + clocks = <&osc>; + }; + + genpll: genpll@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-clk"; + reg = <0x0301d000 0x2c>, + <0x180AA024 0x4>, + <0x0301C020 0x4>; + clocks = <&osc>; + }; + + axi21_clk: genpll_ch0@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <0>; + }; + + clk_25MHz: genpll_ch1@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <1>; + }; + + sys_clk: genpll_ch2@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <2>; + }; + + ethernet_clk: genpll_ch3@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <3>; + }; + + asiu_audio_clk: genpll_ch4@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <4>; + }; + + asiu_can_clk: genpll_ch5@0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <5>; + }; + + pcie_clk: lcpll_ch0@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <0>; + }; + + ddr_clk: lcpll_ch1@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <1>; + }; + + sdio_clk: lcpll_ch2@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <2>; + }; + + usb_clk: lcpll_ch3@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <3>; + }; + + smart_card_clk: lcpll_ch4@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <4>; + }; + + ch5_unknown_clk: lcpll_ch5@0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <5>; + }; + + /* + * There are 2 clocks derived from genpll ch0 (axi21) which are + * divided internally by 2 and 4. If axi21 clock rate changes, these + * derived clock rates scale accordingly. + */ + + axi41_clk: axi41_clk { + reg = <0x0301d000 0x2c>; + #clock-cells = <0>; + compatible = "brcm,cygnus-pll-derived"; + clocks = <&axi21_clk>; + div = <2>; + }; + + axi81_clk: axi81_clk { + reg = <0x0301d000 0x2c>; + #clock-cells = <0>; + compatible = "brcm,cygnus-pll-derived"; + clocks = <&axi21_clk>; + div = <4>; + }; + + /* + * The main output of the ARM PLL is arm_clk with several derived + * child clocks: + * periph_clk + * apb_clk + * arm_switch + * apb0_free + */ + a9pll: arm_clk@19000000 { + compatible = "brcm,iproc-arm-a9pll"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&osc>; + }; + + periph_clk: periph_clk@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <3>; + }; + + apb0_free: apb0_free@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <0>; + }; + + arm_switch: arm_switch@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <1>; + }; + + apb_clk: apb_clk@19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <2>; + }; + + /* + * Clocks derived from oscillator. + */ + keypad_clk: keypad_clk@0301D048 { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D048 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <0>; + div = <392>; + }; + + adc_clk: adc_clk@0301D04C { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D04C 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <1>; + }; + + pwm_clk: pwm_clk@0301D050 { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D050 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <2>; + }; + + mipipll: mipipll@180a9800 { + #clock-cells = <0>; + compatible = "brcm,cygnus-mipipll-clk"; + reg = <0x180a9800 0x2c>, + top_clk_gating_ctrl: <0x180AA024 0x4>, + crmu_pll_aon_ctrl: <0x0301C020 0x4>; + clocks = <&osc>; + }; + + lcd_clk: mipipll_ch1@180a9800 { + #clock-cells = <0>; + compatible = "brcm,cygnus-mipipll-ch"; + reg = <0x180a9800 0x2c>, + <0x180AA024 0x4>; + clocks = <&mipipll>; + channel = <1>; + }; + }; + + amba { + #address-cells = <1>; + #size-cells = <1>; + compatible = "arm,amba-bus", "simple-bus"; + interrupt-parent = <&gic>; + ranges; + + wdt@18009000 { + compatible = "arm,sp805" , "arm,primecell"; + reg = <0x18009000 0x1000>; + interrupts = ; + clocks = <&axi81_clk>; + clock-names = "apb_pclk"; + }; + }; + + uart3: serial@18023000 { + compatible = "snps,dw-apb-uart"; + reg = <0x18023000 0x100>; + reg-shift = <2>; + reg-io-width = <4>; + interrupts = ; + clock-frequency = <100000000>; + clocks = <&axi81_clk>; + status = "okay"; + }; + + uart0: serial@18020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x18020000 0x100>; + reg-shift = <2>; + reg-io-width = <4>; + interrupts = ; + clocks = <&axi81_clk>; + clock-frequency = <100000000>; + status = "okay"; + }; + + gic: interrupt-controller@19021000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + reg = <0x19021000 0x1000>, + <0x19020100 0x100>; + }; + + L2: l2-cache { + compatible = "arm,pl310-cache"; + reg = <0x19022000 0x1000>; + cache-unified; + cache-level = <2>; + }; + + timer@19020200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0x19020200 0x100>; + interrupts = ; + clocks = <&periph_clk>; + }; + +}; diff --git a/arch/arm/boot/dts/bcm911360_entphn.dts b/arch/arm/boot/dts/bcm911360_entphn.dts new file mode 100644 index 0000000..cee4aff --- /dev/null +++ b/arch/arm/boot/dts/bcm911360_entphn.dts @@ -0,0 +1,22 @@ +/* + * Copyright 2014 Broadcom Corporation. All rights reserved. + * + * Unless you and Broadcom execute a separate written software license + * agreement governing use of this software, this software is licensed to you + * under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +#include "bcm-cygnus.dtsi" + +/ { + model = "Cygnus Enterprise Phone (BCM911360_ENTPHN)"; + compatible = "brcm,bcm911360_entphn", "brcm,cygnus"; +}; -- 1.7.9.5 -- 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 From mboxrd@z Thu Jan 1 00:00:00 1970 From: jonathar@broadcom.com (Jonathan Richardson) Date: Tue, 23 Sep 2014 14:17:35 -0700 Subject: [PATCH v2 4/6] ARM: dts: Enable Broadcom Cygnus SoC In-Reply-To: <1411507057-14771-1-git-send-email-jonathar@broadcom.com> References: <1411507057-14771-1-git-send-email-jonathar@broadcom.com> Message-ID: <1411507057-14771-5-git-send-email-jonathar@broadcom.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org DT files to enable cygnus consisting of the enterprise phone board variant and cygnus core configuration. Reviewed-by: Ray Jui Reviewed-by: Arun Parameswaran Reviewed-by: Scott Branden Tested-by: Jonathan Richardson Reviewed-by: JD (Jiandong) Zheng Signed-off-by: Jonathan Richardson --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/bcm-cygnus.dtsi | 349 ++++++++++++++++++++++++++++++++ arch/arm/boot/dts/bcm911360_entphn.dts | 22 ++ 3 files changed, 372 insertions(+) create mode 100644 arch/arm/boot/dts/bcm-cygnus.dtsi create mode 100644 arch/arm/boot/dts/bcm911360_entphn.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index b8c5cd3..b95d41d 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -52,6 +52,7 @@ dtb-$(CONFIG_ARCH_AT91) += sama5d36ek.dtb dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb +dtb-$(CONFIG_ARCH_BCM_CYGNUS) += bcm911360_entphn.dtb dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ bcm21664-garnet.dtb diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi new file mode 100644 index 0000000..81da0d8 --- /dev/null +++ b/arch/arm/boot/dts/bcm-cygnus.dtsi @@ -0,0 +1,349 @@ +/* + * Copyright 2014 Broadcom Corporation. All rights reserved. + * + * Unless you and Broadcom execute a separate written software license + * agreement governing use of this software, this software is licensed to you + * under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include + +#include "skeleton.dtsi" + +/ { + compatible = "brcm,cygnus"; + model = "Broadcom Cygnus SoC"; + interrupt-parent = <&gic>; + + aliases { + serial0 = &uart3; + serial1 = &uart0; + }; + + chosen { + bootargs = "console=ttyS0,115200 earlyprintk debug"; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu at 0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + next-level-cache = <&L2>; + reg = <0x0>; + }; + }; + + clocks { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + osc: oscillator { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <25000000>; + }; + + lcpll: lcpll at 0301d02c { + #clock-cells = <0>; + compatible = "brcm,cygnus-lcpll-clk"; + reg = <0x0301d02c 0x1c>; + clocks = <&osc>; + }; + + genpll: genpll at 0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-clk"; + reg = <0x0301d000 0x2c>, + <0x180AA024 0x4>, + <0x0301C020 0x4>; + clocks = <&osc>; + }; + + axi21_clk: genpll_ch0 at 0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <0>; + }; + + clk_25MHz: genpll_ch1 at 0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <1>; + }; + + sys_clk: genpll_ch2 at 0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <2>; + }; + + ethernet_clk: genpll_ch3 at 0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <3>; + }; + + asiu_audio_clk: genpll_ch4 at 0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <4>; + }; + + asiu_can_clk: genpll_ch5 at 0301d000 { + #clock-cells = <0>; + compatible = "brcm,cygnus-genpll-ch"; + reg = <0x0301d000 0x2c>; + clocks = <&genpll>; + channel = <5>; + }; + + pcie_clk: lcpll_ch0 at 0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <0>; + }; + + ddr_clk: lcpll_ch1 at 0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <1>; + }; + + sdio_clk: lcpll_ch2 at 0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <2>; + }; + + usb_clk: lcpll_ch3 at 0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <3>; + }; + + smart_card_clk: lcpll_ch4 at 0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <4>; + }; + + ch5_unknown_clk: lcpll_ch5 at 0301d02c { + compatible = "brcm,cygnus-lcpll-ch"; + reg = <0x0301d02c 0x1c>; + #clock-cells = <0>; + clocks = <&lcpll>; + channel = <5>; + }; + + /* + * There are 2 clocks derived from genpll ch0 (axi21) which are + * divided internally by 2 and 4. If axi21 clock rate changes, these + * derived clock rates scale accordingly. + */ + + axi41_clk: axi41_clk { + reg = <0x0301d000 0x2c>; + #clock-cells = <0>; + compatible = "brcm,cygnus-pll-derived"; + clocks = <&axi21_clk>; + div = <2>; + }; + + axi81_clk: axi81_clk { + reg = <0x0301d000 0x2c>; + #clock-cells = <0>; + compatible = "brcm,cygnus-pll-derived"; + clocks = <&axi21_clk>; + div = <4>; + }; + + /* + * The main output of the ARM PLL is arm_clk with several derived + * child clocks: + * periph_clk + * apb_clk + * arm_switch + * apb0_free + */ + a9pll: arm_clk at 19000000 { + compatible = "brcm,iproc-arm-a9pll"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&osc>; + }; + + periph_clk: periph_clk at 19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <3>; + }; + + apb0_free: apb0_free at 19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <0>; + }; + + arm_switch: arm_switch at 19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <1>; + }; + + apb_clk: apb_clk at 19000000 { + compatible = "brcm,iproc-arm-ch"; + reg = <0x19000000 0x1000>; + #clock-cells = <0>; + clocks = <&a9pll>; + channel = <2>; + }; + + /* + * Clocks derived from oscillator. + */ + keypad_clk: keypad_clk at 0301D048 { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D048 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <0>; + div = <392>; + }; + + adc_clk: adc_clk at 0301D04C { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D04C 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <1>; + }; + + pwm_clk: pwm_clk at 0301D050 { + compatible = "brcm,cygnus-osc-derived"; + reg = <0x0301D050 0x4>, + <0x180AA024 0x4>; + #clock-cells = <0>; + clocks = <&osc>; + channel = <2>; + }; + + mipipll: mipipll at 180a9800 { + #clock-cells = <0>; + compatible = "brcm,cygnus-mipipll-clk"; + reg = <0x180a9800 0x2c>, + top_clk_gating_ctrl: <0x180AA024 0x4>, + crmu_pll_aon_ctrl: <0x0301C020 0x4>; + clocks = <&osc>; + }; + + lcd_clk: mipipll_ch1 at 180a9800 { + #clock-cells = <0>; + compatible = "brcm,cygnus-mipipll-ch"; + reg = <0x180a9800 0x2c>, + <0x180AA024 0x4>; + clocks = <&mipipll>; + channel = <1>; + }; + }; + + amba { + #address-cells = <1>; + #size-cells = <1>; + compatible = "arm,amba-bus", "simple-bus"; + interrupt-parent = <&gic>; + ranges; + + wdt at 18009000 { + compatible = "arm,sp805" , "arm,primecell"; + reg = <0x18009000 0x1000>; + interrupts = ; + clocks = <&axi81_clk>; + clock-names = "apb_pclk"; + }; + }; + + uart3: serial at 18023000 { + compatible = "snps,dw-apb-uart"; + reg = <0x18023000 0x100>; + reg-shift = <2>; + reg-io-width = <4>; + interrupts = ; + clock-frequency = <100000000>; + clocks = <&axi81_clk>; + status = "okay"; + }; + + uart0: serial at 18020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x18020000 0x100>; + reg-shift = <2>; + reg-io-width = <4>; + interrupts = ; + clocks = <&axi81_clk>; + clock-frequency = <100000000>; + status = "okay"; + }; + + gic: interrupt-controller at 19021000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + reg = <0x19021000 0x1000>, + <0x19020100 0x100>; + }; + + L2: l2-cache { + compatible = "arm,pl310-cache"; + reg = <0x19022000 0x1000>; + cache-unified; + cache-level = <2>; + }; + + timer at 19020200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0x19020200 0x100>; + interrupts = ; + clocks = <&periph_clk>; + }; + +}; diff --git a/arch/arm/boot/dts/bcm911360_entphn.dts b/arch/arm/boot/dts/bcm911360_entphn.dts new file mode 100644 index 0000000..cee4aff --- /dev/null +++ b/arch/arm/boot/dts/bcm911360_entphn.dts @@ -0,0 +1,22 @@ +/* + * Copyright 2014 Broadcom Corporation. All rights reserved. + * + * Unless you and Broadcom execute a separate written software license + * agreement governing use of this software, this software is licensed to you + * under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +#include "bcm-cygnus.dtsi" + +/ { + model = "Cygnus Enterprise Phone (BCM911360_ENTPHN)"; + compatible = "brcm,bcm911360_entphn", "brcm,cygnus"; +}; -- 1.7.9.5