[PATCH 0/2] omap4: sdp: convert to device model

Hi,
The series is based on Tero's omap4 panda and omap5 uevm device model conversion patches.
To avoid removal of the SDP4430 due to neglect. With these patches applied no more complaints about DM_SPL conversion and the board boots up Linux. We never had ethernet support for spd4430 in mainline (ks8851 on spi bus), this is still the case.
Linux boots up, but for some reason ethernet is not responsible, that needs to be investigated, unlikely caused by u-boot.
I really like to keep sdp4430/Blaze support as it is the platform where I can test DMIC and other audio features of McPDM/twl6040. The board also have dual LCD, which is a nice thing to have.
Regards, Peter --- Peter Ujfalusi (2): omap4: Copy device tree from Linux 5.7.y for SDP4430 omap4: sdp: convert to device model
arch/arm/dts/Makefile | 4 + arch/arm/dts/omap4-sdp-es23plus.dts | 14 + arch/arm/dts/omap4-sdp.dts | 713 ++++++++++++++++++++++++++++ board/ti/sdp4430/sdp.c | 12 + configs/omap4_sdp4430_defconfig | 8 + 5 files changed, 751 insertions(+) create mode 100644 arch/arm/dts/omap4-sdp-es23plus.dts create mode 100644 arch/arm/dts/omap4-sdp.dts

