summaryrefslogtreecommitdiff
path: root/src/include/mipi
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/mipi')
-rw-r--r--src/include/mipi/ids.h29
-rw-r--r--src/include/mipi/panel.h56
2 files changed, 85 insertions, 0 deletions
diff --git a/src/include/mipi/ids.h b/src/include/mipi/ids.h
new file mode 100644
index 0000000000..982e6e14b4
--- /dev/null
+++ b/src/include/mipi/ids.h
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/*
+ * MIPI Alliance Manufacturer IDs from https://mid.mipi.org
+ */
+
+#ifndef __MIPI_IDS_H__
+#define __MIPI_IDS_H__
+
+/* Board Members */
+#define MIPI_MFG_ID_INTEL 0x0105
+#define MIPI_MFG_ID_QUALCOMM 0x0217
+#define MIPI_MFG_ID_BOSCH 0x03b8
+#define MIPI_MFG_ID_SAMSUNG 0x010b
+#define MIPI_MFG_ID_ST_MICRO 0x0104
+#define MIPI_MFG_ID_SYNOPSYS 0x0148
+#define MIPI_MFG_ID_TI 0x0102
+#define MIPI_MFG_ID_TOSHIBA 0x0126
+
+/* Contributing Members */
+#define MIPI_MFG_ID_REALTEK 0x025d
+#define MIPI_DEV_ID_REALTEK_ALC5682 0x5682
+#define MIPI_DEV_ID_REALTEK_ALC711 0x0711
+#define MIPI_DEV_ID_REALTEK_ALC1308 0x1308
+
+#define MIPI_MFG_ID_MAXIM 0x019f
+#define MIPI_DEV_ID_MAXIM_MAX98373 0x8373
+
+#endif /* __MIPI_IDS_H__ */
diff --git a/src/include/mipi/panel.h b/src/include/mipi/panel.h
new file mode 100644
index 0000000000..e0a1463823
--- /dev/null
+++ b/src/include/mipi/panel.h
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __MIPI_PANEL_H__
+#define __MIPI_PANEL_H__
+
+#include <edid.h>
+#include <types.h>
+
+/* Definitions for cmd in panel_init_command */
+enum panel_init_cmd {
+ PANEL_CMD_END = 0,
+ PANEL_CMD_DELAY = 1,
+ PANEL_CMD_GENERIC = 2,
+ PANEL_CMD_DCS = 3,
+};
+
+struct panel_init_command {
+ u8 cmd;
+ u8 len;
+ u8 data[];
+};
+
+/*
+ * The data to be serialized and put into CBFS.
+ * Note some fields, for example edid.mode.name, were actually pointers and
+ * cannot be really serialized.
+ */
+struct panel_serializable_data {
+ struct edid edid; /* edid info of this panel */
+ enum lb_fb_orientation orientation; /* Panel orientation */
+ u8 init[]; /* A packed array of panel_init_command */
+};
+
+typedef cb_err_t (*mipi_cmd_func_t)(enum panel_init_cmd cmd, const u8 *data, u8 len);
+
+/* Parse a command array and call cmd_func() for each entry. Delays get handled internally. */
+cb_err_t mipi_panel_parse_init_commands(const void *buf, mipi_cmd_func_t cmd_func);
+
+#define PANEL_DCS(...) \
+ PANEL_CMD_DCS, \
+ sizeof((u8[]){__VA_ARGS__}), \
+ __VA_ARGS__
+
+#define PANEL_GENERIC(...) \
+ PANEL_CMD_GENERIC, \
+ sizeof((u8[]){__VA_ARGS__}), \
+ __VA_ARGS__
+
+#define PANEL_DELAY(delay) \
+ PANEL_CMD_DELAY, \
+ delay
+
+#define PANEL_END \
+ PANEL_CMD_END
+
+#endif /* __MIPI_PANEL_H__ */