diff options
Diffstat (limited to 'board/lg/star/star.c')
-rw-r--r-- | board/lg/star/star.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/board/lg/star/star.c b/board/lg/star/star.c new file mode 100644 index 00000000000..dc593754101 --- /dev/null +++ b/board/lg/star/star.c @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2023 + * Svyatoslav Ryhel <clamor95@gmail.com> + */ + +#include <dm.h> +#include <dm/root.h> +#include <fdt_support.h> +#include <log.h> +#include <spl_gpio.h> + +static int star_fix_panel(void *fdt) +{ + int panel_offset, ret; + + /* Patch panel compatible */ + spl_gpio_input(NULL, TEGRA_GPIO(J, 5)); + if (spl_gpio_get_value(NULL, TEGRA_GPIO(J, 5))) { + panel_offset = fdt_node_offset_by_compatible(fdt, -1, + "hit,tx10d07vm0baa"); + if (panel_offset < 0) { + log_debug("%s: panel node not found\n", __func__); + return panel_offset; + } + + ret = fdt_setprop_string(fdt, panel_offset, "compatible", + "lg,lh400wv3-sd04"); + if (ret) { + log_debug("%s: panel comapible patch failed\n", __func__); + return ret; + } + } + + return 0; +} + +void pinmux_init(void) +{ + void *fdt = (void *)gd->fdt_blob; + + star_fix_panel(fdt); +} + +#if IS_ENABLED(CONFIG_OF_LIBFDT) && IS_ENABLED(CONFIG_OF_BOARD_SETUP) +int ft_board_setup(void *fdt, struct bd_info *bd) +{ + return star_fix_panel(fdt); +} +#endif |