Copy all device tree files required for omap4 sdp4430 support from mainline Linux.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com --- arch/arm/dts/omap4-sdp-es23plus.dts | 14 + arch/arm/dts/omap4-sdp.dts | 713 ++++++++++++++++++++++++++++ 2 files changed, 727 insertions(+) create mode 100644 arch/arm/dts/omap4-sdp-es23plus.dts create mode 100644 arch/arm/dts/omap4-sdp.dts
diff --git a/arch/arm/dts/omap4-sdp-es23plus.dts b/arch/arm/dts/omap4-sdp-es23plus.dts new file mode 100644 index 000000000000..42154520d383 --- /dev/null +++ b/arch/arm/dts/omap4-sdp-es23plus.dts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + */ +#include "omap4-sdp.dts" + +/* SDP boards with 4430 ES2.3+ or 4460 have external pullups on SCL & SDA */ +&dss_hdmi_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0) /* hdmi_cec.hdmi_cec */ + OMAP4_IOPAD(0x09c, PIN_INPUT | MUX_MODE0) /* hdmi_scl.hdmi_scl */ + OMAP4_IOPAD(0x09e, PIN_INPUT | MUX_MODE0) /* hdmi_sda.hdmi_sda */ + >; +}; diff --git a/arch/arm/dts/omap4-sdp.dts b/arch/arm/dts/omap4-sdp.dts new file mode 100644 index 000000000000..91480ac1f328 --- /dev/null +++ b/arch/arm/dts/omap4-sdp.dts @@ -0,0 +1,713 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ + */ +/dts-v1/; + +#include "omap443x.dtsi" +#include "elpida_ecb240abacn.dtsi" +#include "omap4-mcpdm.dtsi" + +/ { + model = "TI OMAP4 SDP board"; + compatible = "ti,omap4-sdp", "ti,omap4430", "ti,omap4"; + + memory@80000000 { + device_type = "memory"; + reg = <0x80000000 0x40000000>; /* 1 GB */ + }; + + aliases { + display0 = &lcd0; + display1 = &lcd1; + display2 = &hdmi0; + }; + + vdd_eth: fixedregulator-vdd-eth { + pinctrl-names = "default"; + pinctrl-0 = <&enet_enable_gpio>; + + compatible = "regulator-fixed"; + regulator-name = "VDD_ETH"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio2 16 GPIO_ACTIVE_HIGH>; /* gpio line 48 */ + enable-active-high; + regulator-boot-on; + startup-delay-us = <25000>; + }; + + vbat: fixedregulator-vbat { + compatible = "regulator-fixed"; + regulator-name = "VBAT"; + regulator-min-microvolt = <3750000>; + regulator-max-microvolt = <3750000>; + regulator-boot-on; + }; + + leds { + compatible = "gpio-leds"; + debug0 { + label = "omap4:green:debug0"; + gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>; /* 61 */ + }; + + debug1 { + label = "omap4:green:debug1"; + gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; /* 30 */ + }; + + debug2 { + label = "omap4:green:debug2"; + gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; /* 7 */ + }; + + debug3 { + label = "omap4:green:debug3"; + gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>; /* 8 */ + }; + + debug4 { + label = "omap4:green:debug4"; + gpios = <&gpio2 18 GPIO_ACTIVE_HIGH>; /* 50 */ + }; + + user1 { + label = "omap4:blue:user"; + gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* 169 */ + }; + + user2 { + label = "omap4:red:user"; + gpios = <&gpio6 10 GPIO_ACTIVE_HIGH>; /* 170 */ + }; + + user3 { + label = "omap4:green:user"; + gpios = <&gpio5 11 GPIO_ACTIVE_HIGH>; /* 139 */ + }; + }; + + pwmleds { + compatible = "pwm-leds"; + kpad { + label = "omap4::keypad"; + pwms = <&twl_pwm 0 7812500>; + max-brightness = <127>; + }; + + charging { + label = "omap4:green:chrg"; + pwms = <&twl_pwmled 0 7812500>; + max-brightness = <255>; + }; + }; + + backlight { + compatible = "pwm-backlight"; + pwms = <&twl_pwm 1 7812500>; + brightness-levels = < + 0 10 20 30 40 + 50 60 70 80 90 + 100 110 120 127 + >; + default-brightness-level = <13>; + }; + + sound { + compatible = "ti,abe-twl6040"; + ti,model = "SDP4430"; + + ti,jack-detection = <1>; + ti,mclk-freq = <38400000>; + + ti,mcpdm = <&mcpdm>; + ti,dmic = <&dmic>; + + ti,twl6040 = <&twl6040>; + + /* Audio routing */ + ti,audio-routing = + "Headset Stereophone", "HSOL", + "Headset Stereophone", "HSOR", + "Earphone Spk", "EP", + "Ext Spk", "HFL", + "Ext Spk", "HFR", + "Line Out", "AUXL", + "Line Out", "AUXR", + "Vibrator", "VIBRAL", + "Vibrator", "VIBRAR", + "HSMIC", "Headset Mic", + "Headset Mic", "Headset Mic Bias", + "MAINMIC", "Main Handset Mic", + "Main Handset Mic", "Main Mic Bias", + "SUBMIC", "Sub Handset Mic", + "Sub Handset Mic", "Main Mic Bias", + "AFML", "Line In", + "AFMR", "Line In", + "DMic", "Digital Mic", + "Digital Mic", "Digital Mic1 Bias"; + }; + + /* regulator for wl12xx on sdio5 */ + wl12xx_vmmc: wl12xx_vmmc { + pinctrl-names = "default"; + pinctrl-0 = <&wl12xx_gpio>; + compatible = "regulator-fixed"; + regulator-name = "vwl1271"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio2 22 GPIO_ACTIVE_HIGH>; + startup-delay-us = <70000>; + enable-active-high; + }; + + tpd12s015: encoder { + compatible = "ti,tpd12s015"; + + gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>, /* 60, CT CP HPD */ + <&gpio2 9 GPIO_ACTIVE_HIGH>, /* 41, LS OE */ + <&gpio2 31 GPIO_ACTIVE_HIGH>; /* 63, HPD */ + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + tpd12s015_in: endpoint { + remote-endpoint = <&hdmi_out>; + }; + }; + + port@1 { + reg = <1>; + + tpd12s015_out: endpoint { + remote-endpoint = <&hdmi_connector_in>; + }; + }; + }; + }; + + hdmi0: connector { + compatible = "hdmi-connector"; + label = "hdmi"; + + type = "c"; + + port { + hdmi_connector_in: endpoint { + remote-endpoint = <&tpd12s015_out>; + }; + }; + }; +}; + +&omap4_pmx_core { + pinctrl-names = "default"; + pinctrl-0 = < + &dss_hdmi_pins + &tpd12s015_pins + >; + + uart2_pins: pinmux_uart2_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x118, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_cts.uart2_cts */ + OMAP4_IOPAD(0x11a, PIN_OUTPUT | MUX_MODE0) /* uart2_rts.uart2_rts */ + OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE0) /* uart2_rx.uart2_rx */ + OMAP4_IOPAD(0x11e, PIN_OUTPUT | MUX_MODE0) /* uart2_tx.uart2_tx */ + >; + }; + + uart3_pins: pinmux_uart3_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x140, PIN_INPUT_PULLUP | MUX_MODE0) /* uart3_cts_rctx.uart3_cts_rctx */ + OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE0) /* uart3_rts_sd.uart3_rts_sd */ + OMAP4_IOPAD(0x144, PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */ + OMAP4_IOPAD(0x146, PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx */ + >; + }; + + uart4_pins: pinmux_uart4_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0) /* uart4_rx.uart4_rx */ + OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0) /* uart4_tx.uart4_tx */ + >; + }; + + twl6040_pins: pinmux_twl6040_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x120, PIN_OUTPUT | MUX_MODE3) /* hdq_sio.gpio_127 */ + OMAP4_IOPAD(0x1a0, PIN_INPUT | MUX_MODE0) /* sys_nirq2.sys_nirq2 */ + >; + }; + + dmic_pins: pinmux_dmic_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x110, PIN_OUTPUT | MUX_MODE0) /* abe_dmic_clk1.abe_dmic_clk1 */ + OMAP4_IOPAD(0x112, PIN_INPUT | MUX_MODE0) /* abe_dmic_din1.abe_dmic_din1 */ + OMAP4_IOPAD(0x114, PIN_INPUT | MUX_MODE0) /* abe_dmic_din2.abe_dmic_din2 */ + OMAP4_IOPAD(0x116, PIN_INPUT | MUX_MODE0) /* abe_dmic_din3.abe_dmic_din3 */ + >; + }; + + mcbsp1_pins: pinmux_mcbsp1_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x0fe, PIN_INPUT | MUX_MODE0) /* abe_mcbsp1_clkx.abe_mcbsp1_clkx */ + OMAP4_IOPAD(0x100, PIN_INPUT_PULLDOWN | MUX_MODE0) /* abe_mcbsp1_dr.abe_mcbsp1_dr */ + OMAP4_IOPAD(0x102, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* abe_mcbsp1_dx.abe_mcbsp1_dx */ + OMAP4_IOPAD(0x104, PIN_INPUT | MUX_MODE0) /* abe_mcbsp1_fsx.abe_mcbsp1_fsx */ + >; + }; + + mcbsp2_pins: pinmux_mcbsp2_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0) /* abe_mcbsp2_clkx.abe_mcbsp2_clkx */ + OMAP4_IOPAD(0x0f8, PIN_INPUT_PULLDOWN | MUX_MODE0) /* abe_mcbsp2_dr.abe_mcbsp2_dr */ + OMAP4_IOPAD(0x0fa, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* abe_mcbsp2_dx.abe_mcbsp2_dx */ + OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0) /* abe_mcbsp2_fsx.abe_mcbsp2_fsx */ + >; + }; + + mcspi1_pins: pinmux_mcspi1_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x132, PIN_INPUT | MUX_MODE0) /* mcspi1_clk.mcspi1_clk */ + OMAP4_IOPAD(0x134, PIN_INPUT | MUX_MODE0) /* mcspi1_somi.mcspi1_somi */ + OMAP4_IOPAD(0x136, PIN_INPUT | MUX_MODE0) /* mcspi1_simo.mcspi1_simo */ + OMAP4_IOPAD(0x138, PIN_INPUT | MUX_MODE0) /* mcspi1_cs0.mcspi1_cs0 */ + >; + }; + + dss_hdmi_pins: pinmux_dss_hdmi_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0) /* hdmi_cec.hdmi_cec */ + OMAP4_IOPAD(0x09c, PIN_INPUT_PULLUP | MUX_MODE0) /* hdmi_scl.hdmi_scl */ + OMAP4_IOPAD(0x09e, PIN_INPUT_PULLUP | MUX_MODE0) /* hdmi_sda.hdmi_sda */ + >; + }; + + tpd12s015_pins: pinmux_tpd12s015_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x062, PIN_OUTPUT | MUX_MODE3) /* gpmc_a17.gpio_41 */ + OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3) /* gpmc_nbe1.gpio_60 */ + OMAP4_IOPAD(0x098, PIN_INPUT_PULLDOWN | MUX_MODE3) /* hdmi_hpd.gpio_63 */ + >; + }; + + i2c1_pins: pinmux_i2c1_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x122, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_scl */ + OMAP4_IOPAD(0x124, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c1_sda */ + >; + }; + + i2c2_pins: pinmux_i2c2_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x126, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c2_scl */ + OMAP4_IOPAD(0x128, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c2_sda */ + >; + }; + + i2c3_pins: pinmux_i2c3_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x12a, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_scl */ + OMAP4_IOPAD(0x12c, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_sda */ + >; + }; + + i2c4_pins: pinmux_i2c4_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x12e, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c4_scl */ + OMAP4_IOPAD(0x130, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c4_sda */ + >; + }; + + /* wl12xx GPIO output for WLAN_EN */ + wl12xx_gpio: pinmux_wl12xx_gpio { + pinctrl-single,pins = < + OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3) /* gpmc_nwp.gpio_54 */ + >; + }; + + /* wl12xx GPIO inputs and SDIO pins */ + wl12xx_pins: pinmux_wl12xx_pins { + pinctrl-single,pins = < + OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3) /* gpmc_ncs3.gpio_53 */ + OMAP4_IOPAD(0x148, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_clk.sdmmc5_clk */ + OMAP4_IOPAD(0x14a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_cmd.sdmmc5_cmd */ + OMAP4_IOPAD(0x14c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat0.sdmmc5_dat0 */ + OMAP4_IOPAD(0x14e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat1.sdmmc5_dat1 */ + OMAP4_IOPAD(0x150, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat2.sdmmc5_dat2 */ + OMAP4_IOPAD(0x152, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat3.sdmmc5_dat3 */ + >; + }; + + /* gpio_48 for ENET_ENABLE */ + enet_enable_gpio: pinmux_enet_enable_gpio { + pinctrl-single,pins = < + OMAP4_IOPAD(0x070, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* gpmc_a24.gpio_48 */ + >; + }; + + ks8851_pins: pinmux_ks8851_pins { + pinctrl-single,pins = < + /* ENET_INT */ + OMAP4_IOPAD(0x054, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_ad10.gpio_34 */ + /* + * Misterious pin which makes the ethernet working + * The legacy board file requested this pin on boot + * (ETH_KS8851_QUART) and set it to high, similarly to + * the ENET_ENABLE pin. + * We could use gpio-hog to keep it high, but let's use + * it as a reset GPIO for ks8851. + */ + OMAP4_IOPAD(0x13a, PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcspi1_cs1.gpio_138 */ + >; + }; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + + clock-frequency = <400000>; + + twl: twl@48 { + reg = <0x48>; + /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */ + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_1N cascaded to gic */ + }; + + twl6040: twl@4b { + compatible = "ti,twl6040"; + #clock-cells = <0>; + reg = <0x4b>; + + pinctrl-names = "default"; + pinctrl-0 = <&twl6040_pins>; + + /* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */ + interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_2N cascaded to gic */ + ti,audpwron-gpio = <&gpio4 31 GPIO_ACTIVE_HIGH>; /* gpio line 127 */ + + vio-supply = <&v1v8>; + v2v1-supply = <&v2v1>; + enable-active-high; + + /* regulators for vibra motor */ + vddvibl-supply = <&vbat>; + vddvibr-supply = <&vbat>; + + vibra { + /* Vibra driver, motor resistance parameters */ + ti,vibldrv-res = <8>; + ti,vibrdrv-res = <3>; + ti,viblmotor-res = <10>; + ti,vibrmotor-res = <10>; + }; + }; +}; + +#include "twl6030.dtsi" +#include "twl6030_omap4.dtsi" + +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pins>; + + clock-frequency = <400000>; +}; + +&i2c3 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c3_pins>; + + clock-frequency = <400000>; + + /* + * Temperature Sensor + * http://www.ti.com/lit/ds/symlink/tmp105.pdf + */ + tmp105@48 { + compatible = "ti,tmp105"; + reg = <0x48>; + }; + + /* + * Ambient Light Sensor + * http://www.rohm.com/products/databook/sensor/pdf/bh1780gli-e.pdf + */ + bh1780@29 { + compatible = "rohm,bh1780"; + reg = <0x29>; + }; +}; + +&i2c4 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c4_pins>; + + clock-frequency = <400000>; + + /* + * 3-Axis Digital Compass + * http://www.sparkfun.com/datasheets/Sensors/Magneto/HMC5843.pdf + */ + hmc5843@1e { + compatible = "honeywell,hmc5843"; + reg = <0x1e>; + }; +}; + +&mcspi1 { + pinctrl-names = "default"; + pinctrl-0 = <&mcspi1_pins>; + + eth@0 { + pinctrl-names = "default"; + pinctrl-0 = <&ks8851_pins>; + + compatible = "ks8851"; + spi-max-frequency = <24000000>; + reg = <0>; + interrupt-parent = <&gpio2>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; /* gpio line 34 */ + vdd-supply = <&vdd_eth>; + reset-gpios = <&gpio5 10 GPIO_ACTIVE_HIGH>; + }; +}; + +&mmc1 { + vmmc-supply = <&vmmc>; + bus-width = <8>; +}; + +&mmc2 { + vmmc-supply = <&vaux1>; + bus-width = <8>; + ti,non-removable; +}; + +&mmc3 { + status = "disabled"; +}; + +&mmc4 { + status = "disabled"; +}; + +&mmc5 { + pinctrl-names = "default"; + pinctrl-0 = <&wl12xx_pins>; + vmmc-supply = <&wl12xx_vmmc>; + non-removable; + bus-width = <4>; + cap-power-off-card; + + #address-cells = <1>; + #size-cells = <0>; + wlcore: wlcore@2 { + compatible = "ti,wl1281"; + reg = <2>; + interrupt-parent = <&gpio1>; + interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; /* gpio 53 */ + ref-clock-frequency = <26000000>; + tcxo-clock-frequency = <26000000>; + }; +}; + +&emif1 { + cs1-used; + device-handle = <&elpida_ECB240ABACN>; +}; + +&emif2 { + cs1-used; + device-handle = <&elpida_ECB240ABACN>; +}; + +&keypad { + keypad,num-rows = <8>; + keypad,num-columns = <8>; + linux,keymap = <0x00000012 /* KEY_E */ + 0x00010013 /* KEY_R */ + 0x00020014 /* KEY_T */ + 0x00030066 /* KEY_HOME */ + 0x0004003f /* KEY_F5 */ + 0x000500f0 /* KEY_UNKNOWN */ + 0x00060017 /* KEY_I */ + 0x0007002a /* KEY_LEFTSHIFT */ + 0x01000020 /* KEY_D*/ + 0x01010021 /* KEY_F */ + 0x01020022 /* KEY_G */ + 0x010300e7 /* KEY_SEND */ + 0x01040040 /* KEY_F6 */ + 0x010500f0 /* KEY_UNKNOWN */ + 0x01060025 /* KEY_K */ + 0x0107001c /* KEY_ENTER */ + 0x0200002d /* KEY_X */ + 0x0201002e /* KEY_C */ + 0x0202002f /* KEY_V */ + 0x0203006b /* KEY_END */ + 0x02040041 /* KEY_F7 */ + 0x020500f0 /* KEY_UNKNOWN */ + 0x02060034 /* KEY_DOT */ + 0x0207003a /* KEY_CAPSLOCK */ + 0x0300002c /* KEY_Z */ + 0x0301004e /* KEY_KPLUS */ + 0x03020030 /* KEY_B */ + 0x0303003b /* KEY_F1 */ + 0x03040042 /* KEY_F8 */ + 0x030500f0 /* KEY_UNKNOWN */ + 0x03060018 /* KEY_O */ + 0x03070039 /* KEY_SPACE */ + 0x04000011 /* KEY_W */ + 0x04010015 /* KEY_Y */ + 0x04020016 /* KEY_U */ + 0x0403003c /* KEY_F2 */ + 0x04040073 /* KEY_VOLUMEUP */ + 0x040500f0 /* KEY_UNKNOWN */ + 0x04060026 /* KEY_L */ + 0x04070069 /* KEY_LEFT */ + 0x0500001f /* KEY_S */ + 0x05010023 /* KEY_H */ + 0x05020024 /* KEY_J */ + 0x0503003d /* KEY_F3 */ + 0x05040043 /* KEY_F9 */ + 0x05050072 /* KEY_VOLUMEDOWN */ + 0x05060032 /* KEY_M */ + 0x0507006a /* KEY_RIGHT */ + 0x06000010 /* KEY_Q */ + 0x0601001e /* KEY_A */ + 0x06020031 /* KEY_N */ + 0x0603009e /* KEY_BACK */ + 0x0604000e /* KEY_BACKSPACE */ + 0x060500f0 /* KEY_UNKNOWN */ + 0x06060019 /* KEY_P */ + 0x06070067 /* KEY_UP */ + 0x07000094 /* KEY_PROG1 */ + 0x07010095 /* KEY_PROG2 */ + 0x070200ca /* KEY_PROG3 */ + 0x070300cb /* KEY_PROG4 */ + 0x0704003e /* KEY_F4 */ + 0x070500f0 /* KEY_UNKNOWN */ + 0x07060160 /* KEY_OK */ + 0x0707006c>; /* KEY_DOWN */ + linux,input-no-autorepeat; +}; + +&uart2 { + interrupts-extended = <&wakeupgen GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH + &omap4_pmx_core OMAP4_UART2_RX>; + pinctrl-names = "default"; + pinctrl-0 = <&uart2_pins>; +}; + +&uart3 { + interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH + &omap4_pmx_core OMAP4_UART3_RX>; + pinctrl-names = "default"; + pinctrl-0 = <&uart3_pins>; +}; + +&uart4 { + interrupts-extended = <&wakeupgen GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH + &omap4_pmx_core OMAP4_UART4_RX>; + pinctrl-names = "default"; + pinctrl-0 = <&uart4_pins>; +}; + +&mcbsp1 { + pinctrl-names = "default"; + pinctrl-0 = <&mcbsp1_pins>; + status = "okay"; +}; + +&mcbsp2 { + pinctrl-names = "default"; + pinctrl-0 = <&mcbsp2_pins>; + status = "okay"; +}; + +&dmic { + pinctrl-names = "default"; + pinctrl-0 = <&dmic_pins>; + status = "okay"; +}; + +&twl_usb_comparator { + usb-supply = <&vusb>; +}; + +&usb_otg_hs { + interface-type = <1>; + mode = <3>; + power = <50>; +}; + +&dss { + status = "ok"; +}; + +&dsi1 { + status = "ok"; + vdd-supply = <&vcxio>; + + port { + dsi1_out_ep: endpoint { + remote-endpoint = <&lcd0_in>; + lanes = <0 1 2 3 4 5>; + }; + }; + + lcd0: display { + compatible = "tpo,taal", "panel-dsi-cm"; + label = "lcd0"; + + reset-gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>; /* 102 */ + + port { + lcd0_in: endpoint { + remote-endpoint = <&dsi1_out_ep>; + }; + }; + }; +}; + +&dsi2 { + status = "ok"; + vdd-supply = <&vcxio>; + + port { + dsi2_out_ep: endpoint { + remote-endpoint = <&lcd1_in>; + lanes = <0 1 2 3 4 5>; + }; + }; + + lcd1: display { + compatible = "tpo,taal", "panel-dsi-cm"; + label = "lcd1"; + + reset-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* 104 */ + + port { + lcd1_in: endpoint { + remote-endpoint = <&dsi2_out_ep>; + }; + }; + }; +}; + +&hdmi { + status = "ok"; + vdda-supply = <&vdac>; + + port { + hdmi_out: endpoint { + remote-endpoint = <&tpd12s015_in>; + }; + }; +};

