X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=blobdiff_plain;f=board%2Fkaro%2Fcommon%2Fkaro.h;h=d4f5cdb9e8821d3cb46c2979296f32bc5ade9c73;hp=dbfa58e56649431e531a2be725e7bb170edeff89;hb=18291c7ea879bae3af53a65eac4e5c81e53ad662;hpb=8bce5e0e7837e862050c5a3ca638f54538d0f9a2 diff --git a/board/karo/common/karo.h b/board/karo/common/karo.h index dbfa58e566..d4f5cdb9e8 100644 --- a/board/karo/common/karo.h +++ b/board/karo/common/karo.h @@ -14,22 +14,36 @@ * GNU General Public License for more details. * */ + +#include + struct fb_videomode; +#ifdef CONFIG_SYS_LVDS_IF +#define is_lvds() 1 +#else +#define is_lvds() 0 +#endif + +void env_cleanup(void); + #ifdef CONFIG_OF_LIBFDT void karo_fdt_remove_node(void *blob, const char *node); void karo_fdt_move_fdt(void); -void karo_fdt_fixup_touchpanel(void *blob); -void karo_fdt_fixup_usb_otg(void *blob, const char *node, const char *phy); -void karo_fdt_del_prop(void *blob, const char *compat, phys_addr_t offs, +void karo_fdt_fixup_touchpanel(void *blob, const char *panels[], + size_t num_panels); +void karo_fdt_fixup_usb_otg(void *blob, const char *node, const char *phy, + const char *phy_supply); +void karo_fdt_fixup_flexcan(void *blob, int xcvr_present); +void karo_fdt_del_prop(void *blob, const char *compat, u32 offs, const char *prop); void karo_fdt_enable_node(void *blob, const char *node, int enable); -void *karo_fdt_load_dtb(void); int karo_fdt_get_fb_mode(void *blob, const char *name, struct fb_videomode *fb_mode); int karo_fdt_update_fb_mode(void *blob, const char *name); int karo_fdt_create_fb_mode(void *blob, const char *name, struct fb_videomode *mode); +int karo_fdt_get_backlight_polarity(const void *blob); #else static inline void karo_fdt_remove_node(void *blob, const char *node) { @@ -37,25 +51,26 @@ static inline void karo_fdt_remove_node(void *blob, const char *node) static inline void karo_fdt_move_fdt(void) { } -static inline void karo_fdt_fixup_touchpanel(void *blob) +static inline void karo_fdt_fixup_touchpanel(void *blob, const char *panels[], + size_t num_panels) { } static inline void karo_fdt_fixup_usb_otg(void *blob, const char *node, - const char *phy) + const char *phy, + const char *phy_supply) +{ +} +static inline void karo_fdt_fixup_flexcan(void *blob, int xcvr_present) { } static inline void karo_fdt_del_prop(void *blob, const char *compat, - phys_addr_t offs, const char *prop) + u32 offs, const char *prop) { } static inline void karo_fdt_enable_node(void *blob, const char *node, int enable) { } -static inline void *karo_fdt_load_dtb(void) -{ - return NULL; -} static inline int karo_fdt_get_fb_mode(void *blob, const char *name, struct fb_videomode *fb_mode) { @@ -71,6 +86,77 @@ static inline int karo_fdt_create_fb_mode(void *blob, { return 0; } +static inline int karo_fdt_get_backlight_polarity(const void *blob) +{ + return getenv_yesno("backlight_polarity"); +} +#endif + +#if defined(CONFIG_SYS_LVDS_IF) && defined(CONFIG_OF_LIBFDT) +int karo_fdt_get_lcd_bus_width(const void *blob, int default_width); +int karo_fdt_get_lvds_mapping(const void *blob, int default_mapping); +u8 karo_fdt_get_lvds_channels(const void *blob); +#else +static inline int karo_fdt_get_lcd_bus_width(const void *blob, int default_width) +{ + return default_width; +} +static inline int karo_fdt_get_lvds_mapping(const void *blob, int default_mapping) +{ + return default_mapping; +} +static inline u8 karo_fdt_get_lvds_channels(const void *blob) +{ + return 0; +} #endif +static inline const char *karo_get_vmode(const char *video_mode) +{ + const char *vmode = NULL; + + if (video_mode == NULL || strlen(video_mode) == 0) + return NULL; + + vmode = strchr(video_mode, ':'); + return vmode ? vmode + 1 : video_mode; +} + +#ifdef CONFIG_SPLASH_SCREEN int karo_load_splashimage(int mode); +#else +static inline int karo_load_splashimage(int mode) +{ + return 0; +} +#endif + +#ifdef CONFIG_CMD_NAND +int karo_load_nand_part(const char *part, void *addr, size_t len); +#else +static inline int karo_load_nand_part(const char *part, void *addr, size_t len) +{ + return -EOPNOTSUPP; +} +#endif + +#ifdef CONFIG_ENV_IS_IN_MMC +int karo_load_mmc_part(const char *part, void *addr, size_t len); +#else +static inline int karo_load_mmc_part(const char *part, void *addr, size_t len) +{ + return -EOPNOTSUPP; +} +#endif + +static inline int karo_load_part(const char *part, void *addr, size_t len) +{ + int ret; + + ret = karo_load_nand_part(part, addr, len); + if (ret == -EOPNOTSUPP) + return karo_load_mmc_part(part, addr, len); + return ret; +} + +#define DIV_ROUND(n, d) (((n) + (d) / 2) / (d))