e03342ff6b
- added new boards: hpm5300evk, hpm5301evklite and hpm6800evk - upgaded hpm_sdk - driver updates and bugfixes - add hpmicro BSPs to CI Signed-off-by: Fan YANG <fan.yang@hpmicro.com>
122 lines
2.5 KiB
C
122 lines
2.5 KiB
C
|
|
/*
|
|
* Copyright (c) 2023 HPMicro
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*
|
|
*/
|
|
#include "hpm_panel.h"
|
|
#include "hpm_clock_drv.h"
|
|
|
|
extern hpm_panel_t panel_tm070rdh13;
|
|
extern hpm_panel_t panel_cc10128007;
|
|
extern hpm_panel_t panel_mc10128007_31b;
|
|
extern hpm_panel_t panel_tm103xdgp01;
|
|
|
|
static hpm_panel_t *panel_list[] = {
|
|
#if defined(CONFIG_PANEL_RGB_TM070RDH13) && CONFIG_PANEL_RGB_TM070RDH13
|
|
&panel_tm070rdh13,
|
|
#endif
|
|
|
|
#if defined(CONFIG_PANEL_LVDS_CC10128007) && CONFIG_PANEL_LVDS_CC10128007
|
|
&panel_cc10128007,
|
|
#endif
|
|
|
|
#if defined(CONFIG_PANEL_MIPI_MC10128007_31B) && CONFIG_PANEL_MIPI_MC10128007_31B
|
|
&panel_mc10128007_31b,
|
|
#endif
|
|
|
|
#if defined(CONFIG_PANEL_LVDS_TM103XDGP01) && CONFIG_PANEL_LVDS_TM103XDGP01
|
|
&panel_tm103xdgp01,
|
|
#endif
|
|
};
|
|
|
|
hpm_panel_t *hpm_panel_find_device_default(void)
|
|
{
|
|
if (sizeof(panel_list) > 0)
|
|
return panel_list[0];
|
|
return NULL;
|
|
}
|
|
|
|
hpm_panel_t *hpm_panel_find_device(const char *name)
|
|
{
|
|
int n = sizeof(panel_list) / sizeof(panel_list[0]);
|
|
|
|
for (int i = 0; i < n; i++)
|
|
if (!strcmp(panel_list[i]->name, name))
|
|
return panel_list[i];
|
|
|
|
return NULL;
|
|
}
|
|
|
|
const char *hpm_panel_get_name(hpm_panel_t *panel)
|
|
{
|
|
return panel->name;
|
|
}
|
|
|
|
const hpm_panel_timing_t *hpm_panel_get_timing(hpm_panel_t *panel)
|
|
{
|
|
return &panel->timing;
|
|
}
|
|
|
|
hpm_panel_if_type_t hpm_panel_get_if_type(hpm_panel_t *panel)
|
|
{
|
|
return panel->if_type;
|
|
}
|
|
|
|
void hpm_panel_register_interface(hpm_panel_t *panel, hpm_panel_hw_interface_t *hw_if)
|
|
{
|
|
if (hw_if)
|
|
memcpy(&panel->hw_if, hw_if, sizeof(*hw_if));
|
|
}
|
|
|
|
void hpm_panel_reset(hpm_panel_t *panel)
|
|
{
|
|
if (panel->funcs.reset)
|
|
panel->funcs.reset(panel);
|
|
}
|
|
|
|
void hpm_panel_init(hpm_panel_t *panel)
|
|
{
|
|
if (panel->funcs.init)
|
|
panel->funcs.init(panel);
|
|
}
|
|
|
|
void hpm_panel_power_on(hpm_panel_t *panel)
|
|
{
|
|
if (panel->funcs.power_on)
|
|
panel->funcs.power_on(panel);
|
|
}
|
|
|
|
void hpm_panel_power_off(hpm_panel_t *panel)
|
|
{
|
|
if (panel->funcs.power_off)
|
|
panel->funcs.power_off(panel);
|
|
}
|
|
|
|
void hpm_panel_set_backlight(hpm_panel_t *panel, uint16_t percent)
|
|
{
|
|
if (percent > 100)
|
|
percent = 100;
|
|
|
|
if (panel->hw_if.set_backlight &&
|
|
panel->state.backlight_percent != percent) {
|
|
panel->hw_if.set_backlight(percent);
|
|
panel->state.backlight_percent = percent;
|
|
}
|
|
}
|
|
|
|
uint8_t hpm_panel_get_backlight(hpm_panel_t *panel)
|
|
{
|
|
return panel->state.backlight_percent;
|
|
}
|
|
|
|
void hpm_panel_delay_ms(uint32_t ms)
|
|
{
|
|
clock_cpu_delay_ms(ms);
|
|
}
|
|
|
|
void hpm_panel_delay_us(uint32_t us)
|
|
{
|
|
clock_cpu_delay_us(us);
|
|
} |