Convert omap4 sdp to device model.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com --- arch/arm/dts/Makefile | 4 ++++ board/ti/sdp4430/sdp.c | 12 ++++++++++++ configs/omap4_sdp4430_defconfig | 8 ++++++++ 3 files changed, 24 insertions(+)
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 5ce44d701c19..03b1f8388df7 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -852,6 +852,10 @@ dtb-$(CONFIG_TARGET_OMAP4_PANDA) += \ omap4-panda.dtb \ omap4-panda-es.dtb
+dtb-$(CONFIG_TARGET_OMAP4_SDP4430) += \ + omap4-sdp.dtb \ + omap4-sdp-es23plus.dtb + dtb-$(CONFIG_TARGET_OMAP5_UEVM) += \ omap5-uevm.dtb
diff --git a/board/ti/sdp4430/sdp.c b/board/ti/sdp4430/sdp.c index a5b350404530..5b294ea79b23 100644 --- a/board/ti/sdp4430/sdp.c +++ b/board/ti/sdp4430/sdp.c @@ -9,6 +9,7 @@ #include <init.h> #include <net.h> #include <twl6030.h> +#include <serial.h> #include <asm/arch/sys_proto.h> #include <asm/arch/mmc_host_def.h>
@@ -91,6 +92,17 @@ void board_mmc_power_init(void) #endif #endif
+#if defined(CONFIG_SPL_OS_BOOT) +int spl_start_uboot(void) +{ + /* break into full u-boot on 'c' */ + if (serial_tstc() && serial_getc() == 'c') + return 1; + + return 0; +} +#endif /* CONFIG_SPL_OS_BOOT */ + /* * get_board_rev() - get board revision */ diff --git a/configs/omap4_sdp4430_defconfig b/configs/omap4_sdp4430_defconfig index 219721388f13..17751cde8fdc 100644 --- a/configs/omap4_sdp4430_defconfig +++ b/configs/omap4_sdp4430_defconfig @@ -5,6 +5,7 @@ CONFIG_ARCH_OMAP2PLUS=y CONFIG_ENV_OFFSET=0xE0000 CONFIG_OMAP44XX=y CONFIG_TARGET_OMAP4_SDP4430=y +CONFIG_DEFAULT_DEVICE_TREE="omap4-sdp" CONFIG_CMD_BAT=y CONFIG_SPL=y CONFIG_SPL_TEXT_BASE=0x40300000 @@ -12,6 +13,7 @@ CONFIG_DISTRO_DEFAULTS=y CONFIG_BOOTCOMMAND="if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd" CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_INFO_QUIET=y +CONFIG_DEFAULT_FDT_FILE="omap4-sdp.dtb" CONFIG_VERSION_VARIABLE=y # CONFIG_SPL_I2C_SUPPORT is not set # CONFIG_SPL_NAND_SUPPORT is not set @@ -23,16 +25,20 @@ CONFIG_CMD_SPI=y # CONFIG_CMD_SETEXPR is not set # CONFIG_CMD_NFS is not set CONFIG_CMD_EXT4_WRITE=y +CONFIG_OF_CONTROL=y # CONFIG_EFI_PARTITION is not set CONFIG_SPL_PARTITION_UUIDS=y CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_DM=y +CONFIG_DM_MMC=y CONFIG_MMC_OMAP_HS=y CONFIG_CONS_INDEX=3 CONFIG_SYS_NS16550=y CONFIG_SPI=y CONFIG_OMAP3_SPI=y CONFIG_USB=y +CONFIG_DM_USB=y CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y CONFIG_USB_GADGET=y @@ -40,3 +46,5 @@ CONFIG_FAT_WRITE=y # CONFIG_REGEX is not set CONFIG_OF_LIBFDT=y # CONFIG_EFI_LOADER is not set +CONFIG_SYS_MALLOC_F_LEN=0x4000 +CONFIG_DM_ETH=y

