Other Parts Discussed in Thread: AM62P, AM625
Tool/software:
Hi Team,
We have custom board with OLDI port 0 output for Display 800x480 .
when i use 800x480 timing i get half display . Height seems fine . Width has issues
static const struct drm_display_mode custom_mode = { .clock = 24750, .hdisplay = 800, .hsync_start = 800 + 54, .hsync_end = 800 + 54 + 2, .htotal = 800 + 54 + 2 + 44, .vdisplay = 480, .vsync_start = 480 + 49, .vsync_end = 480 + 49 + 2, .vtotal = 480 + 49 + 2 + 22, }; static const struct panel_desc custom = { .modes = &custom_mode, .num_modes = 1, .bpc = 8, .size = { .width = 152, .height = 91, }, .delay = { .prepare = 50, .disable = 50, }, .bus_flags = DRM_BUS_FLAG_DE_HIGH, .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, .connector_type = DRM_MODE_CONNECTOR_LVDS, };
but when i use 1600x480 , it display full 800x480 but Unfortunately modetest get 1600x480 so, the GUI we did for 800x480 is collapsed.
static const struct drm_display_mode custom_mode = { .clock = 49500, .hdisplay = 1600, .hsync_start = 1600 + 54, .hsync_end = 1600 + 54 + 2, .htotal = 1600 + 54 + 2 + 44, .vdisplay = 480, .vsync_start = 480 + 49, .vsync_end = 480 + 49 + 2, .vtotal = 480 + 49 + 2 + 22, }; static const struct panel_desc custom = { .modes = &custom_mode, .num_modes = 1, .bpc = 8, .size = { .width = 152, .height = 91, }, .delay = { .prepare = 50, .disable = 50, }, .bus_flags = DRM_BUS_FLAG_DE_HIGH, .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, .connector_type = DRM_MODE_CONNECTOR_LVDS, };
any idea why its happening?
this is the overlay we use FYR
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /** * Microtips integrated OLDI panel (MF-101HIEBCAF0) and touch DT overlay for AM625 - SK * * Copyright (C) 2024 Texas Instruments Incorporated - http://www.ti.com/ */ /dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> #include "k3-pinctrl.h" &{/} { display { compatible ="custom"; port@0 { dual-lvds-odd-pixels; lcd_in0: endpoint { remote-endpoint = <&oldi_out0>; }; }; }; hdmi0: connector { status = "disabled"; }; }; &dss { status = "okay"; }; &main_pmx0 { main_oldi0_pins_default: main-oldi0-pins-default { pinctrl-single,pins = < AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */ AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */ AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */ AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */ AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */ AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */ AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */ AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */ AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */ AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */ AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */ AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */ AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */ AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */ AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */ AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */ AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */ AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */ AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */ AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */ >; }; }; &dss { pinctrl-names = "default"; pinctrl-0 = <&main_oldi0_pins_default &main_dss0_pins_default>; }; &dss_ports { #address-cells = <1>; #size-cells = <0>; /* VP1: Output to OLDI */ port@0 { reg = <0>; oldi_out0: endpoint { remote-endpoint = <&lcd_in0>; }; }; port@1 { status = "disabled"; }; }; &main_i2c1 { sii9022: sii9022@3b { status = "disabled"; }; };