karo_set_fdtsize(blob);
}
-static const char *karo_touchpanels[] = {
- "ti,tsc2007",
- "edt,edt-ft5x06",
-#ifdef CONFIG_MX28
- "fsl,imx28-lradc",
-#endif
-};
-
static void fdt_disable_tp_node(void *blob, const char *name)
{
int offs = fdt_node_offset_by_compatible(blob, -1, name);
fdt_set_node_status(blob, offs, FDT_STATUS_DISABLED, 0);
}
-void karo_fdt_fixup_touchpanel(void *blob)
+void karo_fdt_fixup_touchpanel(void *blob, const char *panels[],
+ size_t num_panels)
{
int i;
const char *model = getenv("touchpanel");
- for (i = 0; i < ARRAY_SIZE(karo_touchpanels); i++) {
- const char *tp = karo_touchpanels[i];
-
- if (model != NULL && strcmp(model, tp) == 0)
- continue;
+ for (i = 0; i < num_panels; i++) {
+ const char *tp = panels[i];
if (model != NULL) {
if (strcmp(model, tp) == 0)
continue;
- tp = strchr(tp, ',');
- if (tp != NULL && *tp != '\0' && strcmp(model, tp + 1) == 0)
+ while (tp != NULL) {
+ if (*tp != '\0' && strcmp(model, tp + 1) == 0)
+ break;
+ tp = strpbrk(tp + 1, ",-");
+ }
+ if (tp != NULL)
continue;
}
- fdt_disable_tp_node(blob, karo_touchpanels[i]);
+ fdt_disable_tp_node(blob, panels[i]);
}
karo_set_fdtsize(blob);
}
#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_touchpanel(void *blob, const char *panels[],
+ size_t num_panels);
void karo_fdt_fixup_usb_otg(void *blob, const char *node, const char *phy);
void karo_fdt_fixup_flexcan(void *blob, int xcvr_present);
void karo_fdt_del_prop(void *blob, const char *compat, phys_addr_t offs,
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,
#define fdt_fixup_mtdparts(b,n,c) do { } while (0)
#endif
+static const char *tx28_touchpanels[] = {
+ "ti,tsc2007",
+ "edt,edt-ft5x06",
+ "fsl,imx28-lradc",
+};
+
void ft_board_setup(void *blob, bd_t *bd)
{
const char *baseboard = getenv("baseboard");
fdt_fixup_mtdparts(blob, tx28_nand_nodes, ARRAY_SIZE(tx28_nand_nodes));
fdt_fixup_ethernet(blob);
- karo_fdt_fixup_touchpanel(blob);
+ karo_fdt_fixup_touchpanel(blob, tx28_touchpanels,
+ ARRAY_SIZE(tx28_touchpanels));
karo_fdt_fixup_usb_otg(blob, "usbotg", "fsl,usbphy");
karo_fdt_fixup_flexcan(blob, stk5_v5);
karo_fdt_update_fb_mode(blob, getenv("video_mode"));
#define fdt_fixup_mtdparts(b,n,c) do { } while (0)
#endif /* CONFIG_FDT_FIXUP_PARTITIONS */
+static const char *tx48_touchpanels[] = {
+ "ti,tsc2007",
+ "edt,edt-ft5x06",
+ "ti,am3359-tscadc",
+};
+
void ft_board_setup(void *blob, bd_t *bd)
{
const char *baseboard = getenv("baseboard");
fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
fdt_fixup_ethernet(blob);
- karo_fdt_fixup_touchpanel(blob);
+ karo_fdt_fixup_touchpanel(blob, tx48_touchpanels,
+ ARRAY_SIZE(tx48_touchpanels));
+ karo_fdt_fixup_usb_otg(blob, "usb0", "phys");
karo_fdt_fixup_flexcan(blob, stk5_v5);
video_mode = karo_fdt_set_display(video_mode, "/panel", NULL);
#define fdt_fixup_mtdparts(b,n,c) do { } while (0)
#endif
+static const char *tx51_touchpanels[] = {
+ "ti,tsc2007",
+ "edt,edt-ft5x06",
+};
+
void ft_board_setup(void *blob, bd_t *bd)
{
fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
fdt_fixup_ethernet(blob);
- karo_fdt_fixup_touchpanel(blob);
+ karo_fdt_fixup_touchpanel(blob, tx51_touchpanels,
+ ARRAY_SIZE(tx51_touchpanels));
karo_fdt_fixup_usb_otg(blob, "fsl,imx-otg", "fsl,usbphy");
karo_fdt_update_fb_mode(blob, getenv("video_mode"));
}
}
#endif /* CONFIG_SYS_TX53_HWREV_2 */
+static const char *tx53_touchpanels[] = {
+ "ti,tsc2007",
+ "edt,edt-ft5x06",
+};
+
void ft_board_setup(void *blob, bd_t *bd)
{
const char *baseboard = getenv("baseboard");
fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
fdt_fixup_ethernet(blob);
- karo_fdt_fixup_touchpanel(blob);
+ karo_fdt_fixup_touchpanel(blob, tx53_touchpanels,
+ ARRAY_SIZE(tx53_touchpanels));
karo_fdt_fixup_usb_otg(blob, "fsl,imx-otg", "fsl,usbphy");
karo_fdt_fixup_flexcan(blob, stk5_v5);
tx53_fixup_rtc(blob);
#define fdt_fixup_mtdparts(b,n,c) do { } while (0)
#endif
+static const char *tx6_touchpanels[] = {
+ "ti,tsc2007",
+ "edt,edt-ft5x06",
+};
+
void ft_board_setup(void *blob, bd_t *bd)
{
const char *baseboard = getenv("baseboard");
fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
fdt_fixup_ethernet(blob);
- karo_fdt_fixup_touchpanel(blob);
+ karo_fdt_fixup_touchpanel(blob, tx6_touchpanels,
+ ARRAY_SIZE(tx6_touchpanels));
karo_fdt_fixup_usb_otg(blob, "usbotg", "fsl,usbphy");
karo_fdt_fixup_flexcan(blob, stk5_v5);