On Mon, Jun 15, 2020 at 01:16:05PM +0300, Peter Ujfalusi wrote:
Convert omap4 sdp to device model.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com
arch/arm/dts/Makefile | 4 ++++ board/ti/sdp4430/sdp.c | 12 ++++++++++++ configs/omap4_sdp4430_defconfig | 8 ++++++++ 3 files changed, 24 insertions(+)
Please note that this, like the pandaboard series, aren't dealing with the DM_SPI conversion which brought up removing this to start with. While I'm pretty sure pandaboard exposes SPI on a header, I don't know if sdp does and perhaps you just want to remove SPI? Thanks!

On 15/06/2020 15:53, Tom Rini wrote:
On Mon, Jun 15, 2020 at 01:16:05PM +0300, Peter Ujfalusi wrote:
Convert omap4 sdp to device model.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com
arch/arm/dts/Makefile | 4 ++++ board/ti/sdp4430/sdp.c | 12 ++++++++++++ configs/omap4_sdp4430_defconfig | 8 ++++++++ 3 files changed, 24 insertions(+)
Please note that this, like the pandaboard series, aren't dealing with the DM_SPI conversion which brought up removing this to start with. While I'm pretty sure pandaboard exposes SPI on a header, I don't know if sdp does and perhaps you just want to remove SPI? Thanks!
Can you provide a reference to the DM_SPI discussion?
I guess we could remove DM_SPI from pandaboard also if it is causing problems. My initial attempt on that series was just to get basic boot working via MMC, and that should be done now if I am not terribly mistaken...
-Tero
-- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

