mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
Merge branch '2022-03-10-platform-updates' into next
- Assorted TI omap3, j7 platform updates - Phytium Pomelo board
This commit is contained in:
commit
7b958ede8c
36 changed files with 968 additions and 408 deletions
|
@ -1986,6 +1986,25 @@ config TARGET_DURIAN
|
|||
Support for durian platform.
|
||||
It has 2GB Sdram, uart and pcie.
|
||||
|
||||
config TARGET_POMELO
|
||||
bool "Support Phytium Pomelo Platform"
|
||||
select ARM64
|
||||
select DM
|
||||
select AHCI
|
||||
select SCSI_AHCI
|
||||
select AHCI_PCI
|
||||
select BLK
|
||||
select PCI
|
||||
select DM_PCI
|
||||
select SCSI
|
||||
select DM_SCSI
|
||||
select DM_SERIAL
|
||||
select DM_ETH if NET
|
||||
imply CMD_PCI
|
||||
help
|
||||
Support for pomelo platform.
|
||||
It has 8GB Sdram, uart and pcie.
|
||||
|
||||
config TARGET_PRESIDIO_ASIC
|
||||
bool "Support Cortina Presidio ASIC Platform"
|
||||
select ARM64
|
||||
|
@ -2257,6 +2276,7 @@ source "board/traverse/ten64/Kconfig"
|
|||
source "board/variscite/dart_6ul/Kconfig"
|
||||
source "board/vscom/baltos/Kconfig"
|
||||
source "board/phytium/durian/Kconfig"
|
||||
source "board/phytium/pomelo/Kconfig"
|
||||
source "board/xen/xenguest_arm64/Kconfig"
|
||||
source "board/keymile/Kconfig"
|
||||
|
||||
|
|
|
@ -1188,6 +1188,7 @@ dtb-$(CONFIG_TARGET_VEXPRESS64_JUNO) += juno-r2.dtb
|
|||
dtb-$(CONFIG_TARGET_TOTAL_COMPUTE) += total_compute.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_DURIAN) += phytium-durian.dtb
|
||||
dtb-$(CONFIG_TARGET_POMELO) += phytium-pomelo.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_PRESIDIO_ASIC) += ca-presidio-engboard.dtb
|
||||
|
||||
|
|
|
@ -37,7 +37,18 @@
|
|||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
/delete-node/ &uart1;
|
||||
/delete-node/ &uart2;
|
||||
/delete-node/ &mmc2;
|
||||
/delete-node/ &mmc3;
|
||||
&mmc2 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2018 Logic PD, Inc - http://www.logicpd.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
* Copyright (C) 2018 Logic PD, Inc - https://www.logicpd.com/
|
||||
*/
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
|
@ -127,10 +124,11 @@
|
|||
};
|
||||
|
||||
lcd0: display@0 {
|
||||
compatible = "panel-dpi";
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
/* To make it work, set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 */
|
||||
compatible = "newhaven,nhd-4.3-480272ef-atxl";
|
||||
label = "15";
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>; /* gpio176, lcd INI */
|
||||
vcc-supply = <&vdd_io_reg>;
|
||||
|
||||
|
@ -139,22 +137,6 @@
|
|||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <4>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
@ -174,10 +156,13 @@
|
|||
pinctrl-0 = <&pwm_pins>;
|
||||
ti,timers = <&timer11>;
|
||||
#pwm-cells = <3>;
|
||||
ti,clock-source = <0x01>;
|
||||
};
|
||||
|
||||
/* HS USB Host PHY on PORT 1 */
|
||||
hsusb1_phy: hsusb1_phy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_rst_pins>;
|
||||
compatible = "usb-nop-xceiv";
|
||||
reset-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>; /* gpio_57 */
|
||||
#phy-cells = <0>;
|
||||
|
@ -185,6 +170,8 @@
|
|||
};
|
||||
|
||||
&davinci_emac {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <ðernet_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -240,6 +227,8 @@
|
|||
};
|
||||
|
||||
&usbhshost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_pins>;
|
||||
port1-mode = "ehci-phy";
|
||||
};
|
||||
|
||||
|
@ -248,8 +237,21 @@
|
|||
};
|
||||
|
||||
&omap3_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_rst_pins>;
|
||||
|
||||
ethernet_pins: pinmux_ethernet_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21fe, PIN_INPUT | MUX_MODE0) /* rmii_mdio_data */
|
||||
OMAP3_CORE1_IOPAD(0x2200, MUX_MODE0) /* rmii_mdio_clk */
|
||||
OMAP3_CORE1_IOPAD(0x2202, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_rxd0 */
|
||||
OMAP3_CORE1_IOPAD(0x2204, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_rxd1 */
|
||||
OMAP3_CORE1_IOPAD(0x2206, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_crs_dv */
|
||||
OMAP3_CORE1_IOPAD(0x2208, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_rxer */
|
||||
OMAP3_CORE1_IOPAD(0x220a, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_txd0 */
|
||||
OMAP3_CORE1_IOPAD(0x220c, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_txd1 */
|
||||
OMAP3_CORE1_IOPAD(0x220e, PIN_OUTPUT_PULLDOWN |MUX_MODE0) /* rmii_txen */
|
||||
OMAP3_CORE1_IOPAD(0x2210, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_50mhz_clk */
|
||||
>;
|
||||
};
|
||||
|
||||
leds_pins: pinmux_leds_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
@ -317,8 +319,6 @@
|
|||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_pins>;
|
||||
|
||||
hsusb1_pins: pinmux_hsusb1_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2016 Derald D. Woods <woods.technical@gmail.com>
|
||||
*
|
||||
* Based on am3517-evm.dts
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/ {
|
||||
|
|
|
@ -9,5 +9,19 @@
|
|||
|
||||
/ {
|
||||
model = "LogicPD Zoom OMAP35xx SOM-LV Development Kit";
|
||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3";
|
||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3430", "ti,omap3";
|
||||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
|
||||
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3430_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||
OMAP3430_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||
OMAP3430_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||
OMAP3430_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||
OMAP3430_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||
OMAP3430_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -11,3 +11,17 @@
|
|||
model = "LogicPD Zoom DM3730 SOM-LV Development Kit";
|
||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3630", "ti,omap3";
|
||||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
|
||||
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||
OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||
OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||
OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||
OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||
OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -51,6 +51,8 @@
|
|||
|
||||
&mcbsp2 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mcbsp2_pins>;
|
||||
};
|
||||
|
||||
&charger {
|
||||
|
@ -77,7 +79,7 @@
|
|||
};
|
||||
|
||||
&dss {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
vdds_dsi-supply = <&vpll2>;
|
||||
vdda_video-supply = <&video_reg>;
|
||||
pinctrl-names = "default";
|
||||
|
@ -102,35 +104,18 @@
|
|||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
lcd0: display@0 {
|
||||
compatible = "panel-dpi";
|
||||
label = "28";
|
||||
status = "okay";
|
||||
/* default-on; */
|
||||
lcd0: display {
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
compatible = "logicpd,type28";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lcd_enable_pin>;
|
||||
enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd INI */
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
|
||||
port {
|
||||
lcd_in: endpoint {
|
||||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <2>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <1>;
|
||||
vsync-active = <1>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
/* HS USB Host PHY on PORT 1 */
|
||||
hsusb2_phy: hsusb2_phy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_reset_pin>;
|
||||
compatible = "usb-nop-xceiv";
|
||||
reset-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; /* gpio_4 */
|
||||
#phy-cells = <0>;
|
||||
|
@ -144,6 +146,8 @@
|
|||
};
|
||||
|
||||
&usbhshost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_pins>, <&hsusb2_2_pins>;
|
||||
port2-mode = "ehci-phy";
|
||||
};
|
||||
|
||||
|
@ -153,8 +157,6 @@
|
|||
|
||||
|
||||
&omap3_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_pins>;
|
||||
|
||||
mmc3_pins: pinmux_mm3_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
@ -166,6 +168,7 @@
|
|||
OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT_PULLUP | MUX_MODE3) /* mcspi1_cs2.sdmmc_clk */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp2_pins: pinmux_mcbsp2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x213c, PIN_INPUT | MUX_MODE0) /* mcbsp2_fsx */
|
||||
|
@ -183,6 +186,7 @@
|
|||
OMAP3_CORE1_IOPAD(0x2198, PIN_OUTPUT | MUX_MODE4) /* GPIO_162,BT_EN */
|
||||
>;
|
||||
};
|
||||
|
||||
mcspi1_pins: pinmux_mcspi1_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21c8, PIN_INPUT | MUX_MODE0) /* mcspi1_clk.mcspi1_clk */
|
||||
|
@ -250,13 +254,13 @@
|
|||
};
|
||||
|
||||
&omap3_pmx_wkup {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_reset_pin>;
|
||||
|
||||
hsusb2_reset_pin: pinmux_hsusb1_reset_pin {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_WKUP_IOPAD(0x2a0e, PIN_OUTPUT | MUX_MODE4) /* sys_boot2.gpio_4 */
|
||||
>;
|
||||
};
|
||||
|
||||
wl127x_gpio: pinmux_wl127x_gpio_pin {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_WKUP_IOPAD(0x2a0a, PIN_INPUT | MUX_MODE4) /* sys_boot0.gpio_2 */
|
||||
|
@ -265,21 +269,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_2_pins>;
|
||||
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||
OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||
OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||
OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||
OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||
OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
interrupts-extended = <&intc 73 &omap3_pmx_core OMAP3_UART2_RX>;
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -9,5 +9,13 @@
|
|||
|
||||
/ {
|
||||
model = "LogicPD Zoom OMAP35xx Torpedo Development Kit";
|
||||
compatible = "logicpd,dm3730-torpedo-devkit", "ti,omap3";
|
||||
compatible = "logicpd,dm3730-torpedo-devkit", "ti,omap3430", "ti,omap3";
|
||||
};
|
||||
|
||||
&omap3_pmx_core {
|
||||
isp1763_pins: pinmux_isp1763_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x2154, PIN_INPUT_PULLUP | MUX_MODE4) /* sdmmc1_dat6.gpio_128 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -50,6 +50,20 @@
|
|||
};
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
/delete-property/dma-names;
|
||||
bluetooth {
|
||||
compatible = "ti,wl1283-st";
|
||||
enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>; /* gpio 162 */
|
||||
max-speed = <3000000>;
|
||||
};
|
||||
};
|
||||
|
||||
/* The DM3730 has a faster L3 than OMAP35, so increase pixel clock */
|
||||
&mt9p031_out {
|
||||
pixel-clock-frequency = <90000000>;
|
||||
};
|
||||
|
||||
&omap3_pmx_core {
|
||||
mmc3_pins: pinmux_mm3_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
@ -71,3 +85,12 @@
|
|||
>;
|
||||
};
|
||||
};
|
||||
|
||||
/* The gpio muxing between omap3530 and dm3730 is different for GPIO_128 */
|
||||
&omap3_pmx_wkup {
|
||||
isp1763_pins: pinmux_isp1763_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_WKUP_IOPAD(0x2a58, PIN_INPUT_PULLUP | MUX_MODE4) /* reserved.gpio_128 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
pinctrl-0 = <&pwm_pins>;
|
||||
ti,timers = <&timer10>;
|
||||
#pwm-cells = <3>;
|
||||
ti,clock-source = <0x01>;
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -80,6 +81,8 @@
|
|||
};
|
||||
|
||||
&mcbsp2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mcbsp2_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -90,7 +93,8 @@
|
|||
|
||||
&gpmc {
|
||||
ranges = <0 0 0x30000000 0x1000000 /* CS0: 16MB for NAND */
|
||||
1 0 0x2c000000 0x1000000>; /* CS1: 16MB for LAN9221 */
|
||||
1 0 0x2c000000 0x1000000 /* CS1: 16MB for LAN9221 */
|
||||
6 0 0x28000000 0x1000000>; /* CS6: 16MB for ISP1763 */
|
||||
|
||||
ethernet@gpmc {
|
||||
pinctrl-names = "default";
|
||||
|
@ -99,16 +103,60 @@
|
|||
interrupts = <1 IRQ_TYPE_LEVEL_LOW>; /* gpio129 */
|
||||
reg = <1 0 0xff>;
|
||||
};
|
||||
|
||||
usb@6,0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&isp1763_pins>;
|
||||
compatible = "nxp,usb-isp1763";
|
||||
reg = <0x6 0x0 0xff>;
|
||||
interrupt-parent = <&gpio5>;
|
||||
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "host";
|
||||
bus-width = <16>;
|
||||
dr_mode = "host";
|
||||
gpmc,mux-add-data = <0>;
|
||||
gpmc,device-width = <2>;
|
||||
gpmc,wait-pin = <0>;
|
||||
gpmc,burst-length = <4>;
|
||||
gpmc,cycle2cycle-samecsen = <1>;
|
||||
gpmc,cycle2cycle-diffcsen = <1>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <45>;
|
||||
gpmc,cs-wr-off-ns = <45>;
|
||||
gpmc,adv-on-ns = <0>;
|
||||
gpmc,adv-rd-off-ns = <0>;
|
||||
gpmc,adv-wr-off-ns = <0>;
|
||||
gpmc,oe-on-ns = <0>;
|
||||
gpmc,oe-off-ns = <45>;
|
||||
gpmc,we-on-ns = <0>;
|
||||
gpmc,we-off-ns = <25>;
|
||||
gpmc,rd-cycle-ns = <60>;
|
||||
gpmc,wr-cycle-ns = <45>;
|
||||
gpmc,access-ns = <35>;
|
||||
gpmc,page-burst-access-ns = <0>;
|
||||
gpmc,bus-turnaround-ns = <0>;
|
||||
gpmc,cycle2cycle-delay-ns = <60>;
|
||||
gpmc,wait-monitoring-ns = <0>;
|
||||
gpmc,clk-activation-ns = <0>;
|
||||
gpmc,wr-data-mux-bus-ns = <5>;
|
||||
gpmc,wr-access-ns = <20>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdqw1w {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdq_pins>;
|
||||
};
|
||||
|
||||
|
||||
&vpll2 {
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
&dss {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
vdds_dsi-supply = <&vpll2>;
|
||||
vdda_video-supply = <&video_reg>;
|
||||
vdda_video-supply = <&vpll2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dss_dpi_pins1>;
|
||||
port {
|
||||
|
@ -124,44 +172,19 @@
|
|||
display0 = &lcd0;
|
||||
};
|
||||
|
||||
video_reg: video_reg {
|
||||
lcd0: display {
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
compatible = "newhaven,nhd-4.3-480272ef-atxl";
|
||||
label = "15";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&panel_pwr_pins>;
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-supply";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd INI */
|
||||
};
|
||||
|
||||
lcd0: display {
|
||||
compatible = "panel-dpi";
|
||||
label = "15";
|
||||
status = "okay";
|
||||
/* default-on; */
|
||||
pinctrl-names = "default";
|
||||
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
|
||||
port {
|
||||
lcd_in: endpoint {
|
||||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <4>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
@ -193,6 +216,12 @@
|
|||
>;
|
||||
};
|
||||
|
||||
hdq_pins: hdq_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21c6, PIN_INPUT_PULLUP | MUX_MODE0) /* hdq_sio */
|
||||
>;
|
||||
};
|
||||
|
||||
pwm_pins: pinmux_pwm_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x20B8, PIN_OUTPUT | PIN_OFF_OUTPUT_LOW | MUX_MODE3) /* gpmc_ncs5.gpt_10_pwm_evt */
|
||||
|
|
|
@ -35,6 +35,11 @@
|
|||
};
|
||||
};
|
||||
|
||||
/* The Torpedo doesn't route the USB host pins */
|
||||
&usbhshost {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpmc {
|
||||
ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */
|
||||
|
||||
|
@ -192,3 +197,7 @@
|
|||
&twl_gpio {
|
||||
ti,use-leds;
|
||||
};
|
||||
|
||||
&twl_keypad {
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
50
arch/arm/dts/phytium-pomelo.dts
Normal file
50
arch/arm/dts/phytium-pomelo.dts
Normal file
|
@ -0,0 +1,50 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* dts file for Phytium Pomelo board
|
||||
* Copyright (C) 2021, Phytium Ltd.
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
model = "Phytium Pomelo Board";
|
||||
compatible = "phytium,d2000-pomelo", "phytium,d2000";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
};
|
||||
|
||||
sysclk_48mhz: clk48mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0x0>;
|
||||
clock-frequency = <48000000>;
|
||||
clock-output-names = "sysclk_48mhz";
|
||||
};
|
||||
|
||||
soc {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
uart0: serial@28001000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x0 0x28001000 0x0 0x1000>;
|
||||
clocks = <&sysclk_48mhz>;
|
||||
};
|
||||
|
||||
pcie@40000000 {
|
||||
compatible = "pci-host-ecam-generic";
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
reg = <0x0 0x40000000 0x0 0x10000000>;
|
||||
ranges = <0x01000000 0x00 0x00000000 0x0 0x50000000 0x0 0x00F00000>,
|
||||
<0x02000000 0x00 0x58000000 0x0 0x58000000 0x0 0x28000000>,
|
||||
<0x43000000 0x10 0x00000000 0x10 0x00000000 0x10 0x00000000>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -23,7 +23,7 @@
|
|||
* get_sys_clk_speed() - determine reference oscillator speed
|
||||
* based on known 32kHz clock and gptimer.
|
||||
*****************************************************************************/
|
||||
u32 get_osc_clk_speed(void)
|
||||
static u32 get_osc_clk_speed(void)
|
||||
{
|
||||
u32 start, cstart, cend, cdiff, cdiv, val;
|
||||
struct prcm *prcm_base = (struct prcm *)PRCM_BASE;
|
||||
|
@ -90,7 +90,7 @@ u32 get_osc_clk_speed(void)
|
|||
* get_sys_clkin_sel() - returns the sys_clkin_sel field value based on
|
||||
* input oscillator clock frequency.
|
||||
*****************************************************************************/
|
||||
void get_sys_clkin_sel(u32 osc_clk, u32 *sys_clkin_sel)
|
||||
static void get_sys_clkin_sel(u32 osc_clk, u32 *sys_clkin_sel)
|
||||
{
|
||||
switch(osc_clk) {
|
||||
case S38_4M:
|
||||
|
|
|
@ -117,17 +117,10 @@ static void am3517_evm_musb_init(void)
|
|||
*/
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u32 reset;
|
||||
|
||||
omap_die_id_display();
|
||||
|
||||
am3517_evm_musb_init();
|
||||
|
||||
/* ensure that the Ethernet module is out of reset */
|
||||
reset = readl(AM3517_IP_SW_RESET);
|
||||
reset &= (~CPGMACSS_SW_RST);
|
||||
writel(reset, AM3517_IP_SW_RESET);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -142,7 +135,6 @@ void set_muxconf_regs(void)
|
|||
MUX_AM3517EVM();
|
||||
}
|
||||
|
||||
|
||||
#if defined(CONFIG_USB_ETHER) && defined(CONFIG_USB_MUSB_GADGET)
|
||||
int board_eth_init(struct bd_info *bis)
|
||||
{
|
||||
|
|
|
@ -122,64 +122,7 @@ const omap3_sysinfo sysinfo = {
|
|||
MUX_VAL(CP(GPMC_NWP), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(GPMC_WAIT0), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(GPMC_WAIT1), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(GPMC_WAIT2), (IEN | PTU | EN | M4)) /*GPIO_64*/\
|
||||
/* - ETH_nRESET*/\
|
||||
MUX_VAL(CP(GPMC_WAIT3), (IEN | PTU | EN | M0)) \
|
||||
/* DSS */\
|
||||
MUX_VAL(CP(DSS_PCLK), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_HSYNC), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_VSYNC), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_ACBIAS), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA0), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA1), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA2), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA3), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA4), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA5), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA6), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA7), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA8), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA9), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA10), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA11), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA12), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA13), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA14), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA15), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA16), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA17), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA18), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA19), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA20), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA21), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA22), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(DSS_DATA23), (IDIS | PTD | DIS | M0)) \
|
||||
/* CAMERA */\
|
||||
MUX_VAL(CP(CAM_HS), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(CAM_VS), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(CAM_XCLKA), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_PCLK), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(CAM_FLD), (IDIS | PTD | DIS | M4)) /*GPIO_98*/\
|
||||
/* - CAM_RESET*/\
|
||||
MUX_VAL(CP(CAM_D0), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D1), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D2), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D3), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D4), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D5), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D6), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D7), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D8), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D9), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D10), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_D11), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_XCLKB), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CAM_WEN), (IEN | PTD | DIS | M4)) /*GPIO_167*/\
|
||||
MUX_VAL(CP(CAM_STROBE), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CSI2_DX0), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CSI2_DY0), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CSI2_DX1), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CSI2_DY1), (IEN | PTD | DIS | M0)) \
|
||||
/* MMC */\
|
||||
MUX_VAL(CP(MMC1_CLK), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(MMC1_CMD), (IEN | PTU | DIS | M0)) \
|
||||
|
@ -187,144 +130,15 @@ const omap3_sysinfo sysinfo = {
|
|||
MUX_VAL(CP(MMC1_DAT1), (IEN | PTU | DIS | M0)) \
|
||||
MUX_VAL(CP(MMC1_DAT2), (IEN | PTU | DIS | M0)) \
|
||||
MUX_VAL(CP(MMC1_DAT3), (IEN | PTU | DIS | M0)) \
|
||||
/* WriteProtect */\
|
||||
MUX_VAL(CP(MMC1_DAT4), (IEN | PTU | EN | M4)) \
|
||||
MUX_VAL(CP(MMC1_DAT5), (IEN | PTU | EN | M4)) /*CardDetect*/\
|
||||
MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M4)) \
|
||||
MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M4)) \
|
||||
\
|
||||
MUX_VAL(CP(MMC2_CLK), (IEN | PTD | EN | M0)) \
|
||||
MUX_VAL(CP(MMC2_CMD), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MMC2_DAT0), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MMC2_DAT1), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MMC2_DAT2), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MMC2_DAT3), (IEN | PTD | DIS | M0)) \
|
||||
/* McBSP */\
|
||||
MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M0)) \
|
||||
\
|
||||
MUX_VAL(CP(MCBSP2_FSX), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP2_CLKX), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP2_DR), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP2_DX), (IDIS | PTD | DIS | M0)) \
|
||||
\
|
||||
MUX_VAL(CP(MCBSP3_DX), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCBSP3_FSX), (IEN | PTD | DIS | M0)) \
|
||||
\
|
||||
MUX_VAL(CP(MCBSP4_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_152*/\
|
||||
/* - LCD_INI*/\
|
||||
MUX_VAL(CP(MCBSP4_DR), (IDIS | PTD | DIS | M4)) /*GPIO_153*/\
|
||||
/* - LCD_ENVDD */\
|
||||
MUX_VAL(CP(MCBSP4_DX), (IDIS | PTD | DIS | M4)) /*GPIO_154*/\
|
||||
/* - LCD_QVGA/nVGA */\
|
||||
MUX_VAL(CP(MCBSP4_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_155*/\
|
||||
/* - LCD_RESB */\
|
||||
/* UART */\
|
||||
MUX_VAL(CP(UART1_TX), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(UART1_RTS), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(UART1_CTS), (IEN | PTU | DIS | M0)) \
|
||||
\
|
||||
MUX_VAL(CP(UART1_RX), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(UART2_RX), (IEN | PTD | DIS | M0)) \
|
||||
\
|
||||
MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTU | DIS | M0)) \
|
||||
MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(UART3_RX_IRRX), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(UART3_TX_IRTX), (IDIS | PTD | DIS | M0)) \
|
||||
/* I2C */\
|
||||
MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(I2C4_SDA), (IEN | PTU | EN | M0)) \
|
||||
/* McSPI */\
|
||||
MUX_VAL(CP(MCSPI1_CLK), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCSPI1_SIMO), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCSPI1_SOMI), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCSPI1_CS0), (IEN | PTD | EN | M0)) \
|
||||
MUX_VAL(CP(MCSPI1_CS1), (IEN | PTD | EN | M4)) /*GPIO_175*/\
|
||||
MUX_VAL(CP(MCSPI1_CS2), (IEN | PTU | DIS | M4)) /*GPIO_176*/\
|
||||
/* - LAN_INTR*/\
|
||||
MUX_VAL(CP(MCSPI1_CS3), (IEN | PTD | EN | M0)) \
|
||||
\
|
||||
MUX_VAL(CP(MCSPI2_CLK), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCSPI2_SIMO), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCSPI2_SOMI), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(MCSPI2_CS0), (IEN | PTD | EN | M4)) \
|
||||
MUX_VAL(CP(MCSPI2_CS1), (IEN | PTD | EN | M4)) \
|
||||
/* CCDC */\
|
||||
MUX_VAL(CP(CCDC_PCLK), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(CCDC_FIELD), (IEN | PTD | DIS | M1)) \
|
||||
MUX_VAL(CP(CCDC_HD), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(CCDC_VD), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(CCDC_WEN), (IEN | PTD | DIS | M1)) \
|
||||
MUX_VAL(CP(CCDC_DATA0), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CCDC_DATA1), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CCDC_DATA2), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CCDC_DATA3), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CCDC_DATA4), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CCDC_DATA5), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CCDC_DATA6), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(CCDC_DATA7), (IEN | PTD | DIS | M0)) \
|
||||
/* RMII */\
|
||||
MUX_VAL(CP(RMII_MDIO_DATA), (IEN | M0)) \
|
||||
MUX_VAL(CP(RMII_MDIO_CLK), (M0)) \
|
||||
MUX_VAL(CP(RMII_RXD0) , (IEN | PTD | M0)) \
|
||||
MUX_VAL(CP(RMII_RXD1), (IEN | PTD | M0)) \
|
||||
MUX_VAL(CP(RMII_CRS_DV), (IEN | PTD | M0)) \
|
||||
MUX_VAL(CP(RMII_RXER), (PTD | M0)) \
|
||||
MUX_VAL(CP(RMII_TXD0), (PTD | M0)) \
|
||||
MUX_VAL(CP(RMII_TXD1), (PTD | M0)) \
|
||||
MUX_VAL(CP(RMII_TXEN), (PTD | M0)) \
|
||||
MUX_VAL(CP(RMII_50MHZ_CLK), (IEN | PTD | EN | M0)) \
|
||||
/* HECC */\
|
||||
MUX_VAL(CP(HECC1_TXD), (IEN | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(HECC1_RXD), (IEN | PTU | EN | M0)) \
|
||||
/* HSUSB */\
|
||||
MUX_VAL(CP(HSUSB0_CLK), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_STP), (IDIS | PTU | EN | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DIR), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_NXT), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA0), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA1), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA2), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA3), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA4), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA5), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA6), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(USB0_DRVBUS), (IEN | PTD | EN | M0)) \
|
||||
/* HDQ */\
|
||||
MUX_VAL(CP(HDQ_SIO), (IEN | PTU | EN | M0)) \
|
||||
/* Control and debug */\
|
||||
MUX_VAL(CP(SYS_32K), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(SYS_CLKREQ), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(SYS_NIRQ), (IEN | PTU | EN | M0)) \
|
||||
/*SYS_nRESWARM */\
|
||||
MUX_VAL(CP(SYS_NRESWARM), (IDIS | PTU | EN | M4)) \
|
||||
/* - GPIO30 */\
|
||||
MUX_VAL(CP(SYS_BOOT0), (IEN | PTD | DIS | M4)) /*GPIO_2*/\
|
||||
/* - PEN_IRQ */\
|
||||
MUX_VAL(CP(SYS_BOOT1), (IEN | PTD | DIS | M4)) /*GPIO_3 */\
|
||||
MUX_VAL(CP(SYS_BOOT2), (IEN | PTD | DIS | M4)) /*GPIO_4*/\
|
||||
MUX_VAL(CP(SYS_BOOT3), (IEN | PTD | DIS | M4)) /*GPIO_5*/\
|
||||
MUX_VAL(CP(SYS_BOOT4), (IEN | PTD | DIS | M4)) /*GPIO_6*/\
|
||||
MUX_VAL(CP(SYS_BOOT5), (IEN | PTD | DIS | M4)) /*GPIO_7*/\
|
||||
MUX_VAL(CP(SYS_BOOT6), (IDIS | PTD | DIS | M4)) /*GPIO_8*/\
|
||||
/* - VIO_1V8*/\
|
||||
MUX_VAL(CP(SYS_BOOT7), (IEN | PTD | EN | M0)) \
|
||||
MUX_VAL(CP(SYS_BOOT8), (IEN | PTD | EN | M0)) \
|
||||
\
|
||||
|
@ -339,18 +153,6 @@ const omap3_sysinfo sysinfo = {
|
|||
MUX_VAL(CP(JTAG_EMU0), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(JTAG_EMU1), (IEN | PTD | DIS | M0)) \
|
||||
/* ETK (ES2 onwards) */\
|
||||
MUX_VAL(CP(ETK_CLK_ES2), (IDIS | PTU | EN | M3)) /*HSUSB1_STP*/\
|
||||
MUX_VAL(CP(ETK_CTL_ES2), (IDIS | PTU | DIS | M3)) /*HSUSB1_CLK*/\
|
||||
MUX_VAL(CP(ETK_D0_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA0*/\
|
||||
MUX_VAL(CP(ETK_D1_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA1*/\
|
||||
MUX_VAL(CP(ETK_D2_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA2*/\
|
||||
MUX_VAL(CP(ETK_D3_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA7*/\
|
||||
MUX_VAL(CP(ETK_D4_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA4*/\
|
||||
MUX_VAL(CP(ETK_D5_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA5*/\
|
||||
MUX_VAL(CP(ETK_D6_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA6*/\
|
||||
MUX_VAL(CP(ETK_D7_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DATA3*/\
|
||||
MUX_VAL(CP(ETK_D8_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_DIR*/\
|
||||
MUX_VAL(CP(ETK_D9_ES2), (IEN | PTU | DIS | M3)) /*HSUSB1_NXT*/\
|
||||
MUX_VAL(CP(ETK_D10_ES2), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(ETK_D11_ES2), (IEN | PTD | DIS | M0)) \
|
||||
MUX_VAL(CP(ETK_D12_ES2), (IEN | PTD | DIS | M0)) \
|
||||
|
|
|
@ -233,23 +233,6 @@ void set_muxconf_regs(void)
|
|||
MUX_VAL(CP(D2D_SREAD), (IEN | PTD | DIS | M0)) /*d2d_sread*/
|
||||
MUX_VAL(CP(D2D_MBUSFLAG), (IEN | PTD | DIS | M0)) /*d2d_mbusflag*/
|
||||
MUX_VAL(CP(D2D_SBUSFLAG), (IEN | PTD | DIS | M0)) /*d2d_sbusflag*/
|
||||
|
||||
#ifdef CONFIG_USB_EHCI_OMAP /* SOM-LV Uses EHCI-OMAP */
|
||||
MUX_VAL(CP(ETK_D14_ES2), (IEN | PTD | DIS | M3)) /*HSUSB2_DATA0*/
|
||||
MUX_VAL(CP(ETK_D15_ES2), (IEN | PTD | DIS | M3)) /*HSUSB2_DATA1*/
|
||||
MUX_VAL(CP(MCSPI1_CS3), (IEN | PTD | EN | M0)) /*HSUSB2_DATA2*/
|
||||
MUX_VAL(CP(MCSPI2_CS1), (IEN | PTD | EN | M0)) /*HSUSB2_DATA3*/
|
||||
MUX_VAL(CP(MCSPI2_SIMO), (IEN | PTD | DIS | M0)) /*HSUSB2_DATA4*/
|
||||
MUX_VAL(CP(MCSPI2_SOMI), (IEN | PTD | DIS | M0)) /*HSUSB2_DATA5*/
|
||||
MUX_VAL(CP(MCSPI2_CS0), (IEN | PTD | EN | M0)) /*HSUSB2_DATA6*/
|
||||
MUX_VAL(CP(MCSPI2_CLK), (IEN | PTD | DIS | M0)) /*HSUSB2_DATA7*/
|
||||
MUX_VAL(CP(SYS_BOOT2), (IEN | PTD | DIS | M4)) /* GPIO_4 */
|
||||
MUX_VAL(CP(ETK_D10_ES2), (IDIS | PTU | DIS | M3)) /*HSUSB2_CLK*/
|
||||
MUX_VAL(CP(ETK_D11_ES2), (IDIS | PTU | DIS | M3)) /*HSUSB2_STP*/
|
||||
MUX_VAL(CP(ETK_D12_ES2), (IEN | PTU | DIS | M3)) /*HSUSB2_DIR*/
|
||||
MUX_VAL(CP(ETK_D13_ES2), (IEN | PTD | DIS | M3)) /*HSUSB2_NXT*/
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
12
board/phytium/pomelo/Kconfig
Normal file
12
board/phytium/pomelo/Kconfig
Normal file
|
@ -0,0 +1,12 @@
|
|||
if TARGET_POMELO
|
||||
|
||||
config SYS_BOARD
|
||||
default "pomelo"
|
||||
|
||||
config SYS_VENDOR
|
||||
default "phytium"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "pomelo"
|
||||
|
||||
endif
|
8
board/phytium/pomelo/MAINTAINERS
Normal file
8
board/phytium/pomelo/MAINTAINERS
Normal file
|
@ -0,0 +1,8 @@
|
|||
POMELO BOARD
|
||||
M: lixinde <lixinde@phytium.com.cn>
|
||||
M: weichangzheng <weichangzheng@phytium.com.cn>
|
||||
S: Maintained
|
||||
F: board/phytium/pomelo/*
|
||||
F: include/configs/pomelo.h
|
||||
F: configs/pomelo_defconfig
|
||||
F: arch/arm/dts/phytium-pomelo.dts
|
14
board/phytium/pomelo/Makefile
Normal file
14
board/phytium/pomelo/Makefile
Normal file
|
@ -0,0 +1,14 @@
|
|||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright (C) 2021
|
||||
# lixinde <lixinde@phytium.com.cn>
|
||||
# weichangzheng <weichangzheng@phytium.com.cn>
|
||||
#
|
||||
|
||||
obj-y += pomelo.o
|
||||
obj-y += pll.o
|
||||
obj-y += pcie.o
|
||||
obj-y += ddr.o
|
||||
obj-y += sec.o
|
||||
|
||||
|
73
board/phytium/pomelo/cpu.h
Normal file
73
board/phytium/pomelo/cpu.h
Normal file
|
@ -0,0 +1,73 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* (C) Copyright 2021
|
||||
* Phytium Technology Ltd <www.phytium.com>
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
|
||||
#ifndef _FT_POMELO_H
|
||||
#define _FT_POMELO_H
|
||||
|
||||
/* SMCCC ID */
|
||||
#define CPU_SVC_VERSION 0xC2000F00
|
||||
#define CPU_GET_RST_SOURCE 0xC2000F01
|
||||
#define CPU_INIT_PLL 0xC2000F02
|
||||
#define CPU_INIT_PCIE 0xC2000F03
|
||||
#define CPU_INIT_MEM 0xC2000F04
|
||||
#define CPU_INIT_SEC_SVC 0xC2000F05
|
||||
|
||||
/*CPU RESET*/
|
||||
#define CPU_RESET_POWER_ON 0x1
|
||||
#define CPU_RESET_PLL 0x4
|
||||
#define CPU_RESET_WATCH_DOG 0x8
|
||||
|
||||
/* PLL */
|
||||
#define PARAMETER_PLL_MAGIC 0x54460010
|
||||
|
||||
/* PCIE */
|
||||
#define PARAMETER_PCIE_MAGIC 0x54460011
|
||||
#define CFG_INDEPENDENT_TREE 0x0
|
||||
#define PCI_PEU0 0x1
|
||||
#define PCI_PEU1 0x1
|
||||
#define PEU1_OFFSET 16
|
||||
#define PEU_C_OFFSET_MODE 16
|
||||
#define PEU_C_OFFSET_SPEED 0
|
||||
#define RC_MODE 0x1
|
||||
#define X8X8 0x1
|
||||
#define GEN3 3
|
||||
|
||||
/* DDR */
|
||||
#define PARAMETER_MCU_MAGIC 0x54460014
|
||||
#define PARAM_MCU_VERSION 0x1
|
||||
#define PARAM_MCU_SIZE 0x100
|
||||
#define PARAM_CH_ENABLE 0x3
|
||||
#define PARAM_ECC_ENABLE 0x3
|
||||
#define PARAM_FORCE_SPD_DISABLE 0x0
|
||||
#define PARAM_MCU_MISC_ENABLE 0x0
|
||||
|
||||
#define UDIMM_TYPE 0x2
|
||||
#define DIMM_X8 0x1
|
||||
#define NO_MIRROR 0x0
|
||||
#define NO_ECC_TYPE 0
|
||||
#define DDR4_TYPE 0xC
|
||||
|
||||
/* SEC */
|
||||
#define PARAMETER_COMMON_MAGIC 0x54460013
|
||||
|
||||
/* FLUSH L3 CASHE */
|
||||
#define HNF_COUNT 0x8
|
||||
#define HNF_PSTATE_REQ (HNF_BASE + 0x10)
|
||||
#define HNF_PSTATE_STAT (HNF_BASE + 0x18)
|
||||
#define HNF_PSTATE_OFF 0x0
|
||||
#define HNF_PSTATE_SFONLY 0x1
|
||||
#define HNF_PSTATE_HALF 0x2
|
||||
#define HNF_PSTATE_FULL 0x3
|
||||
#define HNF_STRIDE 0x10000
|
||||
#define HNF_BASE (unsigned long)(0x3A200000)
|
||||
void ddr_init(void);
|
||||
void sec_init(void);
|
||||
void check_reset(void);
|
||||
void pcie_init(void);
|
||||
|
||||
#endif /* _FT_POMELO_H */
|
161
board/phytium/pomelo/ddr.c
Normal file
161
board/phytium/pomelo/ddr.c
Normal file
|
@ -0,0 +1,161 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2021
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include <init.h>
|
||||
#include "cpu.h"
|
||||
|
||||
struct ddr_spd {
|
||||
/******************* read from spd *****************/
|
||||
u8 dimm_type; /* 1: RDIMM;2: UDIMM;3: SODIMM;4: LRDIMM */
|
||||
u8 data_width; /* 0: x4; 1: x8; 2: x16 */
|
||||
u8 mirror_type;/* 0: stardard; 1: mirror */
|
||||
u8 ecc_type; /* 0: no-ecc; 1:ecc */
|
||||
u8 dram_type; /* 0xB: DDR3; 0xC: DDR4 */
|
||||
u8 rank_num;
|
||||
u8 row_num;
|
||||
u8 col_num;
|
||||
|
||||
u8 bg_num; /*only DDR4*/
|
||||
u8 bank_num;
|
||||
u16 module_manufacturer_id;
|
||||
u16 taamin;
|
||||
u16 trcdmin;
|
||||
|
||||
u16 trpmin;
|
||||
u16 trasmin;
|
||||
u16 trcmin;
|
||||
u16 tfawmin;
|
||||
|
||||
u16 trrd_smin; /*only DDR4*/
|
||||
u16 trrd_lmin; /*only DDR4*/
|
||||
u16 tccd_lmin; /*only DDR4*/
|
||||
u16 twrmin;
|
||||
|
||||
u16 twtr_smin; /*only DDR4*/
|
||||
u16 twtr_lmin; /*only DDR4*/
|
||||
u16 twtrmin; /*only DDR3*/
|
||||
u16 trrdmin; /*only DDR3*/
|
||||
|
||||
/******************* RCD control words *****************/
|
||||
u8 f0rc03; /*bit[3:2]:CS bit[1:0]:CA */
|
||||
u8 f0rc04; /*bit[3:2]:ODT bit[1:0]:CKE */
|
||||
u8 f0rc05; /*bit[3:2]:CLK-A side bit[1:0]:CLK-B side */
|
||||
u8 bc00;
|
||||
u8 bc01;
|
||||
u8 bc02;
|
||||
u8 bc03;
|
||||
u8 bc04;
|
||||
|
||||
u8 bc05;
|
||||
u8 f5bc5x;
|
||||
u8 f5bc6x;
|
||||
/******************* LRDIMM special *****************/
|
||||
u8 vrefdq_pr0;
|
||||
u8 vrefdq_mdram;
|
||||
u8 rtt_mdram_1866;
|
||||
u8 rtt_mdram_2400;
|
||||
u8 rtt_mdram_3200;
|
||||
|
||||
u8 drive_dram;
|
||||
u8 odt_dram_1866;
|
||||
u8 odt_dram_2400;
|
||||
u8 odt_dram_3200;
|
||||
u8 park_dram_1866;
|
||||
u8 park_dram_2400;
|
||||
u8 park_dram_3200;
|
||||
u8 rcd_num;
|
||||
} __attribute((aligned(4)));
|
||||
|
||||
struct mcu_config {
|
||||
u32 magic;
|
||||
u32 version;
|
||||
u32 size;
|
||||
u8 rev1[4];
|
||||
|
||||
u8 ch_enable;
|
||||
u8 misc1_enable;
|
||||
u8 misc2_enable;
|
||||
u8 force_spd_enable;
|
||||
u8 misc3_enable;
|
||||
u8 train_debug;
|
||||
u8 train_recover;
|
||||
u8 rev2[9];
|
||||
|
||||
struct ddr_spd ddr_spd_info[2];
|
||||
} __attribute((aligned(4)));
|
||||
|
||||
static void get_mcu_up_info_default(struct mcu_config *pm)
|
||||
{
|
||||
pm->magic = PARAMETER_MCU_MAGIC;
|
||||
pm->version = PARAM_MCU_VERSION;
|
||||
pm->size = PARAM_MCU_SIZE;
|
||||
pm->ch_enable = PARAM_CH_ENABLE;
|
||||
pm->misc1_enable = PARAM_ECC_ENABLE;
|
||||
pm->force_spd_enable = PARAM_FORCE_SPD_DISABLE;
|
||||
pm->misc3_enable = PARAM_MCU_MISC_ENABLE;
|
||||
pm->train_recover = 0x0;
|
||||
}
|
||||
|
||||
static u8 init_dimm_param(u8 ch, struct mcu_config *pm)
|
||||
{
|
||||
debug("manual config dimm info...\n");
|
||||
pm->ddr_spd_info[ch].dimm_type = UDIMM_TYPE;
|
||||
pm->ddr_spd_info[ch].data_width = DIMM_X8;
|
||||
pm->ddr_spd_info[ch].mirror_type = NO_MIRROR;
|
||||
pm->ddr_spd_info[ch].ecc_type = NO_ECC_TYPE;
|
||||
pm->ddr_spd_info[ch].dram_type = DDR4_TYPE;
|
||||
pm->ddr_spd_info[ch].rank_num = 1;
|
||||
pm->ddr_spd_info[ch].row_num = 16;
|
||||
pm->ddr_spd_info[ch].col_num = 10;
|
||||
pm->ddr_spd_info[ch].bg_num = 4;
|
||||
pm->ddr_spd_info[ch].bank_num = 4;
|
||||
pm->ddr_spd_info[ch].taamin = 13750;
|
||||
pm->ddr_spd_info[ch].trcdmin = 13750;
|
||||
|
||||
pm->ddr_spd_info[ch].trpmin = 13750;
|
||||
pm->ddr_spd_info[ch].trasmin = 32000;
|
||||
pm->ddr_spd_info[ch].trcmin = 45750;
|
||||
pm->ddr_spd_info[ch].tfawmin = 21000;
|
||||
|
||||
pm->ddr_spd_info[ch].trrd_smin = 3000;
|
||||
pm->ddr_spd_info[ch].trrd_lmin = 4900;
|
||||
pm->ddr_spd_info[ch].tccd_lmin = 5000;
|
||||
pm->ddr_spd_info[ch].twrmin = 15000;
|
||||
|
||||
pm->ddr_spd_info[ch].twtr_smin = 2500;
|
||||
pm->ddr_spd_info[ch].twtr_lmin = 7500;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void get_default_mcu_info(u8 *data)
|
||||
{
|
||||
get_mcu_up_info_default((struct mcu_config *)data);
|
||||
}
|
||||
|
||||
void fix_mcu_info(u8 *data)
|
||||
{
|
||||
struct mcu_config *mcu_info = (struct mcu_config *)data;
|
||||
|
||||
for (int ch = 0; ch < 2; ch++)
|
||||
init_dimm_param(ch, mcu_info);
|
||||
}
|
||||
|
||||
void ddr_init(void)
|
||||
{
|
||||
u8 buffer[0x100];
|
||||
struct arm_smccc_res res;
|
||||
|
||||
get_default_mcu_info(buffer);
|
||||
fix_mcu_info(buffer);
|
||||
|
||||
arm_smccc_smc(CPU_INIT_MEM, 0, (u64)buffer, 0, 0, 0, 0, 0, &res);
|
||||
if (res.a0 != 0)
|
||||
panic("DRAM init failed :0x%lx\n", res.a0);
|
||||
}
|
60
board/phytium/pomelo/pcie.c
Normal file
60
board/phytium/pomelo/pcie.c
Normal file
|
@ -0,0 +1,60 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2021
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include <init.h>
|
||||
#include "cpu.h"
|
||||
|
||||
struct pcu_ctr {
|
||||
u32 base_config[3];
|
||||
u32 equalization[3];
|
||||
u8 rev[80];
|
||||
} __attribute((aligned(4)));
|
||||
|
||||
struct pcu_config {
|
||||
u32 magic;
|
||||
u32 version;
|
||||
u32 size;
|
||||
u8 rev1[4];
|
||||
u32 independent_tree;
|
||||
u32 base_cfg;
|
||||
u8 rev2[16];
|
||||
struct pcu_ctr ctr_cfg[2];
|
||||
} __attribute((aligned(4)));
|
||||
|
||||
struct pcu_config const peu_base_info = {
|
||||
.magic = PARAMETER_PCIE_MAGIC,
|
||||
.version = 0x2,
|
||||
.size = 0x100,
|
||||
.independent_tree = CFG_INDEPENDENT_TREE,
|
||||
.base_cfg = ((PCI_PEU1 | (X8X8 << 1)) << PEU1_OFFSET | (PCI_PEU0 | (X8X8 << 1))),
|
||||
.ctr_cfg[0].base_config[0] = (RC_MODE << PEU_C_OFFSET_MODE) | (GEN3 << PEU_C_OFFSET_SPEED),
|
||||
.ctr_cfg[0].base_config[1] = (RC_MODE << PEU_C_OFFSET_MODE) | (GEN3 << PEU_C_OFFSET_SPEED),
|
||||
.ctr_cfg[0].base_config[2] = (RC_MODE << PEU_C_OFFSET_MODE) | (GEN3 << PEU_C_OFFSET_SPEED),
|
||||
.ctr_cfg[1].base_config[0] = (RC_MODE << PEU_C_OFFSET_MODE) | (GEN3 << PEU_C_OFFSET_SPEED),
|
||||
.ctr_cfg[1].base_config[1] = (RC_MODE << PEU_C_OFFSET_MODE) | (GEN3 << PEU_C_OFFSET_SPEED),
|
||||
.ctr_cfg[1].base_config[2] = (RC_MODE << PEU_C_OFFSET_MODE) | (GEN3 << PEU_C_OFFSET_SPEED),
|
||||
.ctr_cfg[0].equalization[0] = 0x7,
|
||||
.ctr_cfg[0].equalization[1] = 0x7,
|
||||
.ctr_cfg[0].equalization[2] = 0x7,
|
||||
.ctr_cfg[1].equalization[0] = 0x7,
|
||||
.ctr_cfg[1].equalization[1] = 0x7,
|
||||
.ctr_cfg[1].equalization[2] = 0x7,
|
||||
};
|
||||
|
||||
void pcie_init(void)
|
||||
{
|
||||
u8 buffer[0x100];
|
||||
struct arm_smccc_res res;
|
||||
|
||||
memcpy(buffer, &peu_base_info, sizeof(peu_base_info));
|
||||
arm_smccc_smc(CPU_INIT_PCIE, 0, (u64)buffer, 0, 0, 0, 0, 0, &res);
|
||||
if (res.a0 != 0)
|
||||
panic("PCIE init failed :0x%lx\n", res.a0);
|
||||
}
|
73
board/phytium/pomelo/pll.c
Normal file
73
board/phytium/pomelo/pll.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2021
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include <init.h>
|
||||
#include "cpu.h"
|
||||
|
||||
struct pll_config {
|
||||
u32 magic;
|
||||
u32 version;
|
||||
u32 size;
|
||||
u8 rev1[4];
|
||||
u32 core_pll;
|
||||
u32 res1;
|
||||
u32 lmu_pll;
|
||||
u32 res2;
|
||||
u32 res3;
|
||||
u32 res4;
|
||||
u32 res5;
|
||||
} __attribute((aligned(4)));
|
||||
|
||||
struct pll_config const pll_base_info = {
|
||||
.magic = PARAMETER_PLL_MAGIC,
|
||||
.version = 0x1,
|
||||
.size = 0x30,
|
||||
.core_pll = 2300, /*MHz*/
|
||||
.lmu_pll = 667, /*MHz*/
|
||||
};
|
||||
|
||||
u32 get_reset_source(void)
|
||||
{
|
||||
struct arm_smccc_res res;
|
||||
|
||||
arm_smccc_smc(CPU_GET_RST_SOURCE, 0, 0, 0, 0, 0, 0, 0, &res);
|
||||
return res.a0;
|
||||
}
|
||||
|
||||
void pll_init(void)
|
||||
{
|
||||
u8 buffer[0x100];
|
||||
struct arm_smccc_res res;
|
||||
|
||||
memcpy(buffer, &pll_base_info, sizeof(pll_base_info));
|
||||
arm_smccc_smc(CPU_INIT_PLL, 0, (u64)buffer, 0, 0, 0, 0, 0, &res);
|
||||
if (res.a0 != 0)
|
||||
panic("PLL init failed :0x%lx\n", res.a0);
|
||||
}
|
||||
|
||||
void check_reset(void)
|
||||
{
|
||||
u32 rst;
|
||||
|
||||
rst = get_reset_source();
|
||||
|
||||
switch (rst) {
|
||||
case CPU_RESET_POWER_ON:
|
||||
pll_init();
|
||||
break;
|
||||
case CPU_RESET_PLL:
|
||||
break;
|
||||
case CPU_RESET_WATCH_DOG:
|
||||
break;
|
||||
default:
|
||||
panic("other reset source\n");
|
||||
}
|
||||
}
|
118
board/phytium/pomelo/pomelo.c
Normal file
118
board/phytium/pomelo/pomelo.c
Normal file
|
@ -0,0 +1,118 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2021
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <command.h>
|
||||
#include <init.h>
|
||||
#include <asm/armv8/mmu.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include <scsi.h>
|
||||
#include <init.h>
|
||||
#include <asm/u-boot.h>
|
||||
#include "cpu.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
int dram_init(void)
|
||||
{
|
||||
debug("Phytium ddr init\n");
|
||||
ddr_init();
|
||||
|
||||
gd->mem_clk = 0;
|
||||
gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, 0x7b000000);
|
||||
|
||||
sec_init();
|
||||
debug("PBF relocate done\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void reset_cpu(void)
|
||||
{
|
||||
struct arm_smccc_res res;
|
||||
|
||||
debug("run in reset cpu\n");
|
||||
arm_smccc_smc(0x84000009, 0, 0, 0, 0, 0, 0, 0, &res);
|
||||
if (res.a0 != 0)
|
||||
panic("reset cpu error, %lx\n", res.a0);
|
||||
}
|
||||
|
||||
int mach_cpu_init(void)
|
||||
{
|
||||
check_reset();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
pcie_init();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct mm_region pomelo_mem_map[] = {
|
||||
{
|
||||
.virt = 0x0UL,
|
||||
.phys = 0x0UL,
|
||||
.size = 0x80000000UL,
|
||||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
|
||||
PTE_BLOCK_NON_SHARE |
|
||||
PTE_BLOCK_PXN |
|
||||
PTE_BLOCK_UXN
|
||||
},
|
||||
{
|
||||
.virt = 0x80000000UL,
|
||||
.phys = 0x80000000UL,
|
||||
.size = 0x7b000000UL,
|
||||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
|
||||
PTE_BLOCK_NS |
|
||||
PTE_BLOCK_INNER_SHARE
|
||||
},
|
||||
{
|
||||
0,
|
||||
}
|
||||
};
|
||||
|
||||
struct mm_region *mem_map = pomelo_mem_map;
|
||||
|
||||
int __asm_flush_l3_dcache(void)
|
||||
{
|
||||
int i, pstate;
|
||||
|
||||
for (i = 0; i < HNF_COUNT; i++)
|
||||
writeq(HNF_PSTATE_SFONLY, HNF_PSTATE_REQ + i * HNF_STRIDE);
|
||||
for (i = 0; i < HNF_COUNT; i++) {
|
||||
do {
|
||||
pstate = readq(HNF_PSTATE_STAT + i * HNF_STRIDE);
|
||||
} while ((pstate & 0xf) != (HNF_PSTATE_SFONLY << 2));
|
||||
}
|
||||
|
||||
for (i = 0; i < HNF_COUNT; i++)
|
||||
writeq(HNF_PSTATE_FULL, HNF_PSTATE_REQ + i * HNF_STRIDE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int last_stage_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* pci e */
|
||||
pci_init();
|
||||
/* scsi scan */
|
||||
ret = scsi_scan(true);
|
||||
if (ret) {
|
||||
printf("scsi scan failed\n");
|
||||
return CMD_RET_FAILURE;
|
||||
}
|
||||
return ret;
|
||||
}
|
37
board/phytium/pomelo/sec.c
Normal file
37
board/phytium/pomelo/sec.c
Normal file
|
@ -0,0 +1,37 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2021
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include <init.h>
|
||||
#include "cpu.h"
|
||||
|
||||
struct common_config {
|
||||
u32 magic;
|
||||
u32 version;
|
||||
u32 size;
|
||||
u8 rev1[4];
|
||||
u64 core_bit_map;
|
||||
} __attribute((aligned(4)));
|
||||
|
||||
struct common_config const common_base_info = {
|
||||
.magic = PARAMETER_COMMON_MAGIC,
|
||||
.version = 0x1,
|
||||
.core_bit_map = 0x3333,
|
||||
};
|
||||
|
||||
void sec_init(void)
|
||||
{
|
||||
u8 buffer[0x100];
|
||||
struct arm_smccc_res res;
|
||||
|
||||
memcpy(buffer, &common_base_info, sizeof(common_base_info));
|
||||
arm_smccc_smc(CPU_INIT_SEC_SVC, 0, (u64)buffer, 0, 0, 0, 0, 0, &res);
|
||||
if (res.a0 != 0)
|
||||
panic("SEC init failed :0x%lx\n", res.a0);
|
||||
}
|
|
@ -447,6 +447,8 @@ int misc_init_r(void)
|
|||
env_set(expansion_config.env_var, expansion_config.env_setting);
|
||||
|
||||
twl4030_power_init();
|
||||
twl4030_power_mmc_init(0);
|
||||
|
||||
switch (get_board_revision()) {
|
||||
case REVISION_XM_AB:
|
||||
twl4030_led_init(TWL4030_LED_LEDEN_LEDBON);
|
||||
|
@ -499,17 +501,3 @@ void set_muxconf_regs(void)
|
|||
{
|
||||
MUX_BEAGLE();
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MMC)
|
||||
int board_mmc_init(struct bd_info *bis)
|
||||
{
|
||||
return omap_mmc_init(0, 0, 0, -1, -1);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_MMC)
|
||||
void board_mmc_power_init(void)
|
||||
{
|
||||
twl4030_power_mmc_init(0);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -29,7 +29,7 @@ CONFIG_DISTRO_DEFAULTS=y
|
|||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_LOAD_FIT_ADDRESS=0x81000000
|
||||
# CONFIG_USE_SPL_FIT_GENERATOR is not set
|
||||
CONFIG_BOOTCOMMAND="run findfdt; run distro_bootcmd; run init_${boot}; run main_cpsw0_qsgmii_phyinit; run get_kern_${boot}; run get_fdt_${boot}; run get_overlay_${boot}; run run_kern"
|
||||
CONFIG_BOOTCOMMAND="run findfdt; run distro_bootcmd; run init_${boot}; run main_cpsw0_qsgmii_phyinit; run boot_rprocs; run get_kern_${boot}; run get_fdt_${boot}; run get_overlay_${boot}; run run_kern"
|
||||
CONFIG_LOGLEVEL=7
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
|
|
|
@ -30,7 +30,7 @@ CONFIG_SPL_LOAD_FIT=y
|
|||
CONFIG_SPL_LOAD_FIT_ADDRESS=0x81000000
|
||||
CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
|
||||
# CONFIG_USE_SPL_FIT_GENERATOR is not set
|
||||
CONFIG_BOOTCOMMAND="run findfdt; run envboot; run init_${boot}; run boot_rprocs; run get_fit_${boot}; run get_overlaystring; run run_fit"
|
||||
CONFIG_BOOTCOMMAND="run findfdt; run envboot; run init_${boot}; run main_cpsw0_qsgmii_phyinit; run boot_rprocs; run get_fit_${boot}; run get_overlaystring; run run_fit"
|
||||
CONFIG_LOGLEVEL=7
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
|
|
|
@ -83,6 +83,13 @@ CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
|
|||
CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
|
||||
CONFIG_SYS_NAND_U_BOOT_OFFS=0x80000
|
||||
CONFIG_DM_ETH=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCTRL_SINGLE=y
|
||||
CONFIG_DM_PMIC=y
|
||||
# CONFIG_SPL_PMIC_CHILDREN is not set
|
||||
CONFIG_DM_REGULATOR=y
|
||||
CONFIG_DM_REGULATOR_FIXED=y
|
||||
CONFIG_DM_REGULATOR_GPIO=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_DM_SPI=y
|
||||
CONFIG_OMAP3_SPI=y
|
||||
|
|
21
configs/pomelo_defconfig
Normal file
21
configs/pomelo_defconfig
Normal file
|
@ -0,0 +1,21 @@
|
|||
CONFIG_ARM=y
|
||||
CONFIG_TARGET_POMELO=y
|
||||
CONFIG_SYS_TEXT_BASE=0x180000
|
||||
CONFIG_SYS_MALLOC_LEN=0x101000
|
||||
CONFIG_NR_DRAM_BANKS=1
|
||||
CONFIG_DEFAULT_DEVICE_TREE="phytium-pomelo"
|
||||
CONFIG_SYS_PCI_64BIT=y
|
||||
CONFIG_DISTRO_DEFAULTS=y
|
||||
CONFIG_SYS_LOAD_ADDR=0x90000000
|
||||
CONFIG_USE_BOOTARGS=y
|
||||
CONFIG_BOOTARGS="console=ttyAMA0,115200 earlycon=pl011,0x28001000 root=/dev/sda2 rw"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_BOARD_EARLY_INIT_F=y
|
||||
CONFIG_LAST_STAGE_INIT=y
|
||||
CONFIG_SYS_PROMPT="pomelo#"
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
CONFIG_DM_PCI_COMPAT=y
|
||||
CONFIG_PCIE_ECAM_GENERIC=y
|
||||
CONFIG_PCI_PHYTIUM=y
|
||||
CONFIG_PL01X_SERIAL=y
|
|
@ -1,56 +1,41 @@
|
|||
if RAM || SPL_RAM
|
||||
menuconfig ASPEED_RAM
|
||||
bool "ASPEED SDRAM configuration"
|
||||
depends on RAM && ARCH_ASPEED
|
||||
default ARCH_ASPEED
|
||||
help
|
||||
Configuration options for DDR SDRAM on ASPEED systems.
|
||||
|
||||
RAM initialisation is always built in for the platform. This menu
|
||||
allows customisation of the configuration used.
|
||||
|
||||
if ASPEED_RAM
|
||||
|
||||
config ASPEED_DDR4_DUALX8
|
||||
bool "Enable Dual X8 DDR4 die"
|
||||
depends on DM && OF_CONTROL && ARCH_ASPEED
|
||||
depends on ASPEED_RAM
|
||||
help
|
||||
Say Y if dual X8 DDR4 die is used on the board. The aspeed ddr sdram
|
||||
controller needs to know if the memory chip mounted on the board is dual
|
||||
x8 die or not. Or it may get the wrong size of the memory space.
|
||||
|
||||
if ASPEED_AST2600
|
||||
|
||||
choice
|
||||
prompt "DDR4 target date rate"
|
||||
default ASPEED_DDR4_1600
|
||||
|
||||
config ASPEED_DDR4_400
|
||||
bool "DDR4 targets at 400Mbps"
|
||||
depends on DM && OF_CONTROL && ARCH_ASPEED
|
||||
help
|
||||
select DDR4 target data rate at 400M
|
||||
|
||||
config ASPEED_DDR4_800
|
||||
bool "DDR4 targets at 800Mbps"
|
||||
depends on DM && OF_CONTROL && ARCH_ASPEED
|
||||
help
|
||||
select DDR4 target data rate at 800M
|
||||
|
||||
config ASPEED_DDR4_1333
|
||||
bool "DDR4 targets at 1333Mbps"
|
||||
depends on DM && OF_CONTROL && ARCH_ASPEED
|
||||
help
|
||||
select DDR4 target data rate at 1333M
|
||||
|
||||
config ASPEED_DDR4_1600
|
||||
bool "DDR4 targets at 1600Mbps"
|
||||
depends on DM && OF_CONTROL && ARCH_ASPEED
|
||||
help
|
||||
select DDR4 target data rate at 1600M
|
||||
endchoice
|
||||
Say Y if dual X8 DDR4 die is used on the board. The ASPEED DDRM
|
||||
SRAM controller needs to know if the memory chip mounted on the
|
||||
board is dual x8 die or not, otherwise it may get the wrong
|
||||
size of the memory space.
|
||||
|
||||
config ASPEED_BYPASS_SELFTEST
|
||||
bool "bypass self test during DRAM initialization"
|
||||
depends on ASPEED_RAM
|
||||
depends on ASPEED_AST2600
|
||||
bool "Bypass self test during initialization"
|
||||
help
|
||||
Say Y here to bypass DRAM self test to speed up the boot time
|
||||
Say Y here to bypass DRAM self test to speed up the boot time.
|
||||
|
||||
config ASPEED_ECC
|
||||
bool "aspeed SDRAM error correcting code"
|
||||
depends on DM && OF_CONTROL && ARCH_ASPEED
|
||||
bool "ASPEED SDRAM ECC"
|
||||
depends on ASPEED_RAM
|
||||
depends on ASPEED_AST2600
|
||||
help
|
||||
enable SDRAM ECC function
|
||||
Enable SDRAM ECC function. This configures the SDRAM controller to
|
||||
perform error detection and correction, sacrificing 1/9th of the
|
||||
installed RAM to do so.
|
||||
|
||||
|
||||
if ASPEED_ECC
|
||||
config ASPEED_ECC_SIZE
|
||||
int "ECC size: 0=driver auto-caluated"
|
||||
depends on ASPEED_ECC
|
||||
|
@ -61,6 +46,32 @@ config ASPEED_ECC_SIZE
|
|||
can be used by the system. The remaining 1/9 will be used by
|
||||
the ECC engine. If the size is set to 0, the sdram driver will
|
||||
calculate the SDRAM size and set the whole range be ECC enabled.
|
||||
endif # end of ASPEED_ECC
|
||||
endif # end of ASPEED_AST2600
|
||||
endif # end of RAM || SPL_RAM
|
||||
|
||||
choice
|
||||
prompt "AST2600 DDR4 target date rate"
|
||||
default ASPEED_DDR4_1600
|
||||
depends on ASPEED_RAM
|
||||
depends on ASPEED_AST2600
|
||||
|
||||
config ASPEED_DDR4_400
|
||||
bool "400Mbps"
|
||||
help
|
||||
select DDR4 target data rate at 400M
|
||||
|
||||
config ASPEED_DDR4_800
|
||||
bool "800Mbps"
|
||||
help
|
||||
select DDR4 target data rate at 800M
|
||||
|
||||
config ASPEED_DDR4_1333
|
||||
bool "1333Mbps"
|
||||
help
|
||||
select DDR4 target data rate at 1333M
|
||||
|
||||
config ASPEED_DDR4_1600
|
||||
bool "1600Mbps"
|
||||
help
|
||||
select DDR4 target data rate at 1600M
|
||||
endchoice
|
||||
|
||||
endif # End of ASPEED_RAM
|
||||
|
|
|
@ -122,9 +122,8 @@
|
|||
"partitions=" PARTS_DEFAULT
|
||||
|
||||
/* Set the default list of remote processors to boot */
|
||||
#if defined(CONFIG_TARGET_J721E_A72_EVM) || defined(CONFIG_TARGET_J7200_A72_EVM)
|
||||
#if defined(CONFIG_TARGET_J7200_A72_EVM)
|
||||
#define EXTRA_ENV_CONFIG_MAIN_CPSW0_QSGMII_PHY \
|
||||
"dorprocboot=1\0" \
|
||||
"do_main_cpsw0_qsgmii_phyinit=1\0" \
|
||||
"init_main_cpsw0_qsgmii_phy=gpio set gpio@22_17;" \
|
||||
"gpio clear gpio@22_16\0" \
|
||||
|
@ -136,6 +135,22 @@
|
|||
#ifdef DEFAULT_RPROCS
|
||||
#undef DEFAULT_RPROCS
|
||||
#endif
|
||||
#elif defined(CONFIG_TARGET_J721E_A72_EVM)
|
||||
#define EXTRA_ENV_CONFIG_MAIN_CPSW0_QSGMII_PHY \
|
||||
"init_main_cpsw0_qsgmii_phy=gpio set gpio@22_17;" \
|
||||
"gpio clear gpio@22_16\0" \
|
||||
"main_cpsw0_qsgmii_phyinit=" \
|
||||
"if test $board_name = J721EX-PM1-SOM || test $board_name = J721EX-PM2-SOM " \
|
||||
"|| test $board_name = j721e; then " \
|
||||
"do_main_cpsw0_qsgmii_phyinit=1; else " \
|
||||
"do_main_cpsw0_qsgmii_phyinit=0; fi;" \
|
||||
"if test ${do_main_cpsw0_qsgmii_phyinit} -eq 1 && test ${dorprocboot} -eq 1 && " \
|
||||
"test ${boot} = mmc; then " \
|
||||
"run init_main_cpsw0_qsgmii_phy;" \
|
||||
"fi;\0"
|
||||
#ifdef DEFAULT_RPROCS
|
||||
#undef DEFAULT_RPROCS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_TARGET_J721E_A72_EVM
|
||||
|
|
38
include/configs/pomelo.h
Normal file
38
include/configs/pomelo.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright (C) 2021
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
|
||||
#ifndef __POMELO_CONFIG_H__
|
||||
#define __POMELO_CONFIG_H__
|
||||
|
||||
/* SDRAM Bank #1 start address */
|
||||
#define CONFIG_SYS_SDRAM_BASE 0x80000000
|
||||
|
||||
/* SIZE of malloc pool */
|
||||
#define CONFIG_SYS_INIT_SP_ADDR (0x29800000 + 0x1a000)
|
||||
|
||||
/*BOOT*/
|
||||
#define CONFIG_SYS_BOOTM_LEN 0x3c00000
|
||||
|
||||
#ifndef CONFIG_SPL_BUILD
|
||||
#define BOOT_TARGET_DEVICES(func) \
|
||||
func(SCSI, scsi, 0) \
|
||||
|
||||
#include <config_distro_bootcmd.h>
|
||||
#endif
|
||||
|
||||
/* Initial environment variables */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"image=Image\0" \
|
||||
BOOTENV \
|
||||
"scriptaddr=0x90100000\0" \
|
||||
"kernel_addr_r=0x90200000\0" \
|
||||
"fdt_addr_r=0x95000000\0" \
|
||||
"boot_fit=no\0" \
|
||||
"fdtfile=phytium-pomelo.dtb\0" \
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in a new issue