summaryrefslogtreecommitdiff
path: root/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex
diff options
context:
space:
mode:
Diffstat (limited to 'yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex')
-rw-r--r--yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-mikrophone.dtsi169
-rw-r--r--yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-nonwifi-mikrophone.dts18
-rw-r--r--yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-wifi-mikrophone.dts18
-rw-r--r--yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/kernel_lvds_freq.patch62
4 files changed, 267 insertions, 0 deletions
diff --git a/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-mikrophone.dtsi b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-mikrophone.dtsi
new file mode 100644
index 0000000..7c23309
--- /dev/null
+++ b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-mikrophone.dtsi
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Uros Majstorovic
+ */
+
+/* Verdin HDMI_1 Audio */
+&aud2htx {
+ status = "okay";
+};
+
+/* Verdin SPI_1 */
+&ecspi1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ spidev@0 {
+ /* Use compatible "rohm,dh2228fv" to bind spidev driver */
+ compatible = "rohm,dh2228fv";
+ reg = <0>;
+ spi-max-frequency = <50000000>;
+ };
+};
+
+&eqos {
+ status = "disabled";
+};
+
+&fec {
+ status = "disabled";
+};
+
+&flexcan1 {
+ status = "disabled";
+};
+
+&flexcan2 {
+ status = "disabled";
+};
+
+/* Verdin QSPI_1 */
+&flexspi {
+ status = "disabled";
+};
+
+&gpio4 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
+};
+
+/* Verdin I2C_2_DSI */
+&i2c2 {
+ status = "disabled";
+};
+
+/* CAM I2C, disabled for now */
+&i2c3 {
+ status = "disabled";
+};
+
+/* Verdin I2C_1 */
+&i2c4 {
+ status = "okay";
+};
+
+/* Verdin PCIE_1 */
+&pcie {
+ status = "okay";
+};
+
+&pcie_phy {
+ status = "okay";
+};
+
+/* Verdin PWM_1 */
+&pwm1 {
+ status = "okay";
+};
+
+/* Verdin PWM_2 */
+&pwm2 {
+ status = "disabled";
+};
+
+/* Verdin PWM_3_DSI */
+&pwm3 {
+ status = "disabled";
+};
+
+&reg_usdhc2_vmmc {
+ vin-supply = <&reg_3p3v>;
+};
+
+/* Verdin HDMI_1 Audio */
+&sound_hdmi {
+ status = "okay";
+};
+
+/* Verdin UART_1 */
+&uart1 {
+ status = "disabled";
+};
+
+/* Verdin UART_2 */
+&uart2 {
+ status = "disabled";
+};
+
+/* Verdin UART_3, used as the Linux Console */
+&uart3 {
+ status = "okay";
+};
+
+/* Verdin USB_1 */
+&usb3_0 {
+ status = "okay";
+};
+
+&usb3_phy0 {
+ status = "okay";
+};
+
+/* Verdin USB_2 */
+&usb3_1 {
+ // fsl,permanently-attached;
+ status = "okay";
+};
+
+&usb3_phy1 {
+ status = "okay";
+};
+
+/* Verdin SDCard */
+&usdhc2 {
+ status = "okay";
+};
+
+/* Video and graphics */
+&vpu_g1 {
+ status = "okay";
+};
+
+&vpu_g2 {
+ status = "okay";
+};
+
+&vpu_vc8000e {
+ status = "okay";
+};
+
+&vpu_v4l2 {
+ status = "okay";
+};
+
+&gpu_2d {
+ status = "okay";
+};
+
+&gpu_3d {
+ status = "okay";
+};
+
+&ml_vipsi {
+ status = "okay";
+};
+
+&mix_gpu_ml {
+ status = "okay";
+};
diff --git a/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-nonwifi-mikrophone.dts b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-nonwifi-mikrophone.dts
new file mode 100644
index 0000000..91c08a7
--- /dev/null
+++ b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-nonwifi-mikrophone.dts
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Uros Majstorovic
+ */
+
+/dts-v1/;
+
+#include "imx8mp-verdin.dtsi"
+#include "imx8mp-verdin-nonwifi.dtsi"
+#include "imx8mp-verdin-mikrophone.dtsi"
+
+/ {
+ model = "Toradex Verdin iMX8M Plus on mikroPhone";
+ compatible = "toradex,verdin-imx8mp-nonwifi-mikrophone",
+ "toradex,verdin-imx8mp-wifi",
+ "toradex,verdin-imx8mp",
+ "fsl,imx8mp";
+};
diff --git a/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-wifi-mikrophone.dts b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-wifi-mikrophone.dts
new file mode 100644
index 0000000..35792e1
--- /dev/null
+++ b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/imx8mp-verdin-wifi-mikrophone.dts
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Uros Majstorovic
+ */
+
+/dts-v1/;
+
+#include "imx8mp-verdin.dtsi"
+#include "imx8mp-verdin-wifi.dtsi"
+#include "imx8mp-verdin-mikrophone.dtsi"
+
+/ {
+ model = "Toradex Verdin iMX8M Plus WB on mikroPhone";
+ compatible = "toradex,verdin-imx8mp-wifi-mikrophone",
+ "toradex,verdin-imx8mp-wifi",
+ "toradex,verdin-imx8mp",
+ "fsl,imx8mp";
+};
diff --git a/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/kernel_lvds_freq.patch b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/kernel_lvds_freq.patch
new file mode 100644
index 0000000..9955bc4
--- /dev/null
+++ b/yocto/meta-mikrophone/recipes-kernel/linux/linux-toradex/kernel_lvds_freq.patch
@@ -0,0 +1,62 @@
+diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
+index 55adf1bf45d9..c875474e6c45 100644
+--- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
++++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
+@@ -752,7 +752,7 @@ clk: clock-controller@30380000 {
+ <800000000>,
+ <393216000>,
+ <361267200>,
+- <1039500000>;
++ <252000000>;
+ };
+
+ src: reset-controller@30390000 {
+diff --git a/drivers/clk/imx/clk-pll14xx.c b/drivers/clk/imx/clk-pll14xx.c
+index 6c17786ecb9f..8c9840f08c0e 100644
+--- a/drivers/clk/imx/clk-pll14xx.c
++++ b/drivers/clk/imx/clk-pll14xx.c
+@@ -75,6 +75,7 @@ static const struct imx_pll14xx_rate_table imx_pll1443x_tbl[] = {
+ PLL_1443X_RATE(49152000U, 393, 3, 6, 0x374c),
+ PLL_1443X_RATE(45158400U, 241, 2, 6, 0xd845),
+ PLL_1443X_RATE(40960000U, 109, 1, 6, 0x3a07),
++ PLL_1443X_RATE(252000000U, 84, 2, 2, 0),
+ };
+
+ struct imx_pll14xx_clk imx_1443x_pll = {
+diff --git a/drivers/gpu/drm/imx/imx8mp-ldb.c b/drivers/gpu/drm/imx/imx8mp-ldb.c
+index e3f5c5e6e842..55dbafa863cf 100644
+--- a/drivers/gpu/drm/imx/imx8mp-ldb.c
++++ b/drivers/gpu/drm/imx/imx8mp-ldb.c
+@@ -186,15 +186,6 @@ imx8mp_ldb_encoder_atomic_check(struct drm_encoder *encoder,
+ return -EINVAL;
+ }
+
+- /*
+- * Due to limited video PLL frequency points on i.MX8mp,
+- * we do mode fixup here in case any mode is unsupported.
+- */
+- if (ldb->dual)
+- mode->clock = mode->clock > 100000 ? 148500 : 74250;
+- else
+- mode->clock = 74250;
+-
+ return 0;
+ }
+
+@@ -212,16 +203,6 @@ imx8mp_ldb_encoder_mode_valid(struct drm_encoder *encoder,
+ if (ldb_ch->panel)
+ return MODE_OK;
+
+- /*
+- * Due to limited video PLL frequency points on i.MX8mp,
+- * we do mode valid check here.
+- */
+- if (ldb->dual && mode->clock != 74250 && mode->clock != 148500)
+- return MODE_NOCLOCK;
+-
+- if (!ldb->dual && mode->clock != 74250)
+- return MODE_NOCLOCK;
+-
+ return MODE_OK;
+ }
+