mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
- R8A774A1 / Beacon EmbeddedWorks RZG2M Dev Kit support
This commit is contained in:
@@ -774,6 +774,7 @@ dtb-$(CONFIG_RCAR_GEN2) += \
|
||||
r8a7794-silk-u-boot.dtb
|
||||
|
||||
dtb-$(CONFIG_RCAR_GEN3) += \
|
||||
r8a774a1-beacon-rzg2m-kit.dtb \
|
||||
r8a77950-ulcb-u-boot.dtb \
|
||||
r8a77950-salvator-x-u-boot.dtb \
|
||||
r8a77960-ulcb-u-boot.dtb \
|
||||
|
597
arch/arm/dts/beacon-renesom-baseboard.dtsi
Normal file
597
arch/arm/dts/beacon-renesom-baseboard.dtsi
Normal file
@@ -0,0 +1,597 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright 2020, Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
serial0 = &scif2;
|
||||
serial1 = &hscif0;
|
||||
serial2 = &hscif1;
|
||||
serial3 = &scif0;
|
||||
serial4 = &hscif2;
|
||||
serial5 = &scif5;
|
||||
spi0 = &msiof0;
|
||||
spi1 = &msiof1;
|
||||
spi2 = &msiof2;
|
||||
spi3 = &msiof3;
|
||||
ethernet0 = &avb;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
power-supply = <®_lcd>;
|
||||
enable-gpios = <&gpio_exp1 3 GPIO_ACTIVE_HIGH>;
|
||||
pwms = <&pwm0 0 50000>;
|
||||
brightness-levels = <0 4 8 16 32 64 128 255>;
|
||||
default-brightness-level = <6>;
|
||||
};
|
||||
|
||||
hdmi0-out {
|
||||
compatible = "hdmi-connector";
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi0_con: endpoint {
|
||||
remote-endpoint = <&rcar_dw_hdmi0_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
key-1 {
|
||||
gpios = <&gpio4 6 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_1>;
|
||||
label = "Switch-1";
|
||||
wakeup-source;
|
||||
debounce-interval = <20>;
|
||||
};
|
||||
key-2 {
|
||||
gpios = <&gpio3 13 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_2>;
|
||||
label = "Switch-2";
|
||||
wakeup-source;
|
||||
debounce-interval = <20>;
|
||||
};
|
||||
key-3 {
|
||||
gpios = <&gpio5 17 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_3>;
|
||||
label = "Switch-3";
|
||||
wakeup-source;
|
||||
debounce-interval = <20>;
|
||||
};
|
||||
key-4 {
|
||||
gpios = <&gpio5 20 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_4>;
|
||||
label = "Switch-4";
|
||||
wakeup-source;
|
||||
debounce-interval = <20>;
|
||||
};
|
||||
key-5 {
|
||||
gpios = <&gpio5 22 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_5>;
|
||||
label = "Switch-4";
|
||||
wakeup-source;
|
||||
debounce-interval = <20>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&led_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
led0 {
|
||||
gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
|
||||
label = "LED0";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
led1 {
|
||||
gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
|
||||
label = "LED1";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
led2 {
|
||||
gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
||||
label = "LED2";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
led3 {
|
||||
gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>;
|
||||
label = "LED3";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
||||
reg_audio: regulator_audio {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "audio-1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
gpio = <&gpio_exp2 7 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_lcd: regulator-lcd {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "lcd_panel_pwr";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio_exp1 1 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_lcd_reset: regulator-lcd-reset {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "nLCD_RESET";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio5 3 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
vin-supply = <®_lcd>;
|
||||
};
|
||||
|
||||
reg_cam0: regulator_camera {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "reg_cam0";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
gpio = <&gpio_exp2 2 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_cam1: regulator_camera {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "reg_cam1";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
gpio = <&gpio_exp2 5 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
startup-delay-us = <100000>;
|
||||
};
|
||||
|
||||
sound_card {
|
||||
compatible = "audio-graph-card";
|
||||
label = "rcar-sound";
|
||||
dais = <&rsnd_port0>, <&rsnd_port1>;
|
||||
};
|
||||
|
||||
vccq_sdhi0: regulator-vccq-sdhi0 {
|
||||
compatible = "regulator-gpio";
|
||||
|
||||
regulator-name = "SDHI0 VccQ";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
|
||||
gpios-states = <1>;
|
||||
states = <3300000 1>, <1800000 0>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
/* External DU dot clocks */
|
||||
x302_clk: x302-clock {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <33000000>;
|
||||
};
|
||||
|
||||
x304_clk: x304-clock {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <25000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&audio_clk_a {
|
||||
clock-frequency = <22579200>;
|
||||
};
|
||||
|
||||
&audio_clk_b {
|
||||
clock-frequency = <22579200>;
|
||||
};
|
||||
|
||||
&can0 {
|
||||
pinctrl-0 = <&can0_pins>;
|
||||
pinctrl-names = "default";
|
||||
renesas,can-clock-select = <0x0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can1 {
|
||||
pinctrl-0 = <&can1_pins>;
|
||||
pinctrl-names = "default";
|
||||
renesas,can-clock-select = <0x0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&du {
|
||||
pinctrl-0 = <&du_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
clocks = <&cpg CPG_MOD 724>,
|
||||
<&cpg CPG_MOD 723>,
|
||||
<&cpg CPG_MOD 722>,
|
||||
<&versaclock5 1>,
|
||||
<&x302_clk>,
|
||||
<&versaclock5 2>;
|
||||
clock-names = "du.0", "du.1", "du.2",
|
||||
"dclkin.0", "dclkin.1", "dclkin.2";
|
||||
};
|
||||
|
||||
&ehci0 {
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&versaclock5 3>, <&versaclock6_bb 4>;
|
||||
};
|
||||
|
||||
&ehci1 {
|
||||
status = "okay";
|
||||
clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&versaclock5 4>;
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
status = "okay";
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
dw_hdmi0_in: endpoint {
|
||||
remote-endpoint = <&du_out_hdmi0>;
|
||||
};
|
||||
};
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
rcar_dw_hdmi0_out: endpoint {
|
||||
remote-endpoint = <&hdmi0_con>;
|
||||
};
|
||||
};
|
||||
port@2 {
|
||||
/* HDMI sound */
|
||||
reg = <2>;
|
||||
dw_hdmi0_snd_in: endpoint {
|
||||
remote-endpoint = <&rsnd_endpoint1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&hscif1 {
|
||||
pinctrl-0 = <&hscif1_pins>;
|
||||
pinctrl-names = "default";
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hsusb {
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-0 = <&i2c2_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
gpio_exp2: gpio@21 {
|
||||
compatible = "onnn,pca9654";
|
||||
reg = <0x21>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio_exp3: gpio@22 {
|
||||
compatible = "onnn,pca9654";
|
||||
reg = <0x22>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
versaclock6_bb: versaclock6_bb@6a {
|
||||
compatible = "idt,5p49v6965";
|
||||
reg = <0x6a>;
|
||||
#clock-cells = <1>;
|
||||
clocks = <&x304_clk>;
|
||||
clock-names = "xin";
|
||||
/* CSI0_MCLK, CSI1_MCLK, AUDIO_CLKIN, USB_HUB_MCLK_BB */
|
||||
assigned-clocks = <&versaclock6_bb 1>,
|
||||
<&versaclock6_bb 2>,
|
||||
<&versaclock6_bb 3>,
|
||||
<&versaclock6_bb 4>;
|
||||
assigned-clock-rates = <24000000>, <24000000>, <24000000>, <24000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
pinctrl-0 = <&i2c0_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-0 = <&i2c5_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
codec: wm8962@1a {
|
||||
compatible = "wlf,wm8962";
|
||||
reg = <0x1a>;
|
||||
DCVDD-supply = <®_audio>;
|
||||
DBVDD-supply = <®_audio>;
|
||||
AVDD-supply = <®_audio>;
|
||||
CPVDD-supply = <®_audio>;
|
||||
MICVDD-supply = <®_audio>;
|
||||
PLLVDD-supply = <®_audio>;
|
||||
SPKVDD1-supply = <®_audio>;
|
||||
SPKVDD2-supply = <®_audio>;
|
||||
gpio-cfg = <
|
||||
0x0000 /* 0:Default */
|
||||
0x0000 /* 1:Default */
|
||||
0x0000 /* 2:Default */
|
||||
0x0000 /* 3:Default */
|
||||
0x0000 /* 4:Default */
|
||||
0x0000 /* 5:Default */
|
||||
>;
|
||||
port {
|
||||
wm8962_endpoint: endpoint {
|
||||
remote-endpoint = <&rsnd_endpoint0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* 0 - lcd_reset */
|
||||
/* 1 - lcd_pwr */
|
||||
/* 2 - lcd_select */
|
||||
/* 3 - backlight-enable */
|
||||
/* 4 - Touch_shdwn */
|
||||
/* 5 - LCD_H_pol */
|
||||
/* 6 - lcd_V_pol */
|
||||
gpio_exp1: gpio@20 {
|
||||
compatible = "onnn,pca9654";
|
||||
reg = <0x20>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
touchscreen@26 {
|
||||
compatible = "ilitek,ili2117";
|
||||
reg = <0x26>;
|
||||
interrupt-parent = <&gpio5>;
|
||||
interrupts = <9 IRQ_TYPE_EDGE_RISING>;
|
||||
wakeup-source;
|
||||
};
|
||||
};
|
||||
|
||||
&ohci0 {
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ohci1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pciec0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pciec1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_bus_clk {
|
||||
clock-frequency = <100000000>;
|
||||
};
|
||||
|
||||
&pfc {
|
||||
can0_pins: can0 {
|
||||
groups = "can0_data_a";
|
||||
function = "can0";
|
||||
};
|
||||
|
||||
can1_pins: can1 {
|
||||
groups = "can1_data";
|
||||
function = "can1";
|
||||
};
|
||||
|
||||
du_pins: du {
|
||||
groups = "du_rgb888", "du_sync", "du_clk_out_1", "du_disp";
|
||||
function = "du";
|
||||
};
|
||||
|
||||
i2c2_pins: i2c2 {
|
||||
groups = "i2c2_a";
|
||||
function = "i2c2";
|
||||
};
|
||||
|
||||
i2c5_pins: i2c5 {
|
||||
groups = "i2c5";
|
||||
function = "i2c5";
|
||||
};
|
||||
|
||||
led_pins: leds {
|
||||
/* GP_0_4 , AVS1, AVS2, GP_7_3 */
|
||||
pins = "GP_0_4", "GP_7_0", "GP_7_1", "GP_7_3";
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
msiof1_pins: msiof1 {
|
||||
groups = "msiof1_clk_g", "msiof1_rxd_g", "msiof1_txd_g";
|
||||
function = "msiof1";
|
||||
};
|
||||
|
||||
pwm0_pins: pwm0 {
|
||||
groups = "pwm0";
|
||||
function = "pwm0";
|
||||
};
|
||||
|
||||
sdhi0_pins: sd0 {
|
||||
groups = "sdhi0_data4", "sdhi0_ctrl";
|
||||
function = "sdhi0";
|
||||
power-source = <3300>;
|
||||
};
|
||||
|
||||
sdhi0_pins_uhs: sd0_uhs {
|
||||
groups = "sdhi0_data4", "sdhi0_ctrl";
|
||||
function = "sdhi0";
|
||||
power-source = <1800>;
|
||||
};
|
||||
|
||||
sound_pins: sound {
|
||||
groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a";
|
||||
function = "ssi";
|
||||
};
|
||||
|
||||
sound_clk_pins: sound_clk {
|
||||
groups = "audio_clk_a_a";
|
||||
function = "audio_clk";
|
||||
};
|
||||
|
||||
usb0_pins: usb0 {
|
||||
mux {
|
||||
groups = "usb0";
|
||||
function = "usb0";
|
||||
};
|
||||
};
|
||||
|
||||
usb1_pins: usb1 {
|
||||
mux {
|
||||
groups = "usb1";
|
||||
function = "usb1";
|
||||
};
|
||||
};
|
||||
|
||||
usb30_pins: usb30 {
|
||||
mux {
|
||||
groups = "usb30";
|
||||
function = "usb30";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pwm0 {
|
||||
pinctrl-0 = <&pwm0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rcar_sound {
|
||||
pinctrl-0 = <&sound_pins &sound_clk_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
/* Single DAI */
|
||||
#sound-dai-cells = <0>;
|
||||
|
||||
/* audio_clkout0/1/2/3 */
|
||||
#clock-cells = <1>;
|
||||
clock-frequency = <11289600>;
|
||||
|
||||
status = "okay";
|
||||
|
||||
clocks = <&cpg CPG_MOD 1005>,
|
||||
<&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
|
||||
<&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
|
||||
<&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
|
||||
<&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
|
||||
<&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
|
||||
<&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
|
||||
<&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
|
||||
<&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
|
||||
<&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
|
||||
<&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
|
||||
<&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
|
||||
<&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
|
||||
<&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
|
||||
<&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>,
|
||||
<&cpg CPG_CORE R8A774A1_CLK_S0D4>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
rsnd_port0: port@0 {
|
||||
reg = <0>;
|
||||
rsnd_endpoint0: endpoint {
|
||||
remote-endpoint = <&wm8962_endpoint>;
|
||||
|
||||
dai-format = "i2s";
|
||||
bitclock-master = <&rsnd_endpoint0>;
|
||||
frame-master = <&rsnd_endpoint0>;
|
||||
|
||||
playback = <&ssi1 &dvc1 &src1>;
|
||||
capture = <&ssi0>;
|
||||
};
|
||||
};
|
||||
rsnd_port1: port@1 {
|
||||
reg = <0x01>;
|
||||
rsnd_endpoint1: endpoint {
|
||||
remote-endpoint = <&dw_hdmi0_snd_in>;
|
||||
|
||||
dai-format = "i2s";
|
||||
bitclock-master = <&rsnd_endpoint1>;
|
||||
frame-master = <&rsnd_endpoint1>;
|
||||
|
||||
playback = <&ssi2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&scif0 {
|
||||
pinctrl-0 = <&scif0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&scif5 {
|
||||
pinctrl-0 = <&scif5_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&scif_clk {
|
||||
clock-frequency = <14745600>;
|
||||
};
|
||||
|
||||
&sdhi0 {
|
||||
pinctrl-0 = <&sdhi0_pins>;
|
||||
pinctrl-1 = <&sdhi0_pins_uhs>;
|
||||
pinctrl-names = "default", "state_uhs";
|
||||
vmmc-supply = <®_3p3v>;
|
||||
vqmmc-supply = <&vccq_sdhi0>;
|
||||
cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>;
|
||||
bus-width = <4>;
|
||||
sd-uhs-sdr50;
|
||||
sd-uhs-sdr104;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ssi1 {
|
||||
shared-pin;
|
||||
};
|
||||
|
||||
&usb2_phy0 {
|
||||
pinctrl-0 = <&usb0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2_phy1 {
|
||||
pinctrl-0 = <&usb1_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
312
arch/arm/dts/beacon-renesom-som.dtsi
Normal file
312
arch/arm/dts/beacon-renesom-som.dtsi
Normal file
@@ -0,0 +1,312 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright 2020, Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
memory@48000000 {
|
||||
device_type = "memory";
|
||||
/* first 128MB is reserved for secure area. */
|
||||
reg = <0x0 0x48000000 0x0 0x78000000>;
|
||||
};
|
||||
|
||||
memory@600000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x6 0x00000000 0x0 0x80000000>;
|
||||
};
|
||||
|
||||
osc_32k: osc_32k {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "osc_32k";
|
||||
};
|
||||
|
||||
reg_1p8v: regulator0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-1.8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_3p3v: regulator1 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-3.3V";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
wlan_pwrseq: wlan_pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
reset-gpios = <&pca9654 1 GPIO_ACTIVE_LOW>;
|
||||
clocks = <&osc_32k>;
|
||||
clock-names = "ext_clock";
|
||||
post-power-on-delay-ms = <80>;
|
||||
};
|
||||
};
|
||||
|
||||
&avb {
|
||||
pinctrl-0 = <&avb_pins>;
|
||||
pinctrl-names = "default";
|
||||
phy-handle = <&phy0>;
|
||||
phy-mode = "rgmii-id";
|
||||
status = "okay";
|
||||
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&extal_clk {
|
||||
clock-frequency = <16666666>;
|
||||
};
|
||||
|
||||
&extalr_clk {
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
|
||||
&gpio6 {
|
||||
usb_hub_reset {
|
||||
gpio-hog;
|
||||
gpios = <10 GPIO_ACTIVE_HIGH>;
|
||||
output-high;
|
||||
line-name = "usb-hub-reset";
|
||||
};
|
||||
};
|
||||
|
||||
&hscif0 {
|
||||
pinctrl-0 = <&hscif0_pins>;
|
||||
pinctrl-names = "default";
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
max-speed = <4000000>;
|
||||
|
||||
bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
shutdown-gpios = <&pca9654 2 GPIO_ACTIVE_HIGH>;
|
||||
host-wakeup-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
|
||||
device-wakeup-gpios = <&pca9654 5 GPIO_ACTIVE_HIGH>;
|
||||
clocks = <&osc_32k>;
|
||||
clock-names = "extclk";
|
||||
};
|
||||
};
|
||||
|
||||
&hscif2 {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&hscif2_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
pca9654: gpio@20 {
|
||||
compatible = "onnn,pca9654";
|
||||
reg = <0x20>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-line-names =
|
||||
"i2c4_20_0",
|
||||
"wl_reg_on",
|
||||
"bt_reg_on",
|
||||
"i2c4_20_3",
|
||||
"i2c4_20_4",
|
||||
"bt_dev_wake",
|
||||
"i2c4_20_6",
|
||||
"i2c4_20_7";
|
||||
};
|
||||
|
||||
pca9654_lte: gpio@21 {
|
||||
compatible = "onnn,pca9654";
|
||||
reg = <0x21>;
|
||||
interrupt-parent = <&gpio5>;
|
||||
interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-line-names =
|
||||
"i2c4_21_0",
|
||||
"zoe_pwr_on",
|
||||
"zoe_extint",
|
||||
"zoe_reset_n",
|
||||
"sara_reset",
|
||||
"i2c4_21_5",
|
||||
"sara_pwr_off",
|
||||
"sara_networking_status";
|
||||
};
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "microchip, at24c64", "atmel,24c64";
|
||||
pagesize = <32>;
|
||||
read-only; /* Manufacturing EEPROM programmed at factory */
|
||||
reg = <0x50>;
|
||||
};
|
||||
|
||||
rtc@51 {
|
||||
compatible = "nxp,pcf85263";
|
||||
reg = <0x51>;
|
||||
};
|
||||
|
||||
versaclock5: versaclock_som@6a {
|
||||
compatible = "idt,5p49v6965";
|
||||
reg = <0x6a>;
|
||||
#clock-cells = <1>;
|
||||
clocks = <&x304_clk>;
|
||||
clock-names = "xin";
|
||||
/* du_dotclkin0, du_dotclkin2, usb_extal, avb_txcrefclk */
|
||||
assigned-clocks = <&versaclock5 1>,
|
||||
<&versaclock5 2>,
|
||||
<&versaclock5 3>,
|
||||
<&versaclock5 4>;
|
||||
assigned-clock-rates = <33333333>, <33333333>, <50000000>, <125000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&pfc {
|
||||
pinctrl-0 = <&scif_clk_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
avb_pins: avb {
|
||||
mux {
|
||||
groups = "avb_link", "avb_mdio", "avb_mii";
|
||||
function = "avb";
|
||||
};
|
||||
|
||||
pins_mdio {
|
||||
groups = "avb_mdio";
|
||||
drive-strength = <24>;
|
||||
};
|
||||
|
||||
pins_mii_tx {
|
||||
pins = "PIN_AVB_TX_CTL", "PIN_AVB_TXC", "PIN_AVB_TD0",
|
||||
"PIN_AVB_TD1", "PIN_AVB_TD2", "PIN_AVB_TD3";
|
||||
drive-strength = <12>;
|
||||
};
|
||||
};
|
||||
|
||||
scif2_pins: scif2 {
|
||||
groups = "scif2_data_a";
|
||||
function = "scif2";
|
||||
};
|
||||
|
||||
hscif0_pins: hscif0 {
|
||||
groups = "hscif0_data", "hscif0_ctrl";
|
||||
function = "hscif0";
|
||||
};
|
||||
|
||||
hscif1_pins: hscif1 {
|
||||
groups = "hscif1_data_a", "hscif1_ctrl_a";
|
||||
function = "hscif1";
|
||||
};
|
||||
|
||||
hscif2_pins: hscif2 {
|
||||
groups = "hscif2_data_a";
|
||||
function = "hscif2";
|
||||
};
|
||||
|
||||
scif0_pins: scif0 {
|
||||
groups = "scif0_data";
|
||||
function = "scif0";
|
||||
};
|
||||
|
||||
scif5_pins: scif5 {
|
||||
groups = "scif5_data_a";
|
||||
function = "scif5";
|
||||
};
|
||||
|
||||
scif_clk_pins: scif_clk {
|
||||
groups = "scif_clk_a";
|
||||
function = "scif_clk";
|
||||
};
|
||||
|
||||
i2c0_pins: i2c0 {
|
||||
groups = "i2c0";
|
||||
function = "i2c0";
|
||||
};
|
||||
|
||||
sdhi2_pins: sd2 {
|
||||
groups = "sdhi2_data4", "sdhi2_ctrl";
|
||||
function = "sdhi2";
|
||||
power-source = <1800>;
|
||||
};
|
||||
|
||||
sdhi3_pins: sd3 {
|
||||
groups = "sdhi3_data8", "sdhi3_ctrl", "sdhi3_ds";
|
||||
function = "sdhi3";
|
||||
power-source = <1800>;
|
||||
};
|
||||
};
|
||||
|
||||
&scif_clk {
|
||||
clock-frequency = <14745600>;
|
||||
};
|
||||
|
||||
&scif2 {
|
||||
pinctrl-0 = <&scif2_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhi2_pins>;
|
||||
bus-width = <4>;
|
||||
vmmc-supply = <®_3p3v>;
|
||||
vqmmc-supply = <®_1p8v>;
|
||||
non-removable;
|
||||
cap-power-off-card;
|
||||
pm-ignore-notify;
|
||||
keep-power-in-suspend;
|
||||
mmc-pwrseq = <&wlan_pwrseq>;
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
brcmf: bcrmf@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "host-wake";
|
||||
};
|
||||
};
|
||||
|
||||
&sdhi3 {
|
||||
pinctrl-0 = <&sdhi3_pins>;
|
||||
pinctrl-1 = <&sdhi3_pins>;
|
||||
pinctrl-names = "default", "state_uhs";
|
||||
vmmc-supply = <®_3p3v>;
|
||||
vqmmc-supply = <®_1p8v>;
|
||||
bus-width = <8>;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
fixed-emmc-driver-type = <1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_extal_clk {
|
||||
clock-frequency = <50000000>;
|
||||
};
|
||||
|
||||
&usb3s0_clk {
|
||||
clock-frequency = <100000000>;
|
||||
};
|
||||
|
||||
&vspb {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vspi0 {
|
||||
status = "okay";
|
||||
};
|
34
arch/arm/dts/r8a774a1-beacon-rzg2m-kit-u-boot.dtsi
Normal file
34
arch/arm/dts/r8a774a1-beacon-rzg2m-kit-u-boot.dtsi
Normal file
@@ -0,0 +1,34 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright 2020 Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
/ {
|
||||
soc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
};
|
||||
|
||||
&cpg {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&extal_clk {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&prr {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&extalr_clk {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&sdhi0 {
|
||||
/delete-property/ cd-gpios;
|
||||
};
|
||||
|
||||
&sdhi2 {
|
||||
status = "disabled";
|
||||
};
|
15
arch/arm/dts/r8a774a1-beacon-rzg2m-kit.dts
Normal file
15
arch/arm/dts/r8a774a1-beacon-rzg2m-kit.dts
Normal file
@@ -0,0 +1,15 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright 2020, Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "r8a774a1.dtsi"
|
||||
#include "beacon-renesom-som.dtsi"
|
||||
#include "beacon-renesom-baseboard.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Beacon Embedded Works RZ/G2M Development Kit";
|
||||
compatible = "beacon,beacon-rzg2m", "renesas,r8a774a1";
|
||||
};
|
2787
arch/arm/dts/r8a774a1.dtsi
Normal file
2787
arch/arm/dts/r8a774a1.dtsi
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,9 @@ if RCAR_GEN3
|
||||
|
||||
menu "Select Target SoC"
|
||||
|
||||
config R8A774A1
|
||||
bool "Renesas SoC R8A774A1"
|
||||
|
||||
config R8A7795
|
||||
bool "Renesas SoC R8A7795"
|
||||
imply CLK_R8A7795
|
||||
@@ -43,6 +46,11 @@ choice
|
||||
prompt "Renesas ARM64 SoCs board select"
|
||||
optional
|
||||
|
||||
config TARGET_BEACON_RZG2M
|
||||
bool "Beacon EmbeddedWorks RZ/G2M Dev Kit"
|
||||
select R8A774A1
|
||||
select PINCTRL_PFC_R8A774A1
|
||||
|
||||
config TARGET_CONDOR
|
||||
bool "Condor board"
|
||||
imply R8A77980
|
||||
@@ -100,6 +108,7 @@ source "board/renesas/eagle/Kconfig"
|
||||
source "board/renesas/ebisu/Kconfig"
|
||||
source "board/renesas/salvator-x/Kconfig"
|
||||
source "board/renesas/ulcb/Kconfig"
|
||||
source "board/beacon/beacon-rzg2m/Kconfig"
|
||||
|
||||
config MULTI_DTB_FIT_UNCOMPRESS_SZ
|
||||
default 0x80000 if TARGET_SALVATOR_X
|
||||
|
15
board/beacon/beacon-rzg2m/Kconfig
Normal file
15
board/beacon/beacon-rzg2m/Kconfig
Normal file
@@ -0,0 +1,15 @@
|
||||
if TARGET_BEACON_RZG2M
|
||||
|
||||
config SYS_SOC
|
||||
default "rmobile"
|
||||
|
||||
config SYS_BOARD
|
||||
default "beacon-rzg2m"
|
||||
|
||||
config SYS_VENDOR
|
||||
default "beacon"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "beacon-rzg2m"
|
||||
|
||||
endif
|
6
board/beacon/beacon-rzg2m/MAINTAINERS
Normal file
6
board/beacon/beacon-rzg2m/MAINTAINERS
Normal file
@@ -0,0 +1,6 @@
|
||||
BEACON_RZG2M BOARD
|
||||
M: Adam Ford <aford173@gmail.com>
|
||||
S: Maintained
|
||||
F: board/beacon/beacon-rzg2m/
|
||||
F: include/configs/beacon-rzg2m.h
|
||||
F: configs/r8a774a1_beacon_defconfig
|
9
board/beacon/beacon-rzg2m/Makefile
Normal file
9
board/beacon/beacon-rzg2m/Makefile
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# board/renesas/hihope-rzg2m/Makefile
|
||||
#
|
||||
# Copyright (C) 2019 Renesas Electronics Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-y := beacon-rzg2m.o
|
52
board/beacon/beacon-rzg2m/beacon-rzg2m.c
Normal file
52
board/beacon/beacon-rzg2m/beacon-rzg2m.c
Normal file
@@ -0,0 +1,52 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright 2020 Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/rcar-mstp.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
void s_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
/* Kconfig forces this on, so just return 0 */
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
/* address of boot parameters */
|
||||
gd->bd->bi_boot_params = CONFIG_SYS_TEXT_BASE + 0x50000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
if (fdtdec_setup_mem_size_base() != 0)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dram_init_banksize(void)
|
||||
{
|
||||
fdtdec_setup_memory_banksize();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define RST_BASE 0xE6160000
|
||||
#define RST_CA57RESCNT (RST_BASE + 0x40)
|
||||
#define RST_CODE 0xA5A5000F
|
||||
|
||||
void reset_cpu(ulong addr)
|
||||
{
|
||||
writel(RST_CODE, RST_CA57RESCNT);
|
||||
}
|
64
configs/r8a774a1_beacon_defconfig
Normal file
64
configs/r8a774a1_beacon_defconfig
Normal file
@@ -0,0 +1,64 @@
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_RMOBILE=y
|
||||
CONFIG_SYS_TEXT_BASE=0x50000000
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x2000
|
||||
CONFIG_ENV_OFFSET=0x0
|
||||
CONFIG_DM_GPIO=y
|
||||
CONFIG_RCAR_GEN3=y
|
||||
CONFIG_TARGET_BEACON_RZG2M=y
|
||||
# CONFIG_SPL is not set
|
||||
CONFIG_SMBIOS_PRODUCT_NAME=""
|
||||
CONFIG_FIT=y
|
||||
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
|
||||
CONFIG_SUPPORT_RAW_INITRD=y
|
||||
CONFIG_DEFAULT_FDT_FILE="r8a774a1-beacon-rzg2m-kit.dtb"
|
||||
CONFIG_VERSION_VARIABLE=y
|
||||
CONFIG_HUSH_PARSER=y
|
||||
CONFIG_CMD_BOOTZ=y
|
||||
CONFIG_CMD_GPIO=y
|
||||
CONFIG_CMD_I2C=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_PART=y
|
||||
CONFIG_CMD_USB=y
|
||||
CONFIG_CMD_DHCP=y
|
||||
CONFIG_CMD_MII=y
|
||||
CONFIG_CMD_PING=y
|
||||
CONFIG_CMD_EXT2=y
|
||||
CONFIG_CMD_EXT4=y
|
||||
CONFIG_CMD_EXT4_WRITE=y
|
||||
CONFIG_CMD_FAT=y
|
||||
CONFIG_CMD_FS_GENERIC=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="r8a774a1-beacon-rzg2m-kit"
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_SYSCON=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_CLK_RENESAS=y
|
||||
CONFIG_RCAR_GPIO=y
|
||||
CONFIG_DM_PCA953X=y
|
||||
CONFIG_DM_I2C=y
|
||||
CONFIG_SYS_I2C_RCAR_I2C=y
|
||||
CONFIG_SYS_I2C_RCAR_IIC=y
|
||||
CONFIG_DM_MMC=y
|
||||
CONFIG_MMC_IO_VOLTAGE=y
|
||||
CONFIG_MMC_UHS_SUPPORT=y
|
||||
CONFIG_MMC_HS200_SUPPORT=y
|
||||
CONFIG_RENESAS_SDHI=y
|
||||
CONFIG_BITBANGMII=y
|
||||
CONFIG_PHY_REALTEK=y
|
||||
CONFIG_DM_ETH=y
|
||||
CONFIG_RENESAS_RAVB=y
|
||||
CONFIG_DM_REGULATOR=y
|
||||
CONFIG_DM_REGULATOR_FIXED=y
|
||||
CONFIG_DM_REGULATOR_GPIO=y
|
||||
CONFIG_SPECIFY_CONSOLE_INDEX=y
|
||||
CONFIG_SCIF_CONSOLE=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_DM_USB=y
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_GENERIC=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_OF_LIBFDT_OVERLAY=y
|
||||
CONFIG_SMBIOS_MANUFACTURER=""
|
@@ -48,6 +48,13 @@ config CLK_RCAR_GEN3
|
||||
help
|
||||
Enable this to support the clocks on Renesas RCar Gen3 SoC.
|
||||
|
||||
config CLK_R8A774A1
|
||||
bool "Renesas R8A774A1 clock driver"
|
||||
def_bool y if R8A774A1
|
||||
depends on CLK_RCAR_GEN3
|
||||
help
|
||||
Enable this to support the clocks on Renesas R8A774A1 SoC.
|
||||
|
||||
config CLK_R8A7795
|
||||
bool "Renesas R8A7795 clock driver"
|
||||
depends on CLK_RCAR_GEN3
|
||||
|
@@ -1,5 +1,6 @@
|
||||
obj-$(CONFIG_CLK_RENESAS) += renesas-cpg-mssr.o
|
||||
obj-$(CONFIG_CLK_RCAR_GEN2) += clk-rcar-gen2.o
|
||||
obj-$(CONFIG_CLK_R8A774A1) += r8a774a1-cpg-mssr.o
|
||||
obj-$(CONFIG_CLK_R8A7790) += r8a7790-cpg-mssr.o
|
||||
obj-$(CONFIG_CLK_R8A7791) += r8a7791-cpg-mssr.o
|
||||
obj-$(CONFIG_CLK_R8A7792) += r8a7792-cpg-mssr.o
|
||||
|
339
drivers/clk/renesas/r8a774a1-cpg-mssr.c
Normal file
339
drivers/clk/renesas/r8a774a1-cpg-mssr.c
Normal file
@@ -0,0 +1,339 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Renesas R8A774A1 CPG MSSR driver
|
||||
*
|
||||
* Copyright (C) 2017-2019 Marek Vasut <marek.vasut@gmail.com>
|
||||
*
|
||||
* Based on the following driver from Linux kernel:
|
||||
* r8a7796 Clock Pulse Generator / Module Standby and Software Reset
|
||||
*
|
||||
* Copyright (C) 2016 Glider bvba
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <clk-uclass.h>
|
||||
#include <dm.h>
|
||||
|
||||
#include <dt-bindings/clock/r8a774a1-cpg-mssr.h>
|
||||
|
||||
#include "renesas-cpg-mssr.h"
|
||||
#include "rcar-gen3-cpg.h"
|
||||
|
||||
enum clk_ids {
|
||||
/* Core Clock Outputs exported to DT */
|
||||
LAST_DT_CORE_CLK = R8A774A1_CLK_CANFD,
|
||||
|
||||
/* External Input Clocks */
|
||||
CLK_EXTAL,
|
||||
CLK_EXTALR,
|
||||
|
||||
/* Internal Core Clocks */
|
||||
CLK_MAIN,
|
||||
CLK_PLL0,
|
||||
CLK_PLL1,
|
||||
CLK_PLL2,
|
||||
CLK_PLL3,
|
||||
CLK_PLL4,
|
||||
CLK_PLL1_DIV2,
|
||||
CLK_PLL1_DIV4,
|
||||
CLK_S0,
|
||||
CLK_S1,
|
||||
CLK_S2,
|
||||
CLK_S3,
|
||||
CLK_SDSRC,
|
||||
CLK_RINT,
|
||||
|
||||
/* Module Clocks */
|
||||
MOD_CLK_BASE
|
||||
};
|
||||
|
||||
static const struct cpg_core_clk r8a774a1_core_clks[] = {
|
||||
/* External Clock Inputs */
|
||||
DEF_INPUT("extal", CLK_EXTAL),
|
||||
DEF_INPUT("extalr", CLK_EXTALR),
|
||||
|
||||
/* Internal Core Clocks */
|
||||
DEF_BASE(".main", CLK_MAIN, CLK_TYPE_GEN3_MAIN, CLK_EXTAL),
|
||||
DEF_BASE(".pll0", CLK_PLL0, CLK_TYPE_GEN3_PLL0, CLK_MAIN),
|
||||
DEF_BASE(".pll1", CLK_PLL1, CLK_TYPE_GEN3_PLL1, CLK_MAIN),
|
||||
DEF_BASE(".pll2", CLK_PLL2, CLK_TYPE_GEN3_PLL2, CLK_MAIN),
|
||||
DEF_BASE(".pll3", CLK_PLL3, CLK_TYPE_GEN3_PLL3, CLK_MAIN),
|
||||
DEF_BASE(".pll4", CLK_PLL4, CLK_TYPE_GEN3_PLL4, CLK_MAIN),
|
||||
|
||||
DEF_FIXED(".pll1_div2", CLK_PLL1_DIV2, CLK_PLL1, 2, 1),
|
||||
DEF_FIXED(".pll1_div4", CLK_PLL1_DIV4, CLK_PLL1_DIV2, 2, 1),
|
||||
DEF_FIXED(".s0", CLK_S0, CLK_PLL1_DIV2, 2, 1),
|
||||
DEF_FIXED(".s1", CLK_S1, CLK_PLL1_DIV2, 3, 1),
|
||||
DEF_FIXED(".s2", CLK_S2, CLK_PLL1_DIV2, 4, 1),
|
||||
DEF_FIXED(".s3", CLK_S3, CLK_PLL1_DIV2, 6, 1),
|
||||
DEF_FIXED(".sdsrc", CLK_SDSRC, CLK_PLL1_DIV2, 2, 1),
|
||||
|
||||
DEF_GEN3_OSC(".r", CLK_RINT, CLK_EXTAL, 32),
|
||||
|
||||
/* Core Clock Outputs */
|
||||
DEF_GEN3_Z("z", R8A774A1_CLK_Z, CLK_TYPE_GEN3_Z, CLK_PLL0, 2, 8),
|
||||
DEF_GEN3_Z("z2", R8A774A1_CLK_Z2, CLK_TYPE_GEN3_Z, CLK_PLL2, 2, 0),
|
||||
DEF_FIXED("ztr", R8A774A1_CLK_ZTR, CLK_PLL1_DIV2, 6, 1),
|
||||
DEF_FIXED("ztrd2", R8A774A1_CLK_ZTRD2, CLK_PLL1_DIV2, 12, 1),
|
||||
DEF_FIXED("zt", R8A774A1_CLK_ZT, CLK_PLL1_DIV2, 4, 1),
|
||||
DEF_FIXED("zx", R8A774A1_CLK_ZX, CLK_PLL1_DIV2, 2, 1),
|
||||
DEF_FIXED("s0d1", R8A774A1_CLK_S0D1, CLK_S0, 1, 1),
|
||||
DEF_FIXED("s0d2", R8A774A1_CLK_S0D2, CLK_S0, 2, 1),
|
||||
DEF_FIXED("s0d3", R8A774A1_CLK_S0D3, CLK_S0, 3, 1),
|
||||
DEF_FIXED("s0d4", R8A774A1_CLK_S0D4, CLK_S0, 4, 1),
|
||||
DEF_FIXED("s0d6", R8A774A1_CLK_S0D6, CLK_S0, 6, 1),
|
||||
DEF_FIXED("s0d8", R8A774A1_CLK_S0D8, CLK_S0, 8, 1),
|
||||
DEF_FIXED("s0d12", R8A774A1_CLK_S0D12, CLK_S0, 12, 1),
|
||||
DEF_FIXED("s1d2", R8A774A1_CLK_S1D2, CLK_S1, 2, 1),
|
||||
DEF_FIXED("s1d4", R8A774A1_CLK_S1D4, CLK_S1, 4, 1),
|
||||
DEF_FIXED("s2d1", R8A774A1_CLK_S2D1, CLK_S2, 1, 1),
|
||||
DEF_FIXED("s2d2", R8A774A1_CLK_S2D2, CLK_S2, 2, 1),
|
||||
DEF_FIXED("s2d4", R8A774A1_CLK_S2D4, CLK_S2, 4, 1),
|
||||
DEF_FIXED("s3d1", R8A774A1_CLK_S3D1, CLK_S3, 1, 1),
|
||||
DEF_FIXED("s3d2", R8A774A1_CLK_S3D2, CLK_S3, 2, 1),
|
||||
DEF_FIXED("s3d4", R8A774A1_CLK_S3D4, CLK_S3, 4, 1),
|
||||
|
||||
DEF_GEN3_SD("sd0", R8A774A1_CLK_SD0, CLK_SDSRC, 0x074),
|
||||
DEF_GEN3_SD("sd1", R8A774A1_CLK_SD1, CLK_SDSRC, 0x078),
|
||||
DEF_GEN3_SD("sd2", R8A774A1_CLK_SD2, CLK_SDSRC, 0x268),
|
||||
DEF_GEN3_SD("sd3", R8A774A1_CLK_SD3, CLK_SDSRC, 0x26c),
|
||||
|
||||
DEF_FIXED("cl", R8A774A1_CLK_CL, CLK_PLL1_DIV2, 48, 1),
|
||||
DEF_FIXED("cp", R8A774A1_CLK_CP, CLK_EXTAL, 2, 1),
|
||||
DEF_FIXED("cpex", R8A774A1_CLK_CPEX, CLK_EXTAL, 2, 1),
|
||||
|
||||
DEF_DIV6P1("canfd", R8A774A1_CLK_CANFD, CLK_PLL1_DIV4, 0x244),
|
||||
DEF_DIV6P1("csi0", R8A774A1_CLK_CSI0, CLK_PLL1_DIV4, 0x00c),
|
||||
DEF_DIV6P1("mso", R8A774A1_CLK_MSO, CLK_PLL1_DIV4, 0x014),
|
||||
DEF_DIV6P1("hdmi", R8A774A1_CLK_HDMI, CLK_PLL1_DIV4, 0x250),
|
||||
|
||||
DEF_GEN3_OSC("osc", R8A774A1_CLK_OSC, CLK_EXTAL, 8),
|
||||
|
||||
DEF_BASE("r", R8A774A1_CLK_R, CLK_TYPE_GEN3_R, CLK_RINT),
|
||||
};
|
||||
|
||||
static const struct mssr_mod_clk r8a774a1_mod_clks[] = {
|
||||
DEF_MOD("tmu4", 121, R8A774A1_CLK_S0D6),
|
||||
DEF_MOD("tmu3", 122, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("tmu2", 123, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("tmu1", 124, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("tmu0", 125, R8A774A1_CLK_CP),
|
||||
DEF_MOD("fdp1-0", 119, R8A774A1_CLK_S0D1),
|
||||
DEF_MOD("scif5", 202, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("scif4", 203, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("scif3", 204, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("scif1", 206, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("scif0", 207, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("msiof3", 208, R8A774A1_CLK_MSO),
|
||||
DEF_MOD("msiof2", 209, R8A774A1_CLK_MSO),
|
||||
DEF_MOD("msiof1", 210, R8A774A1_CLK_MSO),
|
||||
DEF_MOD("msiof0", 211, R8A774A1_CLK_MSO),
|
||||
DEF_MOD("sys-dmac2", 217, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("sys-dmac1", 218, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("sys-dmac0", 219, R8A774A1_CLK_S0D3),
|
||||
DEF_MOD("cmt3", 300, R8A774A1_CLK_R),
|
||||
DEF_MOD("cmt2", 301, R8A774A1_CLK_R),
|
||||
DEF_MOD("cmt1", 302, R8A774A1_CLK_R),
|
||||
DEF_MOD("cmt0", 303, R8A774A1_CLK_R),
|
||||
DEF_MOD("scif2", 310, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("sdif3", 311, R8A774A1_CLK_SD3),
|
||||
DEF_MOD("sdif2", 312, R8A774A1_CLK_SD2),
|
||||
DEF_MOD("sdif1", 313, R8A774A1_CLK_SD1),
|
||||
DEF_MOD("sdif0", 314, R8A774A1_CLK_SD0),
|
||||
DEF_MOD("pcie1", 318, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("pcie0", 319, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("usb3-if0", 328, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("usb-dmac0", 330, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("usb-dmac1", 331, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("rwdt", 402, R8A774A1_CLK_R),
|
||||
DEF_MOD("intc-ex", 407, R8A774A1_CLK_CP),
|
||||
DEF_MOD("intc-ap", 408, R8A774A1_CLK_S0D3),
|
||||
DEF_MOD("audmac1", 501, R8A774A1_CLK_S1D2),
|
||||
DEF_MOD("audmac0", 502, R8A774A1_CLK_S1D2),
|
||||
DEF_MOD("hscif4", 516, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("hscif3", 517, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("hscif2", 518, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("hscif1", 519, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("hscif0", 520, R8A774A1_CLK_S3D1),
|
||||
DEF_MOD("thermal", 522, R8A774A1_CLK_CP),
|
||||
DEF_MOD("pwm", 523, R8A774A1_CLK_S0D12),
|
||||
DEF_MOD("fcpvd2", 601, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("fcpvd1", 602, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("fcpvd0", 603, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("fcpvb0", 607, R8A774A1_CLK_S0D1),
|
||||
DEF_MOD("fcpvi0", 611, R8A774A1_CLK_S0D1),
|
||||
DEF_MOD("fcpf0", 615, R8A774A1_CLK_S0D1),
|
||||
DEF_MOD("fcpci0", 617, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("fcpcs", 619, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vspd2", 621, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vspd1", 622, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vspd0", 623, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vspb", 626, R8A774A1_CLK_S0D1),
|
||||
DEF_MOD("vspi0", 631, R8A774A1_CLK_S0D1),
|
||||
DEF_MOD("ehci1", 702, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("ehci0", 703, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("hsusb", 704, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("csi20", 714, R8A774A1_CLK_CSI0),
|
||||
DEF_MOD("csi40", 716, R8A774A1_CLK_CSI0),
|
||||
DEF_MOD("du2", 722, R8A774A1_CLK_S2D1),
|
||||
DEF_MOD("du1", 723, R8A774A1_CLK_S2D1),
|
||||
DEF_MOD("du0", 724, R8A774A1_CLK_S2D1),
|
||||
DEF_MOD("lvds", 727, R8A774A1_CLK_S2D1),
|
||||
DEF_MOD("hdmi0", 729, R8A774A1_CLK_HDMI),
|
||||
DEF_MOD("vin7", 804, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vin6", 805, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vin5", 806, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vin4", 807, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vin3", 808, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vin2", 809, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vin1", 810, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("vin0", 811, R8A774A1_CLK_S0D2),
|
||||
DEF_MOD("etheravb", 812, R8A774A1_CLK_S0D6),
|
||||
DEF_MOD("gpio7", 905, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("gpio6", 906, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("gpio5", 907, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("gpio4", 908, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("gpio3", 909, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("gpio2", 910, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("gpio1", 911, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("gpio0", 912, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("can-fd", 914, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("can-if1", 915, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("can-if0", 916, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("i2c6", 918, R8A774A1_CLK_S0D6),
|
||||
DEF_MOD("i2c5", 919, R8A774A1_CLK_S0D6),
|
||||
DEF_MOD("i2c-dvfs", 926, R8A774A1_CLK_CP),
|
||||
DEF_MOD("i2c4", 927, R8A774A1_CLK_S0D6),
|
||||
DEF_MOD("i2c3", 928, R8A774A1_CLK_S0D6),
|
||||
DEF_MOD("i2c2", 929, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("i2c1", 930, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("i2c0", 931, R8A774A1_CLK_S3D2),
|
||||
DEF_MOD("ssi-all", 1005, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("ssi9", 1006, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi8", 1007, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi7", 1008, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi6", 1009, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi5", 1010, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi4", 1011, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi3", 1012, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi2", 1013, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi1", 1014, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("ssi0", 1015, MOD_CLK_ID(1005)),
|
||||
DEF_MOD("scu-all", 1017, R8A774A1_CLK_S3D4),
|
||||
DEF_MOD("scu-dvc1", 1018, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-dvc0", 1019, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-ctu1-mix1", 1020, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-ctu0-mix0", 1021, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src9", 1022, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src8", 1023, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src7", 1024, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src6", 1025, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src5", 1026, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src4", 1027, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src3", 1028, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src2", 1029, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src1", 1030, MOD_CLK_ID(1017)),
|
||||
DEF_MOD("scu-src0", 1031, MOD_CLK_ID(1017)),
|
||||
};
|
||||
|
||||
/*
|
||||
* CPG Clock Data
|
||||
*/
|
||||
|
||||
/*
|
||||
* MD EXTAL PLL0 PLL1 PLL2 PLL3 PLL4 OSC
|
||||
* 14 13 19 17 (MHz)
|
||||
*-------------------------------------------------------------------------
|
||||
* 0 0 0 0 16.66 x 1 x180 x192 x144 x192 x144 /16
|
||||
* 0 0 0 1 16.66 x 1 x180 x192 x144 x128 x144 /16
|
||||
* 0 0 1 0 Prohibited setting
|
||||
* 0 0 1 1 16.66 x 1 x180 x192 x144 x192 x144 /16
|
||||
* 0 1 0 0 20 x 1 x150 x160 x120 x160 x120 /19
|
||||
* 0 1 0 1 20 x 1 x150 x160 x120 x106 x120 /19
|
||||
* 0 1 1 0 Prohibited setting
|
||||
* 0 1 1 1 20 x 1 x150 x160 x120 x160 x120 /19
|
||||
* 1 0 0 0 25 x 1 x120 x128 x96 x128 x96 /24
|
||||
* 1 0 0 1 25 x 1 x120 x128 x96 x84 x96 /24
|
||||
* 1 0 1 0 Prohibited setting
|
||||
* 1 0 1 1 25 x 1 x120 x128 x96 x128 x96 /24
|
||||
* 1 1 0 0 33.33 / 2 x180 x192 x144 x192 x144 /32
|
||||
* 1 1 0 1 33.33 / 2 x180 x192 x144 x128 x144 /32
|
||||
* 1 1 1 0 Prohibited setting
|
||||
* 1 1 1 1 33.33 / 2 x180 x192 x144 x192 x144 /32
|
||||
*/
|
||||
#define CPG_PLL_CONFIG_INDEX(md) ((((md) & BIT(14)) >> 11) | \
|
||||
(((md) & BIT(13)) >> 11) | \
|
||||
(((md) & BIT(19)) >> 18) | \
|
||||
(((md) & BIT(17)) >> 17))
|
||||
|
||||
static const struct rcar_gen3_cpg_pll_config cpg_pll_configs[16] = {
|
||||
/* EXTAL div PLL1 mult/div PLL3 mult/div OSC prediv */
|
||||
{ 1, 192, 1, 192, 1, 16, },
|
||||
{ 1, 192, 1, 128, 1, 16, },
|
||||
{ 0, /* Prohibited setting */ },
|
||||
{ 1, 192, 1, 192, 1, 16, },
|
||||
{ 1, 160, 1, 160, 1, 19, },
|
||||
{ 1, 160, 1, 106, 1, 19, },
|
||||
{ 0, /* Prohibited setting */ },
|
||||
{ 1, 160, 1, 160, 1, 19, },
|
||||
{ 1, 128, 1, 128, 1, 24, },
|
||||
{ 1, 128, 1, 84, 1, 24, },
|
||||
{ 0, /* Prohibited setting */ },
|
||||
{ 1, 128, 1, 128, 1, 24, },
|
||||
{ 2, 192, 1, 192, 1, 32, },
|
||||
{ 2, 192, 1, 128, 1, 32, },
|
||||
{ 0, /* Prohibited setting */ },
|
||||
{ 2, 192, 1, 192, 1, 32, },
|
||||
};
|
||||
|
||||
static const struct mstp_stop_table r8a774a1_mstp_table[] = {
|
||||
{ 0x00000000, 0, 0x00000000, 0 },
|
||||
{ 0xc3e81000, 0, 0xc3e81000, 0 },
|
||||
{ 0x000E0FDC, 0, 0x000E0FDC, 0 },
|
||||
{ 0xD00C7C1F, 0, 0xD00C7C1F, 0 },
|
||||
{ 0x80000004, 0, 0x80000004, 0 },
|
||||
{ 0x00DF0006, 0, 0x00DF0006, 0 },
|
||||
{ 0XC5EACCCE, 0, 0XC5EACCCE, 0 },
|
||||
{ 0x29E1401C, 0, 0x29E1401C, 0 },
|
||||
{ 0x00009FF1, 0, 0x00009FF1, 0 },
|
||||
{ 0xFC4FDFE0, 0, 0xFC4FDFE0, 0 },
|
||||
{ 0xFFFEFFE8, 0, 0xFFFEFFE8, 0 },
|
||||
};
|
||||
|
||||
static const void *r8a774a1_get_pll_config(const u32 cpg_mode)
|
||||
{
|
||||
return &cpg_pll_configs[CPG_PLL_CONFIG_INDEX(cpg_mode)];
|
||||
}
|
||||
|
||||
static const struct cpg_mssr_info r8a774a1_cpg_mssr_info = {
|
||||
.core_clk = r8a774a1_core_clks,
|
||||
.core_clk_size = ARRAY_SIZE(r8a774a1_core_clks),
|
||||
.mod_clk = r8a774a1_mod_clks,
|
||||
.mod_clk_size = ARRAY_SIZE(r8a774a1_mod_clks),
|
||||
.mstp_table = r8a774a1_mstp_table,
|
||||
.mstp_table_size = ARRAY_SIZE(r8a774a1_mstp_table),
|
||||
.reset_node = "renesas,r8a774a1-rst",
|
||||
.extalr_node = "extalr",
|
||||
.mod_clk_base = MOD_CLK_BASE,
|
||||
.clk_extal_id = CLK_EXTAL,
|
||||
.clk_extalr_id = CLK_EXTALR,
|
||||
.get_pll_config = r8a774a1_get_pll_config,
|
||||
};
|
||||
|
||||
static const struct udevice_id r8a774a1_clk_ids[] = {
|
||||
{
|
||||
.compatible = "renesas,r8a774a1-cpg-mssr",
|
||||
.data = (ulong)&r8a774a1_cpg_mssr_info,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
U_BOOT_DRIVER(clk_r8a774a1) = {
|
||||
.name = "clk_r8a774a1",
|
||||
.id = UCLASS_CLK,
|
||||
.of_match = r8a774a1_clk_ids,
|
||||
.priv_auto_alloc_size = sizeof(struct gen3_clk_priv),
|
||||
.ops = &gen3_clk_ops,
|
||||
.probe = gen3_clk_probe,
|
||||
.remove = gen3_clk_remove,
|
||||
};
|
@@ -56,6 +56,8 @@ enum rcar_gen3_clk_types {
|
||||
DEF_BASE(_name, _id, CLK_TYPE_GEN3_RCKSEL, \
|
||||
(_parent0) << 16 | (_parent1), .div = (_div0) << 16 | (_div1))
|
||||
|
||||
#define DEF_GEN3_Z(_name, _id, _type, _parent, _div, _offset) \
|
||||
DEF_BASE(_name, _id, _type, _parent, .div = _div, .offset = _offset)
|
||||
|
||||
struct rcar_gen3_cpg_pll_config {
|
||||
u8 extal_div;
|
||||
|
@@ -20,7 +20,6 @@
|
||||
#include <linux/sizes.h>
|
||||
#include <power/regulator.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
#include "tmio-common.h"
|
||||
|
||||
#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT) || \
|
||||
@@ -843,6 +842,7 @@ static const struct udevice_id renesas_sdhi_match[] = {
|
||||
{ .compatible = "renesas,sdhi-r8a7794", .data = RENESAS_GEN2_QUIRKS },
|
||||
{ .compatible = "renesas,sdhi-r8a7795", .data = RENESAS_GEN3_QUIRKS },
|
||||
{ .compatible = "renesas,sdhi-r8a7796", .data = RENESAS_GEN3_QUIRKS },
|
||||
{ .compatible = "renesas,rcar-gen3-sdhi", .data = RENESAS_GEN3_QUIRKS },
|
||||
{ .compatible = "renesas,sdhi-r8a77965", .data = RENESAS_GEN3_QUIRKS },
|
||||
{ .compatible = "renesas,sdhi-r8a77970", .data = RENESAS_GEN3_QUIRKS },
|
||||
{ .compatible = "renesas,sdhi-r8a77990", .data = RENESAS_GEN3_QUIRKS },
|
||||
|
@@ -77,6 +77,16 @@ config PINCTRL_PFC_R8A7796
|
||||
the GPIO definitions and pin control functions for each available
|
||||
multiplex function.
|
||||
|
||||
config PINCTRL_PFC_R8A774A1
|
||||
bool "Renesas RCar Gen3 R8A774A1 pin control driver"
|
||||
depends on PINCTRL_PFC
|
||||
help
|
||||
Support pin multiplexing control on Renesas RZG2M R8A774A1 SoCs.
|
||||
|
||||
The driver is controlled by a device tree node which contains both
|
||||
the GPIO definitions and pin control functions for each available
|
||||
multiplex function.
|
||||
|
||||
config PINCTRL_PFC_R8A77965
|
||||
bool "Renesas RCar Gen3 R8A77965 pin control driver"
|
||||
depends on PINCTRL_PFC
|
||||
|
@@ -1,4 +1,5 @@
|
||||
obj-$(CONFIG_PINCTRL_PFC) += pfc.o
|
||||
obj-$(CONFIG_PINCTRL_PFC_R8A774A1) += pfc-r8a7796.o
|
||||
obj-$(CONFIG_PINCTRL_PFC_R8A7790) += pfc-r8a7790.o
|
||||
obj-$(CONFIG_PINCTRL_PFC_R8A7791) += pfc-r8a7791.o
|
||||
obj-$(CONFIG_PINCTRL_PFC_R8A7792) += pfc-r8a7792.o
|
||||
|
@@ -32,6 +32,7 @@ enum sh_pfc_model {
|
||||
SH_PFC_R8A7794,
|
||||
SH_PFC_R8A7795,
|
||||
SH_PFC_R8A7796,
|
||||
SH_PFC_R8A774A1,
|
||||
SH_PFC_R8A77965,
|
||||
SH_PFC_R8A77970,
|
||||
SH_PFC_R8A77980,
|
||||
@@ -853,6 +854,10 @@ static int sh_pfc_pinctrl_probe(struct udevice *dev)
|
||||
if (model == SH_PFC_R8A7796)
|
||||
priv->pfc.info = &r8a7796_pinmux_info;
|
||||
#endif
|
||||
#ifdef CONFIG_PINCTRL_PFC_R8A774A1
|
||||
if (model == SH_PFC_R8A774A1)
|
||||
priv->pfc.info = &r8a774a1_pinmux_info;
|
||||
#endif
|
||||
#ifdef CONFIG_PINCTRL_PFC_R8A77965
|
||||
if (model == SH_PFC_R8A77965)
|
||||
priv->pfc.info = &r8a77965_pinmux_info;
|
||||
@@ -924,6 +929,12 @@ static const struct udevice_id sh_pfc_pinctrl_ids[] = {
|
||||
.data = SH_PFC_R8A7796,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_PINCTRL_PFC_R8A774A1
|
||||
{
|
||||
.compatible = "renesas,pfc-r8a774a1",
|
||||
.data = SH_PFC_R8A774A1,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_PINCTRL_PFC_R8A77965
|
||||
{
|
||||
.compatible = "renesas,pfc-r8a77965",
|
||||
|
@@ -293,6 +293,7 @@ const struct pinmux_bias_reg *
|
||||
sh_pfc_pin_to_bias_reg(const struct sh_pfc *pfc, unsigned int pin,
|
||||
unsigned int *bit);
|
||||
|
||||
extern const struct sh_pfc_soc_info r8a774a1_pinmux_info;
|
||||
extern const struct sh_pfc_soc_info r8a7790_pinmux_info;
|
||||
extern const struct sh_pfc_soc_info r8a7791_pinmux_info;
|
||||
extern const struct sh_pfc_soc_info r8a7792_pinmux_info;
|
||||
|
89
include/configs/beacon-rzg2m.h
Normal file
89
include/configs/beacon-rzg2m.h
Normal file
@@ -0,0 +1,89 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright (C) 2020 Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
#ifndef __BEACON_RZG2M_H
|
||||
#define __BEACON_RZG2M_H
|
||||
|
||||
#include "rcar-gen3-common.h"
|
||||
|
||||
/* Ethernet RAVB */
|
||||
#define CONFIG_BITBANGMII_MULTI
|
||||
|
||||
/* Environment in eMMC, at the end of 2nd "boot sector" */
|
||||
/* #define CONFIG_ENV_OFFSET (-CONFIG_ENV_SIZE) */
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 1
|
||||
#define CONFIG_SYS_MMC_ENV_PART 2
|
||||
|
||||
#undef CONFIG_EXTRA_ENV_SETTINGS
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"usb_pgood_delay=2000\0" \
|
||||
"script=boot.scr\0" \
|
||||
"image=Image\0" \
|
||||
"console=ttySC0,115200\0" \
|
||||
"fdt_addr=0x48000000\0" \
|
||||
"loadaddr=0x48080000\0" \
|
||||
"boot_fdt=try\0" \
|
||||
"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
||||
"initrd_addr=0x43800000\0" \
|
||||
"mmcdev=0\0" \
|
||||
"mmcpart=1\0" \
|
||||
"mmcrootpart=2\0" \
|
||||
"finduuid=part uuid mmc ${mmcdev}:${mmcrootpart} uuid\0" \
|
||||
"mmcautodetect=yes\0" \
|
||||
"mmcargs=setenv bootargs console=${console} " \
|
||||
" root=PARTUUID=${uuid} rootwait rw ${optargs}\0" \
|
||||
"loadbootscript=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
"source\0" \
|
||||
"loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
|
||||
"loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run finduuid; run mmcargs; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
"if run loadfdt; then " \
|
||||
"booti ${loadaddr} - ${fdt_addr}; " \
|
||||
"else " \
|
||||
"echo WARN: Cannot load the DT; " \
|
||||
"fi; " \
|
||||
"else " \
|
||||
"echo wait for boot; " \
|
||||
"fi;\0" \
|
||||
"netargs=setenv bootargs ${jh_clk} console=${console} " \
|
||||
"root=/dev/nfs " \
|
||||
"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
|
||||
"netboot=echo Booting from net ...; " \
|
||||
"run netargs; " \
|
||||
"if test ${ip_dyn} = yes; then " \
|
||||
"setenv get_cmd dhcp; " \
|
||||
"else " \
|
||||
"setenv get_cmd tftp; " \
|
||||
"fi; " \
|
||||
"${get_cmd} ${loadaddr} ${image}; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
|
||||
"booti ${loadaddr} - ${fdt_addr}; " \
|
||||
"else " \
|
||||
"echo WARN: Cannot load the DT; " \
|
||||
"fi; " \
|
||||
"else " \
|
||||
"booti; " \
|
||||
"fi;\0"
|
||||
|
||||
#undef CONFIG_BOOTCOMMAND
|
||||
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
"mmc dev ${mmcdev}; if mmc rescan; then " \
|
||||
"if run loadbootscript; then " \
|
||||
"run bootscript; " \
|
||||
"else " \
|
||||
"if run loadimage; then " \
|
||||
"run mmcboot; " \
|
||||
"else run netboot; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else booti ${loadaddr} - ${fdt_addr}; fi"
|
||||
|
||||
#endif /* __BEACON_RZG2M_H */
|
65
include/dt-bindings/clock/r8a774a1-cpg-mssr.h
Normal file
65
include/dt-bindings/clock/r8a774a1-cpg-mssr.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (C) 2019 Renesas Electronics Corp.
|
||||
*/
|
||||
#ifndef __DT_BINDINGS_CLOCK_R8A774A1_CPG_MSSR_H__
|
||||
#define __DT_BINDINGS_CLOCK_R8A774A1_CPG_MSSR_H__
|
||||
|
||||
#include <dt-bindings/clock/renesas-cpg-mssr.h>
|
||||
|
||||
/* r8a774a1 CPG Core Clocks */
|
||||
#define R8A774A1_CLK_Z 0
|
||||
#define R8A774A1_CLK_Z2 1
|
||||
#define R8A774A1_CLK_ZR 2
|
||||
#define R8A774A1_CLK_ZG 3
|
||||
#define R8A774A1_CLK_ZTR 4
|
||||
#define R8A774A1_CLK_ZTRD2 5
|
||||
#define R8A774A1_CLK_ZT 6
|
||||
#define R8A774A1_CLK_ZX 7
|
||||
#define R8A774A1_CLK_S0D1 8
|
||||
#define R8A774A1_CLK_S0D2 9
|
||||
#define R8A774A1_CLK_S0D3 10
|
||||
#define R8A774A1_CLK_S0D4 11
|
||||
#define R8A774A1_CLK_S0D6 12
|
||||
#define R8A774A1_CLK_S0D8 13
|
||||
#define R8A774A1_CLK_S0D12 14
|
||||
#define R8A774A1_CLK_S1D1 15
|
||||
#define R8A774A1_CLK_S1D2 16
|
||||
#define R8A774A1_CLK_S1D4 17
|
||||
#define R8A774A1_CLK_S2D1 18
|
||||
#define R8A774A1_CLK_S2D2 19
|
||||
#define R8A774A1_CLK_S2D4 20
|
||||
#define R8A774A1_CLK_S3D1 21
|
||||
#define R8A774A1_CLK_S3D2 22
|
||||
#define R8A774A1_CLK_S3D4 23
|
||||
#define R8A774A1_CLK_LB 24
|
||||
#define R8A774A1_CLK_CL 25
|
||||
#define R8A774A1_CLK_ZB3 26
|
||||
#define R8A774A1_CLK_ZB3D2 27
|
||||
#define R8A774A1_CLK_ZB3D4 28
|
||||
#define R8A774A1_CLK_CR 29
|
||||
#define R8A774A1_CLK_CRD2 30
|
||||
#define R8A774A1_CLK_SD0H 31
|
||||
#define R8A774A1_CLK_SD0 32
|
||||
#define R8A774A1_CLK_SD1H 33
|
||||
#define R8A774A1_CLK_SD1 34
|
||||
#define R8A774A1_CLK_SD2H 35
|
||||
#define R8A774A1_CLK_SD2 36
|
||||
#define R8A774A1_CLK_SD3H 37
|
||||
#define R8A774A1_CLK_SD3 38
|
||||
#define R8A774A1_CLK_SSP2 39
|
||||
#define R8A774A1_CLK_SSP1 40
|
||||
#define R8A774A1_CLK_SSPRS 41
|
||||
#define R8A774A1_CLK_RPC 42
|
||||
#define R8A774A1_CLK_RPCD2 43
|
||||
#define R8A774A1_CLK_MSO 44
|
||||
#define R8A774A1_CLK_CANFD 45
|
||||
#define R8A774A1_CLK_HDMI 46
|
||||
#define R8A774A1_CLK_CSI0 47
|
||||
#define R8A774A1_CLK_CSIREF 48
|
||||
#define R8A774A1_CLK_CP 49
|
||||
#define R8A774A1_CLK_CPEX 50
|
||||
#define R8A774A1_CLK_R 51
|
||||
#define R8A774A1_CLK_OSC 52
|
||||
|
||||
#endif /* __DT_BINDINGS_CLOCK_R8A774A1_CPG_MSSR_H__ */
|
33
include/dt-bindings/power/r8a774a1-sysc.h
Normal file
33
include/dt-bindings/power/r8a774a1-sysc.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (C) 2019 Renesas Electronics Corp.
|
||||
*/
|
||||
#ifndef __DT_BINDINGS_POWER_R8A774A1_SYSC_H__
|
||||
#define __DT_BINDINGS_POWER_R8A774A1_SYSC_H__
|
||||
|
||||
/*
|
||||
* These power domain indices match the numbers of the interrupt bits
|
||||
* representing the power areas in the various Interrupt Registers
|
||||
* (e.g. SYSCISR, Interrupt Status Register)
|
||||
*/
|
||||
|
||||
#define R8A774A1_PD_CA57_CPU0 0
|
||||
#define R8A774A1_PD_CA57_CPU1 1
|
||||
#define R8A774A1_PD_CA53_CPU0 5
|
||||
#define R8A774A1_PD_CA53_CPU1 6
|
||||
#define R8A774A1_PD_CA53_CPU2 7
|
||||
#define R8A774A1_PD_CA53_CPU3 8
|
||||
#define R8A774A1_PD_CA57_SCU 12
|
||||
#define R8A774A1_PD_CR7 13
|
||||
#define R8A774A1_PD_A3VC 14
|
||||
#define R8A774A1_PD_3DG_A 17
|
||||
#define R8A774A1_PD_3DG_B 18
|
||||
#define R8A774A1_PD_CA53_SCU 21
|
||||
#define R8A774A1_PD_A3IR 24
|
||||
#define R8A774A1_PD_A2VC0 25
|
||||
#define R8A774A1_PD_A2VC1 26
|
||||
|
||||
/* Always-on power area */
|
||||
#define R8A774A1_PD_ALWAYS_ON 32
|
||||
|
||||
#endif /* __DT_BINDINGS_POWER_R8A774A1_SYSC_H__ */
|
Reference in New Issue
Block a user