]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
initial support
authorDuje Mihanović <duje.mihanovic@skole.hr>
Tue, 17 Dec 2024 20:17:10 +0000 (21:17 +0100)
committerDuje Mihanović <duje.mihanovic@skole.hr>
Tue, 17 Dec 2024 20:17:10 +0000 (21:17 +0100)
This makes the screen gray, implying lowlevel_init() at least is
reached.

15 files changed:
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/dts/Makefile
arch/arm/dts/pxa1908-samsung-coreprimevelte.dts [new file with mode: 0644]
arch/arm/dts/pxa1908.dtsi [new file with mode: 0644]
arch/arm/mach-mmp/Kconfig [new file with mode: 0644]
arch/arm/mach-mmp/Makefile [new file with mode: 0644]
arch/arm/mach-mmp/mmu.c [new file with mode: 0644]
board/samsung/coreprimevelte/Kconfig [new file with mode: 0644]
board/samsung/coreprimevelte/Makefile [new file with mode: 0644]
board/samsung/coreprimevelte/coreprimevelte.c [new file with mode: 0644]
configs/coreprimevelte_defconfig [new file with mode: 0644]
drivers/serial/ns16550.c
include/configs/pxa1908.h [new file with mode: 0644]
include/dt-bindings/clock/marvell,pxa1908.h [new file with mode: 0644]

index 7282c4123b08fab50c1ce3de125a19a4faf5cf1f..71084d8aaecc40bcc134224ecac589e21458e755 100644 (file)
@@ -841,6 +841,12 @@ config ARCH_MEDIATEK
          Support for the MediaTek SoCs family developed by MediaTek Inc.
          Please refer to doc/README.mediatek for more information.
 
+config ARCH_MMP
+       bool "Marvell MMP"
+       select ARM64
+       select DM
+       select DM_SERIAL
+
 config ARCH_LPC32XX
        bool "NXP LPC32xx platform"
        select CPU_ARM926EJS
@@ -2320,6 +2326,8 @@ source "arch/arm/mach-meson/Kconfig"
 
 source "arch/arm/mach-mediatek/Kconfig"
 
+source "arch/arm/mach-mmp/Kconfig"
+
 source "arch/arm/mach-qemu/Kconfig"
 
 source "arch/arm/mach-rockchip/Kconfig"
index cb87a68475406890713ad356024ee16b53ae464e..7334e79965f1f4701cf1d2aed13ccb24d2138507 100644 (file)
@@ -69,6 +69,7 @@ machine-$(CONFIG_ARCH_KIRKWOOD)               += kirkwood
 machine-$(CONFIG_ARCH_LPC32XX)         += lpc32xx
 machine-$(CONFIG_ARCH_MEDIATEK)                += mediatek
 machine-$(CONFIG_ARCH_MESON)           += meson
+machine-$(CONFIG_ARCH_MMP)             += mmp
 machine-$(CONFIG_ARCH_MVEBU)           += mvebu
 machine-$(CONFIG_ARCH_NEXELL)          += nexell
 machine-$(CONFIG_ARCH_NPCM)             += npcm
index 6ad59aeed5f684959845833d708bf1b37937f135..9848e13a7ad2f4ad464f69eecbf3e471270aa7db 100644 (file)
@@ -1,5 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0+
 
+dtb-$(CONFIG_TARGET_COREPRIMEVELTE) += pxa1908-samsung-coreprimevelte.dtb
+
 dtb-$(CONFIG_TARGET_SMARTWEB) += at91sam9260-smartweb.dtb
 dtb-$(CONFIG_TARGET_TAURUS) += at91sam9g20-taurus.dtb
 dtb-$(CONFIG_TARGET_CORVUS) += at91sam9g45-corvus.dtb