On Mon, Jun 15, 2020 at 04:08:51PM +0300, Tero Kristo wrote:
On 15/06/2020 15:53, Tom Rini wrote:
On Mon, Jun 15, 2020 at 01:16:05PM +0300, Peter Ujfalusi wrote:
Convert omap4 sdp to device model.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com
arch/arm/dts/Makefile | 4 ++++ board/ti/sdp4430/sdp.c | 12 ++++++++++++ configs/omap4_sdp4430_defconfig | 8 ++++++++ 3 files changed, 24 insertions(+)
Please note that this, like the pandaboard series, aren't dealing with the DM_SPI conversion which brought up removing this to start with. While I'm pretty sure pandaboard exposes SPI on a header, I don't know if sdp does and perhaps you just want to remove SPI? Thanks!
Can you provide a reference to the DM_SPI discussion?
I guess we could remove DM_SPI from pandaboard also if it is causing problems. My initial attempt on that series was just to get basic boot working via MMC, and that should be done now if I am not terribly mistaken...
It's over in http://patchwork.ozlabs.org/project/uboot/patch/20200527125637.149189-16-jag... but there's not much to discuss as the DM_SPI / DM_SPI_FLASH conversion deadline was a year ago this next release, hence the removal of platforms that haven't. The good news for OMAP4 (and OMAP5) is that the driver itself has already been converted so it's no more work than the USB, etc, conversions that you've both done recently. Thanks!

Hi Tom,
On 15/06/2020 16.14, Tom Rini wrote:
On Mon, Jun 15, 2020 at 04:08:51PM +0300, Tero Kristo wrote:
On 15/06/2020 15:53, Tom Rini wrote:
On Mon, Jun 15, 2020 at 01:16:05PM +0300, Peter Ujfalusi wrote:
Convert omap4 sdp to device model.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com
arch/arm/dts/Makefile | 4 ++++ board/ti/sdp4430/sdp.c | 12 ++++++++++++ configs/omap4_sdp4430_defconfig | 8 ++++++++ 3 files changed, 24 insertions(+)
Please note that this, like the pandaboard series, aren't dealing with the DM_SPI conversion which brought up removing this to start with. While I'm pretty sure pandaboard exposes SPI on a header, I don't know if sdp does and perhaps you just want to remove SPI? Thanks!
Can you provide a reference to the DM_SPI discussion?
I guess we could remove DM_SPI from pandaboard also if it is causing problems. My initial attempt on that series was just to get basic boot working via MMC, and that should be done now if I am not terribly mistaken...
It's over in http://patchwork.ozlabs.org/project/uboot/patch/20200527125637.149189-16-jag... but there's not much to discuss as the DM_SPI / DM_SPI_FLASH conversion deadline was a year ago this next release, hence the removal of platforms that haven't. The good news for OMAP4 (and OMAP5) is that the driver itself has already been converted so it's no more work than the USB, etc, conversions that you've both done recently. Thanks!
Adding DM_SPI to the defconfig? In the board file I don't see any trace of SPI being enabled or used. As I said, the ethernet would need SPI, but that never worked in mainline..
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

On Mon, Jun 15, 2020 at 04:35:52PM +0300, Peter Ujfalusi wrote:
Hi Tom,
On 15/06/2020 16.14, Tom Rini wrote:
On Mon, Jun 15, 2020 at 04:08:51PM +0300, Tero Kristo wrote:
On 15/06/2020 15:53, Tom Rini wrote:
On Mon, Jun 15, 2020 at 01:16:05PM +0300, Peter Ujfalusi wrote:
Convert omap4 sdp to device model.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com
arch/arm/dts/Makefile | 4 ++++ board/ti/sdp4430/sdp.c | 12 ++++++++++++ configs/omap4_sdp4430_defconfig | 8 ++++++++ 3 files changed, 24 insertions(+)
Please note that this, like the pandaboard series, aren't dealing with the DM_SPI conversion which brought up removing this to start with. While I'm pretty sure pandaboard exposes SPI on a header, I don't know if sdp does and perhaps you just want to remove SPI? Thanks!
Can you provide a reference to the DM_SPI discussion?
I guess we could remove DM_SPI from pandaboard also if it is causing problems. My initial attempt on that series was just to get basic boot working via MMC, and that should be done now if I am not terribly mistaken...
It's over in http://patchwork.ozlabs.org/project/uboot/patch/20200527125637.149189-16-jag... but there's not much to discuss as the DM_SPI / DM_SPI_FLASH conversion deadline was a year ago this next release, hence the removal of platforms that haven't. The good news for OMAP4 (and OMAP5) is that the driver itself has already been converted so it's no more work than the USB, etc, conversions that you've both done recently. Thanks!
Adding DM_SPI to the defconfig? In the board file I don't see any trace of SPI being enabled or used. As I said, the ethernet would need SPI, but that never worked in mainline..
It's enabled in the defconfig today. If you don't want to enable SPI in U-Boot (which is fine for the 4430, I assume no one wants to spend the time trying to enable ethernet on it at this point) just disable it. I only have an open question on if that's right for pandaboard because I thought it's exposed on the expansion header, but I don't know how big a deal that is these days really. Thanks!

Hi Tom,
On 15/06/2020 16.38, Tom Rini wrote:
On Mon, Jun 15, 2020 at 04:35:52PM +0300, Peter Ujfalusi wrote:
Hi Tom,
On 15/06/2020 16.14, Tom Rini wrote:
On Mon, Jun 15, 2020 at 04:08:51PM +0300, Tero Kristo wrote:
On 15/06/2020 15:53, Tom Rini wrote:
On Mon, Jun 15, 2020 at 01:16:05PM +0300, Peter Ujfalusi wrote:
Convert omap4 sdp to device model.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@ti.com
arch/arm/dts/Makefile | 4 ++++ board/ti/sdp4430/sdp.c | 12 ++++++++++++ configs/omap4_sdp4430_defconfig | 8 ++++++++ 3 files changed, 24 insertions(+)
Please note that this, like the pandaboard series, aren't dealing with the DM_SPI conversion which brought up removing this to start with. While I'm pretty sure pandaboard exposes SPI on a header, I don't know if sdp does and perhaps you just want to remove SPI? Thanks!
Can you provide a reference to the DM_SPI discussion?
I guess we could remove DM_SPI from pandaboard also if it is causing problems. My initial attempt on that series was just to get basic boot working via MMC, and that should be done now if I am not terribly mistaken...
It's over in http://patchwork.ozlabs.org/project/uboot/patch/20200527125637.149189-16-jag... but there's not much to discuss as the DM_SPI / DM_SPI_FLASH conversion deadline was a year ago this next release, hence the removal of platforms that haven't. The good news for OMAP4 (and OMAP5) is that the driver itself has already been converted so it's no more work than the USB, etc, conversions that you've both done recently. Thanks!
Adding DM_SPI to the defconfig? In the board file I don't see any trace of SPI being enabled or used. As I said, the ethernet would need SPI, but that never worked in mainline..
It's enabled in the defconfig today. If you don't want to enable SPI in U-Boot (which is fine for the 4430, I assume no one wants to spend the time trying to enable ethernet on it at this point) just disable it.
Right, on the SDP SPI is used for DLP (display projector), WLAN/BT/Radio, Modem interface and the KSZ8851SNL Ethernet. With the exception of ethernet all of them are don't care for u-boot imho. It is actually pretty annoying that I can not use tftp boot on the Blaze. With DM_SPI it might make sense to revisit the issue as we had some old u-boot which used omap_mcsspi API to get ethernet working...
I'll disable the SPI for SDP in v2, let's re-enable if we can get ethernet working on it.
I only have an open question on if that's right for pandaboard because I thought it's exposed on the expansion header, but I don't know how big a deal that is these days really. Thanks!
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

On 15/06/2020 13.16, Peter Ujfalusi wrote:
Hi,
The series is based on Tero's omap4 panda and omap5 uevm device model conversion patches.
To avoid removal of the SDP4430 due to neglect. With these patches applied no more complaints about DM_SPL conversion and the board boots up Linux. We never had ethernet support for spd4430 in mainline (ks8851 on spi bus), this is still the case.
Linux boots up, but for some reason ethernet is not responsible, that needs to be investigated, unlikely caused by u-boot.
Actually it works in Linux.
I really like to keep sdp4430/Blaze support as it is the platform where I can test DMIC and other audio features of McPDM/twl6040. The board also have dual LCD, which is a nice thing to have.
Regards, Peter
Peter Ujfalusi (2): omap4: Copy device tree from Linux 5.7.y for SDP4430 omap4: sdp: convert to device model
arch/arm/dts/Makefile | 4 + arch/arm/dts/omap4-sdp-es23plus.dts | 14 + arch/arm/dts/omap4-sdp.dts | 713 ++++++++++++++++++++++++++++ board/ti/sdp4430/sdp.c | 12 + configs/omap4_sdp4430_defconfig | 8 + 5 files changed, 751 insertions(+) create mode 100644 arch/arm/dts/omap4-sdp-es23plus.dts create mode 100644 arch/arm/dts/omap4-sdp.dts
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
participants (3)
-
Peter Ujfalusi
-
Tero Kristo
-
Tom Rini