ACPI: scan: Extract _CRS CSI-2 connection information into swnodes
[sfrench/cifs-2.6.git] / include / acpi / acpi_bus.h
index f122fa1c10a8eceb678ba61b26cc544754be3896..a7fa24f1af4606efe49d42eed8688b846d7ac71b 100644 (file)
@@ -366,8 +366,61 @@ struct acpi_device_data {
 
 struct acpi_gpio_mapping;
 
+#define ACPI_DEVICE_CSI2_DATA_LANES            8
+
+#define ACPI_DEVICE_SWNODE_PORT_NAME_LENGTH    8
+
+enum acpi_device_swnode_port_props {
+       ACPI_DEVICE_SWNODE_PORT_REG,
+       ACPI_DEVICE_SWNODE_PORT_NUM_OF,
+       ACPI_DEVICE_SWNODE_PORT_NUM_ENTRIES
+};
+
+enum acpi_device_swnode_ep_props {
+       ACPI_DEVICE_SWNODE_EP_REMOTE_EP,
+       ACPI_DEVICE_SWNODE_EP_BUS_TYPE,
+       ACPI_DEVICE_SWNODE_EP_REG,
+       ACPI_DEVICE_SWNODE_EP_CLOCK_LANES,
+       ACPI_DEVICE_SWNODE_EP_DATA_LANES,
+       ACPI_DEVICE_SWNODE_EP_LANE_POLARITIES,
+       /* TX only */
+       ACPI_DEVICE_SWNODE_EP_LINK_FREQUENCIES,
+       ACPI_DEVICE_SWNODE_EP_NUM_OF,
+       ACPI_DEVICE_SWNODE_EP_NUM_ENTRIES
+};
+
+/*
+ * Each device has a root software node plus two times as many nodes as the
+ * number of CSI-2 ports.
+ */
+#define ACPI_DEVICE_SWNODE_PORT(port)  (2 * (port) + 1)
+#define ACPI_DEVICE_SWNODE_EP(endpoint)        \
+               (ACPI_DEVICE_SWNODE_PORT(endpoint) + 1)
+
+/**
+ * struct acpi_device_software_node_port - MIPI DisCo for Imaging CSI-2 port
+ * @port_name: Port name.
+ * @data_lanes: "data-lanes" property values.
+ * @lane_polarities: "lane-polarities" property values.
+ * @link_frequencies: "link_frequencies" property values.
+ * @port_nr: Port number.
+ * @crs_crs2_local: _CRS CSI2 record present (i.e. this is a transmitter one).
+ * @port_props: Port properties.
+ * @ep_props: Endpoint properties.
+ * @remote_ep: Reference to the remote endpoint.
+ */
 struct acpi_device_software_node_port {
+       char port_name[ACPI_DEVICE_SWNODE_PORT_NAME_LENGTH + 1];
+       u32 data_lanes[ACPI_DEVICE_CSI2_DATA_LANES];
+       u32 lane_polarities[ACPI_DEVICE_CSI2_DATA_LANES + 1 /* clock lane */];
+       u64 link_frequencies[ACPI_DEVICE_CSI2_DATA_LANES];
        unsigned int port_nr;
+       bool crs_csi2_local;
+
+       struct property_entry port_props[ACPI_DEVICE_SWNODE_PORT_NUM_ENTRIES];
+       struct property_entry ep_props[ACPI_DEVICE_SWNODE_EP_NUM_ENTRIES];
+
+       struct software_node_ref_args remote_ep[1];
 };
 
 /**