diff --git a/arch/arm/dts/pxa1908-samsung-coreprimevelte.dts b/arch/arm/dts/pxa1908-samsung-coreprimevelte.dts
new file mode 100644 (file)
index 0000000..5749b5f
--- /dev/null
@@ -0,0 +1,602 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "pxa1908.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+
+/ {
+       pxa,rev-id = <3928 2>;
+       model = "Samsung Galaxy Core Prime VE LTE";
+       compatible = "samsung,coreprimevelte", "marvell,pxa1908";
+
+       aliases {
+               mmc0 = &sdh2; /* eMMC */
+               mmc1 = &sdh0; /* SD card */
+               mmc2 = &sdh1; /* SDIO */
+               serial0 = &uart0;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               stdout-path = "serial0:115200n8";
+
+               /* S-Boot places the initramfs here */
+               linux,initrd-start = <0x4d70000>;
+               linux,initrd-end = <0x5000000>;
+
+               fb0: framebuffer@17177000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0x17177000 0 (480 * 800 * 4)>;
+                       width = <480>;
+                       height = <800>;
+                       stride = <(480 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x1000000 0 0x1f000000>,
+                     <0 0x20000000 0 0x20000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer@17000000 {
+                       reg = <0 0x17000000 0 0x1800000>;
+                       no-map;
+               };
+
+               gpu@9000000 {
+                       reg = <0 0x9000000 0 0x1000000>;
+               };
+
+               /* Communications processor, aka modem */
+               cp@5000000 {
+                       reg = <0 0x5000000 0 0x3000000>;
+               };
+
+               cm3@a000000 {
+                       reg = <0 0xa000000 0 0x80000>;
+               };
+
+               seclog@8000000 {
+                       reg = <0 0x8000000 0 0x100000>;
+               };
+
+               ramoops@8100000 {
+                       compatible = "ramoops";
+                       reg = <0 0x8100000 0 0x40000>;
+                       record-size = <0x8000>;
+                       console-size = <0x20000>;
+                       max-reason = <5>;
+               };
+       };
+
+
+       i2c-muic {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio 30 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio 29 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               i2c-gpio,delay-us = <3>;
+               i2c-gpio,timeout-ms = <100>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_muic_pins>;
+
+               muic: extcon@14 {
+                       compatible = "siliconmitus,sm5504-muic";
+                       reg = <0x14>;
+                       interrupt-parent = <&gpio>;
+                       interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_pins>;
+               autorepeat;
+
+               key-home {
+                       label = "Home";
+                       linux,code = <KEY_HOME>;
+                       gpios = <&gpio 50 GPIO_ACTIVE_LOW>;
+               };
+
+               key-volup {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+               };
+
+               key-voldown {
+                       label = "Volume Down";
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       backlight {
+               compatible = "kinetic,ktd2801";
+               ctrl-gpios = <&gpio 97 GPIO_ACTIVE_HIGH>;
+               max-brightness = <210>;
+       };
+
+       wlan_pwrseq: pwrseq0 {
+               compatible = "mmc-pwrseq-simple";
+               powerdown-gpios = <&gpio 57 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&gpio 58 GPIO_ACTIVE_HIGH>;
+       };
+
+       vibrator {
+               compatible = "pwm-vibrator";
+               pwm-names = "enable";
+               pwms = <&pwm 100000>;
+               enable-gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vibrator_pins>;
+       };
+};
+
+&smmu {
+       status = "okay";
+};
+
+&pmx {
+       pinctrl-single,gpio-range = <&range 55 55 0>,
+                                   <&range 110 32 0>,
+                                   <&range 52 1 0>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&board_pins_1 &board_pins_2 &board_pins_3>;
+
+       board_pins_1: pinmux-board-1 {
+               pinctrl-single,pins = <
+                       0x160 0
+                       0x164 0
+                       0x168 0
+                       0x16c 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0x8000 0x8000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0x8000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       board_pins_2: pinmux-board-2 {
+               pinctrl-single,pins = <
+                       0x44 1
+                       0x48 1
+                       0x20 1
+                       0x18 1
+                       0x14 1
+                       0x10 1
+                       0xc 1
+                       0x8 1
+                       0x68 1
+                       0x58 0
+                       0x54 0
+                       0x7c 0
+                       0x6c 0
+                       0x70 0
+                       0x4c 1
+                       0x50 1
+                       0xac 0
+                       0x90 0
+                       0x8c 0
+                       0x88 0
+                       0x84 0
+                       0xc8 0
+                       0x128 0
+                       0x190 0
+                       0x194 0
+                       0x1a0 0
+                       0x114 0
+                       0x118 0
+                       0x1d8 0
+                       0x1e4 0
+                       0xe8 0
+                       0x100 0
+                       0x204 0
+                       0x210 0
+                       0x218 0
+               >;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xc000>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       board_pins_3: pinmux-board-3 {
+               pinctrl-single,pins = <
+                       0x260 0
+                       0x264 0
+                       0x268 0
+                       0x26c 0
+                       0x270 0
+                       0x274 0
+                       0x78 0
+                       0x74 0
+                       0xb0 1
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       uart0_pins: pinmux-uart0 {
+               pinctrl-single,pins = <
+                       0x198 6
+                       0x19c 6
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       gpio_keys_pins: pinmux-gpio-keys {
+               pinctrl-single,pins = <
+                       0x11c 0
+                       0x120 0
+                       0x1a4 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa0000 0x8000 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       i2c_muic_pins: pinmux-i2c-muic {
+               pinctrl-single,pins = <
+                       0x154 0
+                       0x150 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       sdh0_pins_1: pinmux-sdh0-1 {
+               pinctrl-single,pins = <
+                       0x108 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh0_pins_2: pinmux-sdh0-2 {
+               pinctrl-single,pins = <
+                       0x94 0
+                       0x98 0
+                       0x9c 0
+                       0xa0 0
+                       0xa4 0
+               >;
+               pinctrl-single,drive-strength = <0x800 0x1800>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh0_pins_3: pinmux-sdh0-3 {
+               pinctrl-single,pins = <
+                       0xa8 0
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x208 0x388>;
+       };
+
+       sdh1_pins_1: pinmux-sdh1-1 {
+               pinctrl-single,pins = <
+                       0x170 1
+                       0x174 1
+                       0x178 1
+                       0x17c 1
+                       0x180 1>;
+                       pinctrl-single,drive-strength = <0x1000 0x1800>;
+                       pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+                       pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+                       pinctrl-single,input-schmitt = <0 0x30>;
+                       pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+                       pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh1_pins_2: pinmux-sdh1-2 {
+               pinctrl-single,pins = <0x184 1>;
+               pinctrl-single,drive-strength = <0x800 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x208 0x388>;
+       };
+
+       sdh1_pins_3: pinmux-sdh1-3 {
+               pinctrl-single,pins = <0xec 0>;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0x8000 0x8000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0x8000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh1_edge_wakeup: pinmux-sdh1-edge-wakeup {
+               pinctrl-single,pins = <0x178 1>;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0x8000 0x8000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0x8000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0x30 0x30>;
+               pinctrl-single,input-schmitt-enable = <0 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh1_pins_1_fast: pinmux-sdh1-1-fast {
+               pinctrl-single,pins = <
+                       0x170 1
+                       0x174 1
+                       0x178 1
+                       0x17c 1
+                       0x180 1
+               >;
+               pinctrl-single,drive-strength = <0x1800 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh1_pins_2_fast: pinmux-sdh1-2-fast {
+               pinctrl-single,pins = <
+                       0x184 1
+               >;
+               pinctrl-single,drive-strength = <0x1800 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x208 0x388>;
+       };
+
+       sdh2_pins_1: pinmux-sdh2-1 {
+               pinctrl-single,pins = <
+                       0x24 1
+                       0x28 1
+                       0x2c 1
+                       0x30 1
+                       0x34 1
+                       0x38 1
+                       0x3c 1
+                       0x40 1
+               >;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh2_pins_2: pinmux-sdh2-2 {
+               pinctrl-single,pins = <0x64 1>;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x208 0x388>;
+       };
+
+       sdh2_pins_3: pinmux-sdh2-3 {
+               pinctrl-single,pins = <0x5c 1>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       sdh2_pins_1_fast: pinmux-sdh2-1-fast {
+               pinctrl-single,pins = <
+                       0x24 1
+                       0x28 1
+                       0x2c 1
+                       0x30 1
+                       0x34 1
+                       0x38 1
+                       0x3c 1
+                       0x40 1
+               >;
+               pinctrl-single,drive-strength = <0x1800 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+
+       sdh2_pins_2_fast: pinmux-sdh2-2-fast {
+               pinctrl-single,pins = <0x64 1>;
+               pinctrl-single,drive-strength = <0x1800 0x1800>;
+               pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0x208 0x388>;
+       };
+
+       sdh2_pins_3_fast: pinmux-sdh2-3-fast {
+               pinctrl-single,pins = <0x5c 1>;
+               pinctrl-single,drive-strength = <0x1800 0x1800>;
+               pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
+               pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
+               pinctrl-single,low-power-mode = <0x288 0x388>;
+       };
+
+       vibrator_pins: pinmux-vibrator {
+               pinctrl-single,pins = <0x12c 0>;
+               pinctrl-single,drive-strength = <0x1000 0x1800>;
+               pinctrl-single,bias-pullup = <0x8000 0xc000 0x8000 0xc000>;
+               pinctrl-single,bias-pulldown = <0xa000 0xa000 0 0xa000>;
+               pinctrl-single,input-schmitt = <0 0x30>;
+               pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
+               pinctrl-single,low-power-mode = <0 0x388>;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+};
+
+&twsi0 {
+       status = "okay";
+};
+
+&twsi1 {
+       status = "okay";
+};
+
+&twsi2 {
+       status = "okay";
+
+       pmic@30 {
+               compatible = "marvell,88pm886-a1";
+               reg = <0x30>;
+               interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-parent = <&gic>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+
+               onkey {
+                       compatible = "marvell,88pm88x-onkey";
+                       wakeup-source;
+               };
+
+               regulators {
+                       ldo2: ldo2 {
+                               regulator-min-microvolt = <3100000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo15: ldo15 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       buck2: buck2 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+               };
+       };
+};
+
+&twsi3 {
+       status = "okay";
+
+       touchscreen@50 {
+               compatible = "imagis,ist3032c";
+               reg = <0x50>;
+               interrupt-parent = <&gpio>;
+               interrupts = <72 IRQ_TYPE_EDGE_FALLING>;
+               vdd-supply = <&ldo2>;
+               touchscreen-size-x = <480>;
+               touchscreen-size-y = <800>;
+               linux,code = <KEY_APPSELECT>, <KEY_BACK>;
+       };
+};
+
+&usb {
+       extcon = <&muic>, <&muic>;
+};
+
+&sdh2 {
+       pinctrl-names = "default", "state_uhs";
+       pinctrl-0 = <&sdh2_pins_1 &sdh2_pins_2 &sdh2_pins_3>;
+       pinctrl-1 = <&sdh2_pins_1_fast &sdh2_pins_2_fast &sdh2_pins_3_fast>;
+       bus-width = <8>;
+       non-removable;
+       mmc-ddr-1_8v;
+};
+
+&sdh0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdh0_pins_1 &sdh0_pins_2 &sdh0_pins_3>;
+       cd-gpios = <&gpio 11 0>;
+       cd-inverted;
+       bus-width = <4>;
+       wp-inverted;
+};
+
+&sdh1 {
+       status = "okay";
+       pinctrl-names = "default", "state_uhs";
+       pinctrl-0 = <&sdh1_pins_1 &sdh1_pins_2 &sdh1_pins_3>;
+       pinctrl-1 = <&sdh1_pins_1_fast &sdh1_pins_2_fast &sdh1_pins_3>;
+       pinctrl-2 = <&sdh1_edge_wakeup>;
+       bus-width = <4>;
+       max-frequency = <200000000>;
+       cap-sd-highspeed;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       keep-power-in-suspend;
+       wakeup-source;
+       cap-sdio-irq;
+       vmmc-supply = <&ldo15>;
+       vqmmc-supply = <&buck2>;
+       mmc-pwrseq = <&wlan_pwrseq>;
+       non-removable;
+       cap-power-off-card;
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       mwifiex: wifi@1 {
+               compatible = "marvell,sd8777";
+               reg = <1>;
+               interrupt-parent = <&gpio>;
+               interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
+               marvell,wakeup-pin = <3>;
+       };
+
+       btmrvl: bluetooth@2 {
+               compatible = "marvell,sd8777-bt";
+               reg = <2>;
+               interrupt-parent = <&gpio>;
+               interrupts = <40 IRQ_TYPE_LEVEL_LOW>;
+
+               marvell,cal-data = /bits/ 8 <
+                       0x00 0x1c 0xfa 0x37 0xff 0xff 0xff 0xff 0x00 0x0d 0x7f 0x01
+                       0xce 0xba 0x00 0x00 0x00 0x2d 0xc6 0xc0 0x00 0x00 0x00 0x00
+                       0x00 0xf0 0x00 0x00>;
+       };
+};
diff --git a/arch/arm/dts/pxa1908.dtsi b/arch/arm/dts/pxa1908.dtsi
new file mode 100644 (file)
index 0000000..b0c9f80
--- /dev/null
@@ -0,0 +1,311 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/dts-v1/;
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/marvell,pxa1908.h>
+
+/ {
+       model = "Marvell Armada PXA1908";
+       compatible = "marvell,pxa1908";
+       #address-cells = <2>;
+       #size-cells = <2>;
+       interrupt-parent = <&gic>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 1>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 2>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0 3>;
+                       enable-method = "psci";
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                       <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                       <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+                       <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                       <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                       <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                       <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               smmu: iommu@c0010000 {
+                       compatible = "arm,mmu-400";
+                       reg = <0 0xc0010000 0 0x10000>;
+                       #global-interrupts = <1>;
+                       #iommu-cells = <1>;
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               gic: interrupt-controller@d1df9000 {
+                       compatible = "arm,gic-400";
+                       reg = <0 0xd1df9000 0 0x1000>,
+                               <0 0xd1dfa000 0 0x2000>,
+                               /* The subsequent registers are guesses. */
+                               <0 0xd1dfc000 0 0x2000>,
+                               <0 0xd1dfe000 0 0x2000>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+               };
+
+               apb@d4000000 {
+                       compatible = "simple-bus";
+                       reg = <0 0xd4000000 0 0x200000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0 0xd4000000 0x200000>;
+
+                       pdma: dma-controller@0 {
+                               compatible = "marvell,pdma-1.0";
+                               reg = <0 0x10000>;
+                               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                               dma-channels = <30>;
+                               #dma-cells = <2>;
+                       };
+
+                       twsi1: i2c@10800 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x10800 0x64>;
+                               interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_TWSI1>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       twsi0: i2c@11000 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x11000 0x64>;
+                               interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_TWSI0>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       twsi3: i2c@13800 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x13800 0x64>;
+                               interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbc PXA1908_CLK_TWSI3>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       apbc: clock-controller@15000 {
+                               compatible = "marvell,pxa1908-apbc";
+                               reg = <0x15000 0x1000>;
+                               #clock-cells = <1>;
+                       };
+
+                       uart0: serial@17000 {
+                               compatible = "mrvl,mmp-uart", "intel,xscale-uart", "ns16550";
+                               reg = <0x17000 0x1000>;
+                               interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+                               clock-frequency = <14745600>;
+                               reg-shift = <2>;
+                       };
+
+                       uart1: serial@18000 {
+                               compatible = "mrvl,mmp-uart", "intel,xscale-uart", "ns16550";
+                               reg = <0x18000 0x1000>;
+                               interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                               clock-frequency = <14745600>;
+                               reg-shift = <2>;
+                       };
+
+                       gpio: gpio@19000 {
+                               compatible = "marvell,mmp-gpio";
+                               reg = <0x19000 0x800>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               clocks = <&apbc PXA1908_CLK_GPIO>;
+                               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "gpio_mux";
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               ranges = <0 0x19000 0x800>;
+
+                               gpio@0 {
+                                       reg = <0x0 0x4>;
+                               };
+
+                               gpio@4 {
+                                       reg = <0x4 0x4>;
+                               };
+
+                               gpio@8 {
+                                       reg = <0x8 0x4>;
+                               };
+
+                               gpio@100 {
+                                       reg = <0x100 0x4>;
+                               };
+                       };
+
+                       pwm: pwm@1ac00 {
+                               compatible = "marvell,pxa250-pwm";
+                               reg = <0x1ac00 0x10>;
+                               #pwm-cells = <1>;
+                               clocks = <&apbc PXA1908_CLK_PWM3>;
+                       };
+
+                       pmx: pinmux@1e000 {
+                               compatible = "marvell,pxa1908-padconf", "pinconf-single";
+                               reg = <0x1e000 0x330>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               #gpio-range-cells = <3>;
+                               ranges;
+
+                               #pinctrl-cells = <1>;
+                               pinctrl-single,register-width = <32>;
+                               pinctrl-single,function-mask = <7>;
+
+                               range: gpio-range {
+                                       #pinctrl-single,gpio-range-cells = <3>;
+                               };
+                       };
+
+                       uart2: serial@36000 {
+                               compatible = "mrvl,mmp-uart", "intel,xscale-uart", "ns16550";
+                               reg = <0x36000 0x1000>;
+                               interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+                               clock-frequency = <117000000>;
+                               reg-shift = <2>;
+                       };
+
+                       twsi2: i2c@37000 {
+                               compatible = "mrvl,mmp-twsi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x37000 0x64>;
+                               interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apbcp PXA1908_CLK_TWSI2>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       apbcp: clock-controller@3b000 {
+                               compatible = "marvell,pxa1908-apbcp";
+                               reg = <0x3b000 0x1000>;
+                               #clock-cells = <1>;
+                       };
+
+                       mpmu: clock-controller@50000 {
+                               compatible = "marvell,pxa1908-mpmu";
+                               reg = <0x50000 0x1000>;
+                               #clock-cells = <1>;
+                       };
+               };
+
+               axi@d4200000 {
+                       compatible = "simple-bus";
+                       reg = <0 0xd4200000 0 0x200000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0 0xd4200000 0x200000>;
+
+                       usbphy: phy@7000 {
+                               compatible = "marvell,pxa1928-usb-phy";
+                               reg = <0x7000 0x200>;
+                               clocks = <&apmu PXA1908_CLK_USB>;
+                               #phy-cells = <0>;
+                       };
+
+                       usb: usb@8000 {
+                               compatible = "chipidea,usb2";
+                               reg = <0x8000 0x200>;
+                               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_USB>;
+                               phys = <&usbphy>;
+                               phy-names = "usb-phy";
+                       };
+
+                       sdh0: mmc@80000 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0x80000 0x120>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_SDH0>;
+                               clock-names = "io";
+                               mrvl,clk-delay-cycles = <31>;
+                       };
+
+                       sdh1: mmc@80800 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0x80800 0x120>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_SDH1>;
+                               clock-names = "io";
+                               mrvl,clk-delay-cycles = <31>;
+                       };
+
+                       sdh2: mmc@81000 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0x81000 0x120>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&apmu PXA1908_CLK_SDH2>;
+                               clock-names = "io";
+                               mrvl,clk-delay-cycles = <31>;
+                       };
+
+                       apmu: clock-controller@82800 {
+                               compatible = "marvell,pxa1908-apmu";
+                               reg = <0x82800 0x400>;
+                               #clock-cells = <1>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/mach-mmp/Kconfig b/arch/arm/mach-mmp/Kconfig
new file mode 100644 (file)
index 0000000..c01ec43
--- /dev/null
@@ -0,0 +1,12 @@
+if ARCH_MMP
+
+config TARGET_COREPRIMEVELTE
+       bool "coreprimevelte"
+       select LINUX_KERNEL_IMAGE_HEADER
+
+config LNX_KRNL_IMG_TEXT_OFFSET_BASE
+       default TEXT_BASE
+
+source "board/samsung/coreprimevelte/Kconfig"
+
+endif
diff --git a/arch/arm/mach-mmp/Makefile b/arch/arm/mach-mmp/Makefile
new file mode 100644 (file)
index 0000000..294e6c5
--- /dev/null
@@ -0,0 +1 @@
+obj-y += mmu.o
diff --git a/arch/arm/mach-mmp/mmu.c b/arch/arm/mach-mmp/mmu.c
new file mode 100644 (file)
index 0000000..10f1ee2
--- /dev/null
@@ -0,0 +1,26 @@
+#include <asm/armv8/mmu.h>
+#include <linux/sizes.h>
+#include <debug_uart.h>
+
+static struct mm_region pxa1908_mem_map[] = {
+       {
+               .virt = 0x0UL,
+               .phys = 0x0UL,
+               .size = 2UL * SZ_1G,
+               .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
+                        PTE_BLOCK_INNER_SHARE
+       },
+       {
+               .virt = 0x80000000UL,
+               .phys = 0x80000000UL,
+               .size = 2UL * SZ_1G,
+               .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+                        PTE_BLOCK_INNER_SHARE |
+                        PTE_BLOCK_PXN | PTE_BLOCK_UXN
+       },
+       {
+               0,
+       }
+};
+
+struct mm_region *mem_map = pxa1908_mem_map;
diff --git a/board/samsung/coreprimevelte/Kconfig b/board/samsung/coreprimevelte/Kconfig
new file mode 100644 (file)
index 0000000..78a8037
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_COREPRIMEVELTE
+
+config SYS_BOARD
+       default "coreprimevelte"
+
+config SYS_VENDOR
+       default "samsung"
+
+config SYS_CONFIG_NAME
+       default "pxa1908"
+
+endif
diff --git a/board/samsung/coreprimevelte/Makefile b/board/samsung/coreprimevelte/Makefile
new file mode 100644 (file)
index 0000000..9fb9822
--- /dev/null
@@ -0,0 +1 @@
+obj-y += coreprimevelte.o
diff --git a/board/samsung/coreprimevelte/coreprimevelte.c b/board/samsung/coreprimevelte/coreprimevelte.c
new file mode 100644 (file)
index 0000000..d7ed86a
--- /dev/null
@@ -0,0 +1,37 @@
+#include <debug_uart.h>
+#include <fdtdec.h>
+#include <asm/io.h>
+
+void lowlevel_init(void)
+{
+       debug_uart_init();
+       printascii(__func__);
+       for (int *i = (int *) 0x17200000; i < 0x17200000 + 0x177000; i++)
+               *i = 0x77777777;
+}
+
+int board_init(void)
+{
+       printascii("Reached board_init()\n");
+
+       u32 tmp = readl(0xd4015064);
+       if ((tmp >> 16) != 0x319)
+               return -1;
+
+       writel(tmp | 1, 0xd4015064);
+       writel(3, 0xd4101000);
+
+       return 0;
+}
+
+int dram_init(void)
+{
+       if (fdtdec_setup_mem_size_base() != 0)
+               printascii("fdtdec_setup_mem_size_base() has failed\n");
+
+       return 0;
+}
+
+void reset_cpu(void)
+{
+}
diff --git a/configs/coreprimevelte_defconfig b/configs/coreprimevelte_defconfig
new file mode 100644 (file)
index 0000000..524450b
--- /dev/null
@@ -0,0 +1,28 @@
+CONFIG_ARM=y
+CONFIG_COUNTER_FREQUENCY=26000000
+CONFIG_DRIVER_GICV2=y
+CONFIG_ARCH_CPU_INIT=y
+CONFIG_ARCH_MMP=y
+CONFIG_TEXT_BASE=0x1010000
+CONFIG_NR_DRAM_BANKS=2
+CONFIG_DEFAULT_DEVICE_TREE="pxa1908-samsung-coreprimevelte"
+CONFIG_TARGET_COREPRIMEVELTE=y
+CONFIG_SYS_LOAD_ADDR=0x1010000
+CONFIG_DEBUG_UART_BASE=0xd4017000
+CONFIG_DEBUG_UART_CLOCK=14745600
+CONFIG_ARMV8_PSCI=y
+CONFIG_DEBUG_UART=y
+CONFIG_LOCALVERSION="pxa1908"
+CONFIG_FIT=y
+CONFIG_LOG=y
+CONFIG_OF_CONTROL=y
+CONFIG_NO_NET=y
+CONFIG_CLK=y
+CONFIG_CPU=y
+CONFIG_CPU_ARMV8=y
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_SYS_NS16550=y
+CONFIG_SYS_NS16550_MEM32=y
+CONFIG_MBEDTLS_LIB=y
+# CONFIG_TOOLS_MKEFICAPSULE is not set
index 3f6860f39162df74c3d1f03d3f9aa90090216646..7772c2e9f1653c4e0b4e39e2f181c499d6450efd 100644 (file)
@@ -108,9 +108,7 @@ static inline int serial_in_shift(void *addr, int shift)
 static void serial_out_dynamic(struct ns16550_plat *plat, u8 *addr,
                               int value)
 {
-       if (plat->flags & NS16550_FLAG_IO) {
-               outb(value, addr);
-       } else if (plat->reg_width == 4) {
+       if (plat->reg_width == 4) {
                if (plat->flags & NS16550_FLAG_ENDIAN) {
                        if (plat->flags & NS16550_FLAG_BE)
                                out_be32(addr, value);
@@ -128,9 +126,7 @@ static void serial_out_dynamic(struct ns16550_plat *plat, u8 *addr,
 
 static int serial_in_dynamic(struct ns16550_plat *plat, u8 *addr)
 {
-       if (plat->flags & NS16550_FLAG_IO) {
-               return inb(addr);
-       } else if (plat->reg_width == 4) {
+       if (plat->reg_width == 4) {
                if (plat->flags & NS16550_FLAG_ENDIAN) {
                        if (plat->flags & NS16550_FLAG_BE)
                                return in_be32(addr);
diff --git a/include/configs/pxa1908.h b/include/configs/pxa1908.h
new file mode 100644 (file)
index 0000000..190032e
--- /dev/null
@@ -0,0 +1,3 @@
+#define CFG_SYS_SDRAM_BASE     0x01000000
+#define CFG_SYS_INIT_RAM_ADDR  0x17177000
+#define CFG_SYS_INIT_RAM_SIZE  0x4000
diff --git a/include/dt-bindings/clock/marvell,pxa1908.h b/include/dt-bindings/clock/marvell,pxa1908.h
new file mode 100644 (file)
index 0000000..fb15b0d
--- /dev/null
@@ -0,0 +1,88 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+#ifndef __DTS_MARVELL_PXA1908_CLOCK_H
+#define __DTS_MARVELL_PXA1908_CLOCK_H
+
+/* plls */
+#define PXA1908_CLK_CLK32              1
+#define PXA1908_CLK_VCTCXO             2
+#define PXA1908_CLK_PLL1_624           3
+#define PXA1908_CLK_PLL1_416           4
+#define PXA1908_CLK_PLL1_499           5
+#define PXA1908_CLK_PLL1_832           6
+#define PXA1908_CLK_PLL1_1248          7
+#define PXA1908_CLK_PLL1_D2            8
+#define PXA1908_CLK_PLL1_D4            9
+#define PXA1908_CLK_PLL1_D8            10
+#define PXA1908_CLK_PLL1_D16           11
+#define PXA1908_CLK_PLL1_D6            12
+#define PXA1908_CLK_PLL1_D12           13
+#define PXA1908_CLK_PLL1_D24           14
+#define PXA1908_CLK_PLL1_D48           15
+#define PXA1908_CLK_PLL1_D96           16
+#define PXA1908_CLK_PLL1_D13           17
+#define PXA1908_CLK_PLL1_32            18
+#define PXA1908_CLK_PLL1_208           19
+#define PXA1908_CLK_PLL1_117           20
+#define PXA1908_CLK_PLL1_416_GATE      21
+#define PXA1908_CLK_PLL1_624_GATE      22
+#define PXA1908_CLK_PLL1_832_GATE      23
+#define PXA1908_CLK_PLL1_1248_GATE     24
+#define PXA1908_CLK_PLL1_D2_GATE       25
+#define PXA1908_CLK_PLL1_499_EN                26
+#define PXA1908_CLK_PLL2VCO            27
+#define PXA1908_CLK_PLL2               28
+#define PXA1908_CLK_PLL2P              29
+#define PXA1908_CLK_PLL2VCODIV3                30
+#define PXA1908_CLK_PLL3VCO            31
+#define PXA1908_CLK_PLL3               32
+#define PXA1908_CLK_PLL3P              33
+#define PXA1908_CLK_PLL3VCODIV3                34
+#define PXA1908_CLK_PLL4VCO            35
+#define PXA1908_CLK_PLL4               36
+#define PXA1908_CLK_PLL4P              37
+#define PXA1908_CLK_PLL4VCODIV3                38
+
+/* apb (apbc) peripherals */
+#define PXA1908_CLK_UART0              1
+#define PXA1908_CLK_UART1              2
+#define PXA1908_CLK_GPIO               3
+#define PXA1908_CLK_PWM0               4
+#define PXA1908_CLK_PWM1               5
+#define PXA1908_CLK_PWM2               6
+#define PXA1908_CLK_PWM3               7
+#define PXA1908_CLK_SSP0               8
+#define PXA1908_CLK_SSP1               9
+#define PXA1908_CLK_IPC_RST            10
+#define PXA1908_CLK_RTC                        11
+#define PXA1908_CLK_TWSI0              12
+#define PXA1908_CLK_KPC                        13
+#define PXA1908_CLK_SWJTAG             14
+#define PXA1908_CLK_SSP2               15
+#define PXA1908_CLK_TWSI1              16
+#define PXA1908_CLK_THERMAL            17
+#define PXA1908_CLK_TWSI3              18
+
+/* apb (apbcp) peripherals */
+#define PXA1908_CLK_UART2              1
+#define PXA1908_CLK_TWSI2              2
+#define PXA1908_CLK_AICER              3
+
+/* axi (apmu) peripherals */
+#define PXA1908_CLK_CCIC1              1
+#define PXA1908_CLK_ISP                        2
+#define PXA1908_CLK_DSI1               3
+#define PXA1908_CLK_DISP1              4
+#define PXA1908_CLK_CCIC0              5
+#define PXA1908_CLK_SDH0               6
+#define PXA1908_CLK_SDH1               7
+#define PXA1908_CLK_USB                        8
+#define PXA1908_CLK_NF                 9
+#define PXA1908_CLK_CORE_DEBUG         10
+#define PXA1908_CLK_VPU                        11
+#define PXA1908_CLK_GC                 12
+#define PXA1908_CLK_SDH2               13
+#define PXA1908_CLK_GC2D               14
+#define PXA1908_CLK_TRACE              15
+#define PXA1908_CLK_DVC_DFC_DEBUG      16
+
+#endif