Commit 9125f19b authored by Purna Chandra Mandal's avatar Purna Chandra Mandal Committed by Ralf Baechle

MIPS: dts: pic32: Update dts to reflect new PIC32MZDA clk binding

- now clock nodes definition is merged with core .dtsi file
- only one rootclk is now part of DT
- clock clients also updated based on new binding doc
Signed-off-by: default avatarPurna Chandra Mandal <purna.mandal@microchip.com>
Signed-off-by: default avatarJoshua Henderson <joshua.henderson@microchip.com>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Kumar Gala <galak@codeaurora.org>
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Pawel Moll <pawel.moll@arm.com>
Cc: Sandeep Sheriker <sandeepsheriker.mallikarjun@microchip.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: linux-kernel@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: linux-clk@vger.kernel.org
Cc: devicetree@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/13248/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent ce6e1188
/*
* Device Tree Source for PIC32MZDA clock data
*
* Purna Chandra Mandal <purna.mandal@microchip.com>
* Copyright (C) 2015 Microchip Technology Inc. All rights reserved.
*
* Licensed under GPLv2 or later.
*/
/* all fixed rate clocks */
/ {
POSC:posc_clk { /* On-chip primary oscillator */
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
};
FRC:frc_clk { /* internal FRC oscillator */
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <8000000>;
};
BFRC:bfrc_clk { /* internal backup FRC oscillator */
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <8000000>;
};
LPRC:lprc_clk { /* internal low-power FRC oscillator */
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32000>;
};
/* UPLL provides clock to USBCORE */
UPLL:usb_phy_clk {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
clock-output-names = "usbphy_clk";
};
TxCKI:txcki_clk { /* external clock input on TxCLKI pin */
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <4000000>;
status = "disabled";
};
/* external clock input on REFCLKIx pin */
REFIx:refix_clk {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
status = "disabled";
};
/* PIC32 specific clks */
pic32_clktree {
#address-cells = <1>;
#size-cells = <1>;
reg = <0x1f801200 0x200>;
compatible = "microchip,pic32mzda-clk";
ranges = <0 0x1f801200 0x200>;
/* secondary oscillator; external input on SOSCI pin */
SOSC:sosc_clk@0 {
#clock-cells = <0>;
compatible = "microchip,pic32mzda-sosc";
clock-frequency = <32768>;
reg = <0x000 0x10>, /* enable reg */
<0x1d0 0x10>; /* status reg */
microchip,bit-mask = <0x02>; /* enable mask */
microchip,status-bit-mask = <0x10>; /* status-mask*/
};
FRCDIV:frcdiv_clk {
#clock-cells = <0>;
compatible = "microchip,pic32mzda-frcdivclk";
clocks = <&FRC>;
clock-output-names = "frcdiv_clk";
};
/* System PLL clock */
SYSPLL:spll_clk@020 {
#clock-cells = <0>;
compatible = "microchip,pic32mzda-syspll";
reg = <0x020 0x10>, /* SPLL register */
<0x1d0 0x10>; /* CLKSTAT register */
clocks = <&POSC>, <&FRC>;
clock-output-names = "sys_pll";
microchip,status-bit-mask = <0x80>; /* SPLLRDY */
};
/* system clock; mux with postdiv & slew */
SYSCLK:sys_clk@1c0 {
#clock-cells = <0>;
compatible = "microchip,pic32mzda-sysclk-v2";
reg = <0x1c0 0x04>; /* SLEWCON */
clocks = <&FRCDIV>, <&SYSPLL>, <&POSC>, <&SOSC>,
<&LPRC>, <&FRCDIV>;
microchip,clock-indices = <0>, <1>, <2>, <4>,
<5>, <7>;
clock-output-names = "sys_clk";
};
/* Peripheral bus1 clock */
PBCLK1:pb1_clk@140 {
reg = <0x140 0x10>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-pbclk";
clocks = <&SYSCLK>;
clock-output-names = "pb1_clk";
/* used by system modules, not gateable */
microchip,ignore-unused;
};
/* Peripheral bus2 clock */
PBCLK2:pb2_clk@150 {
reg = <0x150 0x10>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-pbclk";
clocks = <&SYSCLK>;
clock-output-names = "pb2_clk";
/* avoid gating even if unused */
microchip,ignore-unused;
};
/* Peripheral bus3 clock */
PBCLK3:pb3_clk@160 {
reg = <0x160 0x10>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-pbclk";
clocks = <&SYSCLK>;
clock-output-names = "pb3_clk";
};
/* Peripheral bus4 clock(I/O ports, GPIO) */
PBCLK4:pb4_clk@170 {
reg = <0x170 0x10>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-pbclk";
clocks = <&SYSCLK>;
clock-output-names = "pb4_clk";
};
/* Peripheral bus clock */
PBCLK5:pb5_clk@180 {
reg = <0x180 0x10>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-pbclk";
clocks = <&SYSCLK>;
clock-output-names = "pb5_clk";
};
/* Peripheral Bus6 clock; */
PBCLK6:pb6_clk@190 {
reg = <0x190 0x10>;
compatible = "microchip,pic32mzda-pbclk";
clocks = <&SYSCLK>;
#clock-cells = <0>;
};
/* Peripheral bus7 clock */
PBCLK7:pb7_clk@1a0 {
reg = <0x1a0 0x10>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-pbclk";
/* CPU is driven by this clock; so named */
clock-output-names = "cpu_clk";
clocks = <&SYSCLK>;
};
/* Reference Oscillator clock for SPI/I2S */
REFCLKO1:refo1_clk@80 {
reg = <0x080 0x20>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-refoclk";
clocks = <&SYSCLK>, <&PBCLK1>, <&POSC>, <&FRC>, <&LPRC>,
<&SOSC>, <&SYSPLL>, <&REFIx>, <&BFRC>;
microchip,clock-indices = <0>, <1>, <2>, <3>, <4>,
<5>, <7>, <8>, <9>;
clock-output-names = "refo1_clk";
};
/* Reference Oscillator clock for SQI */
REFCLKO2:refo2_clk@a0 {
reg = <0x0a0 0x20>;
#clock-cells = <0>;
compatible = "microchip,pic32mzda-refoclk";
clocks = <&SYSCLK>, <&PBCLK1>, <&POSC>, <&FRC>, <&LPRC>,
<&SOSC>, <&SYSPLL>, <&REFIx>, <&BFRC>;
microchip,clock-indices = <0>, <1>, <2>, <3>, <4>,
<5>, <7>, <8>, <9>;
clock-output-names = "refo2_clk";
};
/* Reference Oscillator clock, ADC */
REFCLKO3:refo3_clk@c0 {
reg = <0x0c0 0x20>;
compatible = "microchip,pic32mzda-refoclk";
clocks = <&SYSCLK>, <&PBCLK1>, <&POSC>, <&FRC>, <&LPRC>,
<&SOSC>, <&SYSPLL>, <&REFIx>, <&BFRC>;
microchip,clock-indices = <0>, <1>, <2>, <3>, <4>,
<5>, <7>, <8>, <9>;
#clock-cells = <0>;
clock-output-names = "refo3_clk";
};
/* Reference Oscillator clock */
REFCLKO4:refo4_clk@e0 {
reg = <0x0e0 0x20>;
compatible = "microchip,pic32mzda-refoclk";
clocks = <&SYSCLK>, <&PBCLK1>, <&POSC>, <&FRC>, <&LPRC>,
<&SOSC>, <&SYSPLL>, <&REFIx>, <&BFRC>;
microchip,clock-indices = <0>, <1>, <2>, <3>, <4>,
<5>, <7>, <8>, <9>;
#clock-cells = <0>;
clock-output-names = "refo4_clk";
};
/* Reference Oscillator clock, LCD */
REFCLKO5:refo5_clk@100 {
reg = <0x100 0x20>;
compatible = "microchip,pic32mzda-refoclk";
clocks = <&SYSCLK>,<&PBCLK1>,<&POSC>,<&FRC>,<&LPRC>,
<&SOSC>,<&SYSPLL>,<&REFIx>,<&BFRC>;
microchip,clock-indices = <0>, <1>, <2>, <3>, <4>,
<5>, <7>, <8>, <9>;
#clock-cells = <0>;
clock-output-names = "refo5_clk";
};
};
};
...@@ -6,11 +6,9 @@ ...@@ -6,11 +6,9 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
* *
*/ */
#include <dt-bindings/clock/microchip,pic32-clock.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
#include "pic32mzda-clk.dtsi"
/ { / {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -50,6 +48,29 @@ soc { ...@@ -50,6 +48,29 @@ soc {
interrupts = <0 IRQ_TYPE_EDGE_RISING>; interrupts = <0 IRQ_TYPE_EDGE_RISING>;
}; };
/* external clock input on TxCLKI pin */
txcki: txcki_clk {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <4000000>;
status = "disabled";
};
/* external input on REFCLKIx pin */
refix: refix_clk {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24000000>;
status = "disabled";
};
rootclk: clock-controller@1f801200 {
compatible = "microchip,pic32mzda-clk";
reg = <0x1f801200 0x200>;
#clock-cells = <1>;
microchip,pic32mzda-sosc;
};
evic: interrupt-controller@1f810000 { evic: interrupt-controller@1f810000 {
compatible = "microchip,pic32mzda-evic"; compatible = "microchip,pic32mzda-evic";
interrupt-controller; interrupt-controller;
...@@ -63,7 +84,7 @@ pic32_pinctrl: pinctrl@1f801400{ ...@@ -63,7 +84,7 @@ pic32_pinctrl: pinctrl@1f801400{
#size-cells = <1>; #size-cells = <1>;
compatible = "microchip,pic32mzda-pinctrl"; compatible = "microchip,pic32mzda-pinctrl";
reg = <0x1f801400 0x400>; reg = <0x1f801400 0x400>;
clocks = <&PBCLK1>; clocks = <&rootclk PB1CLK>;
}; };
/* PORTA */ /* PORTA */
...@@ -75,7 +96,7 @@ gpio0: gpio0@1f860000 { ...@@ -75,7 +96,7 @@ gpio0: gpio0@1f860000 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <0>; microchip,gpio-bank = <0>;
gpio-ranges = <&pic32_pinctrl 0 0 16>; gpio-ranges = <&pic32_pinctrl 0 0 16>;
}; };
...@@ -89,7 +110,7 @@ gpio1: gpio1@1f860100 { ...@@ -89,7 +110,7 @@ gpio1: gpio1@1f860100 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <1>; microchip,gpio-bank = <1>;
gpio-ranges = <&pic32_pinctrl 0 16 16>; gpio-ranges = <&pic32_pinctrl 0 16 16>;
}; };
...@@ -103,7 +124,7 @@ gpio2: gpio2@1f860200 { ...@@ -103,7 +124,7 @@ gpio2: gpio2@1f860200 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <2>; microchip,gpio-bank = <2>;
gpio-ranges = <&pic32_pinctrl 0 32 16>; gpio-ranges = <&pic32_pinctrl 0 32 16>;
}; };
...@@ -117,7 +138,7 @@ gpio3: gpio3@1f860300 { ...@@ -117,7 +138,7 @@ gpio3: gpio3@1f860300 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <3>; microchip,gpio-bank = <3>;
gpio-ranges = <&pic32_pinctrl 0 48 16>; gpio-ranges = <&pic32_pinctrl 0 48 16>;
}; };
...@@ -131,7 +152,7 @@ gpio4: gpio4@1f860400 { ...@@ -131,7 +152,7 @@ gpio4: gpio4@1f860400 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <4>; microchip,gpio-bank = <4>;
gpio-ranges = <&pic32_pinctrl 0 64 16>; gpio-ranges = <&pic32_pinctrl 0 64 16>;
}; };
...@@ -145,7 +166,7 @@ gpio5: gpio5@1f860500 { ...@@ -145,7 +166,7 @@ gpio5: gpio5@1f860500 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <5>; microchip,gpio-bank = <5>;
gpio-ranges = <&pic32_pinctrl 0 80 16>; gpio-ranges = <&pic32_pinctrl 0 80 16>;
}; };
...@@ -159,7 +180,7 @@ gpio6: gpio6@1f860600 { ...@@ -159,7 +180,7 @@ gpio6: gpio6@1f860600 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <6>; microchip,gpio-bank = <6>;
gpio-ranges = <&pic32_pinctrl 0 96 16>; gpio-ranges = <&pic32_pinctrl 0 96 16>;
}; };
...@@ -173,7 +194,7 @@ gpio7: gpio7@1f860700 { ...@@ -173,7 +194,7 @@ gpio7: gpio7@1f860700 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <7>; microchip,gpio-bank = <7>;
gpio-ranges = <&pic32_pinctrl 0 112 16>; gpio-ranges = <&pic32_pinctrl 0 112 16>;
}; };
...@@ -189,7 +210,7 @@ gpio8: gpio8@1f860800 { ...@@ -189,7 +210,7 @@ gpio8: gpio8@1f860800 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <8>; microchip,gpio-bank = <8>;
gpio-ranges = <&pic32_pinctrl 0 128 16>; gpio-ranges = <&pic32_pinctrl 0 128 16>;
}; };
...@@ -203,7 +224,7 @@ gpio9: gpio9@1f860900 { ...@@ -203,7 +224,7 @@ gpio9: gpio9@1f860900 {
gpio-controller; gpio-controller;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&PBCLK4>; clocks = <&rootclk PB4CLK>;
microchip,gpio-bank = <9>; microchip,gpio-bank = <9>;
gpio-ranges = <&pic32_pinctrl 0 144 16>; gpio-ranges = <&pic32_pinctrl 0 144 16>;
}; };
...@@ -212,7 +233,7 @@ sdhci: sdhci@1f8ec000 { ...@@ -212,7 +233,7 @@ sdhci: sdhci@1f8ec000 {
compatible = "microchip,pic32mzda-sdhci"; compatible = "microchip,pic32mzda-sdhci";
reg = <0x1f8ec000 0x100>; reg = <0x1f8ec000 0x100>;
interrupts = <191 IRQ_TYPE_LEVEL_HIGH>; interrupts = <191 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&REFCLKO4>, <&PBCLK5>; clocks = <&rootclk REF4CLK>, <&rootclk PB5CLK>;
clock-names = "base_clk", "sys_clk"; clock-names = "base_clk", "sys_clk";
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
...@@ -225,7 +246,7 @@ uart1: serial@1f822000 { ...@@ -225,7 +246,7 @@ uart1: serial@1f822000 {
interrupts = <112 IRQ_TYPE_LEVEL_HIGH>, interrupts = <112 IRQ_TYPE_LEVEL_HIGH>,
<113 IRQ_TYPE_LEVEL_HIGH>, <113 IRQ_TYPE_LEVEL_HIGH>,
<114 IRQ_TYPE_LEVEL_HIGH>; <114 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&PBCLK2>; clocks = <&rootclk PB2CLK>;
status = "disabled"; status = "disabled";
}; };
...@@ -235,7 +256,7 @@ uart2: serial@1f822200 { ...@@ -235,7 +256,7 @@ uart2: serial@1f822200 {
interrupts = <145 IRQ_TYPE_LEVEL_HIGH>, interrupts = <145 IRQ_TYPE_LEVEL_HIGH>,
<146 IRQ_TYPE_LEVEL_HIGH>, <146 IRQ_TYPE_LEVEL_HIGH>,
<147 IRQ_TYPE_LEVEL_HIGH>; <147 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&PBCLK2>; clocks = <&rootclk PB2CLK>;
status = "disabled"; status = "disabled";
}; };
...@@ -245,7 +266,7 @@ uart3: serial@1f822400 { ...@@ -245,7 +266,7 @@ uart3: serial@1f822400 {
interrupts = <157 IRQ_TYPE_LEVEL_HIGH>, interrupts = <157 IRQ_TYPE_LEVEL_HIGH>,
<158 IRQ_TYPE_LEVEL_HIGH>, <158 IRQ_TYPE_LEVEL_HIGH>,
<159 IRQ_TYPE_LEVEL_HIGH>; <159 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&PBCLK2>; clocks = <&rootclk PB2CLK>;
status = "disabled"; status = "disabled";
}; };
...@@ -255,7 +276,7 @@ uart4: serial@1f822600 { ...@@ -255,7 +276,7 @@ uart4: serial@1f822600 {
interrupts = <170 IRQ_TYPE_LEVEL_HIGH>, interrupts = <170 IRQ_TYPE_LEVEL_HIGH>,
<171 IRQ_TYPE_LEVEL_HIGH>, <171 IRQ_TYPE_LEVEL_HIGH>,
<172 IRQ_TYPE_LEVEL_HIGH>; <172 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&PBCLK2>; clocks = <&rootclk PB2CLK>;
status = "disabled"; status = "disabled";
}; };
...@@ -265,7 +286,7 @@ uart5: serial@1f822800 { ...@@ -265,7 +286,7 @@ uart5: serial@1f822800 {
interrupts = <179 IRQ_TYPE_LEVEL_HIGH>, interrupts = <179 IRQ_TYPE_LEVEL_HIGH>,
<180 IRQ_TYPE_LEVEL_HIGH>, <180 IRQ_TYPE_LEVEL_HIGH>,
<181 IRQ_TYPE_LEVEL_HIGH>; <181 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&PBCLK2>; clocks = <&rootclk PB2CLK>;
status = "disabled"; status = "disabled";
}; };
...@@ -275,7 +296,7 @@ uart6: serial@1f822A00 { ...@@ -275,7 +296,7 @@ uart6: serial@1f822A00 {
interrupts = <188 IRQ_TYPE_LEVEL_HIGH>, interrupts = <188 IRQ_TYPE_LEVEL_HIGH>,
<189 IRQ_TYPE_LEVEL_HIGH>, <189 IRQ_TYPE_LEVEL_HIGH>,
<190 IRQ_TYPE_LEVEL_HIGH>; <190 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&PBCLK2>; clocks = <&rootclk PB2CLK>;
status = "disabled"; status = "disabled";
}; };
}; };
...@@ -95,8 +95,9 @@ &sdhci { ...@@ -95,8 +95,9 @@ &sdhci {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sdhc1>; pinctrl-0 = <&pinctrl_sdhc1>;
status = "okay"; status = "okay";
assigned-clocks = <&REFCLKO2>,<&REFCLKO4>,<&REFCLKO5>; assigned-clocks = <&rootclk REF2CLK>, <&rootclk REF4CLK>,
assigned-clock-rates = <50000000>,<25000000>,<40000000>; <&rootclk REF5CLK>;
assigned-clock-rates = <50000000>, <25000000>, <40000000>;
}; };
&pic32_pinctrl { &pic32_pinctrl {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment