Lines Matching refs:sensor

76 static u32 cio2_bridge_parse_rotation(struct cio2_sensor *sensor)  in cio2_bridge_parse_rotation()  argument
78 switch (sensor->ssdb.degree) { in cio2_bridge_parse_rotation()
84 dev_warn(&sensor->adev->dev, in cio2_bridge_parse_rotation()
86 sensor->ssdb.degree); in cio2_bridge_parse_rotation()
91 static enum v4l2_fwnode_orientation cio2_bridge_parse_orientation(struct cio2_sensor *sensor) in cio2_bridge_parse_orientation() argument
93 switch (sensor->pld->panel) { in cio2_bridge_parse_orientation()
104 dev_warn(&sensor->adev->dev, "Unknown _PLD panel value %d\n", in cio2_bridge_parse_orientation()
105 sensor->pld->panel); in cio2_bridge_parse_orientation()
111 struct cio2_sensor *sensor, in cio2_bridge_create_fwnode_properties() argument
118 rotation = cio2_bridge_parse_rotation(sensor); in cio2_bridge_create_fwnode_properties()
119 orientation = cio2_bridge_parse_orientation(sensor); in cio2_bridge_create_fwnode_properties()
121 sensor->prop_names = prop_names; in cio2_bridge_create_fwnode_properties()
123 sensor->local_ref[0] = SOFTWARE_NODE_REFERENCE(&sensor->swnodes[SWNODE_CIO2_ENDPOINT]); in cio2_bridge_create_fwnode_properties()
124 sensor->remote_ref[0] = SOFTWARE_NODE_REFERENCE(&sensor->swnodes[SWNODE_SENSOR_ENDPOINT]); in cio2_bridge_create_fwnode_properties()
126 sensor->dev_properties[0] = PROPERTY_ENTRY_U32( in cio2_bridge_create_fwnode_properties()
127 sensor->prop_names.clock_frequency, in cio2_bridge_create_fwnode_properties()
128 sensor->ssdb.mclkspeed); in cio2_bridge_create_fwnode_properties()
129 sensor->dev_properties[1] = PROPERTY_ENTRY_U32( in cio2_bridge_create_fwnode_properties()
130 sensor->prop_names.rotation, in cio2_bridge_create_fwnode_properties()
132 sensor->dev_properties[2] = PROPERTY_ENTRY_U32( in cio2_bridge_create_fwnode_properties()
133 sensor->prop_names.orientation, in cio2_bridge_create_fwnode_properties()
136 sensor->ep_properties[0] = PROPERTY_ENTRY_U32( in cio2_bridge_create_fwnode_properties()
137 sensor->prop_names.bus_type, in cio2_bridge_create_fwnode_properties()
139 sensor->ep_properties[1] = PROPERTY_ENTRY_U32_ARRAY_LEN( in cio2_bridge_create_fwnode_properties()
140 sensor->prop_names.data_lanes, in cio2_bridge_create_fwnode_properties()
142 sensor->ssdb.lanes); in cio2_bridge_create_fwnode_properties()
143 sensor->ep_properties[2] = PROPERTY_ENTRY_REF_ARRAY( in cio2_bridge_create_fwnode_properties()
144 sensor->prop_names.remote_endpoint, in cio2_bridge_create_fwnode_properties()
145 sensor->local_ref); in cio2_bridge_create_fwnode_properties()
148 sensor->ep_properties[3] = PROPERTY_ENTRY_U64_ARRAY_LEN( in cio2_bridge_create_fwnode_properties()
149 sensor->prop_names.link_frequencies, in cio2_bridge_create_fwnode_properties()
153 sensor->cio2_properties[0] = PROPERTY_ENTRY_U32_ARRAY_LEN( in cio2_bridge_create_fwnode_properties()
154 sensor->prop_names.data_lanes, in cio2_bridge_create_fwnode_properties()
156 sensor->ssdb.lanes); in cio2_bridge_create_fwnode_properties()
157 sensor->cio2_properties[1] = PROPERTY_ENTRY_REF_ARRAY( in cio2_bridge_create_fwnode_properties()
158 sensor->prop_names.remote_endpoint, in cio2_bridge_create_fwnode_properties()
159 sensor->remote_ref); in cio2_bridge_create_fwnode_properties()
162 static void cio2_bridge_init_swnode_names(struct cio2_sensor *sensor) in cio2_bridge_init_swnode_names() argument
164 snprintf(sensor->node_names.remote_port, in cio2_bridge_init_swnode_names()
165 sizeof(sensor->node_names.remote_port), in cio2_bridge_init_swnode_names()
166 SWNODE_GRAPH_PORT_NAME_FMT, sensor->ssdb.link); in cio2_bridge_init_swnode_names()
167 snprintf(sensor->node_names.port, in cio2_bridge_init_swnode_names()
168 sizeof(sensor->node_names.port), in cio2_bridge_init_swnode_names()
170 snprintf(sensor->node_names.endpoint, in cio2_bridge_init_swnode_names()
171 sizeof(sensor->node_names.endpoint), in cio2_bridge_init_swnode_names()
176 struct cio2_sensor *sensor) in cio2_bridge_create_connection_swnodes() argument
178 struct software_node *nodes = sensor->swnodes; in cio2_bridge_create_connection_swnodes()
180 cio2_bridge_init_swnode_names(sensor); in cio2_bridge_create_connection_swnodes()
182 nodes[SWNODE_SENSOR_HID] = NODE_SENSOR(sensor->name, in cio2_bridge_create_connection_swnodes()
183 sensor->dev_properties); in cio2_bridge_create_connection_swnodes()
184 nodes[SWNODE_SENSOR_PORT] = NODE_PORT(sensor->node_names.port, in cio2_bridge_create_connection_swnodes()
187 sensor->node_names.endpoint, in cio2_bridge_create_connection_swnodes()
189 sensor->ep_properties); in cio2_bridge_create_connection_swnodes()
190 nodes[SWNODE_CIO2_PORT] = NODE_PORT(sensor->node_names.remote_port, in cio2_bridge_create_connection_swnodes()
193 sensor->node_names.endpoint, in cio2_bridge_create_connection_swnodes()
195 sensor->cio2_properties); in cio2_bridge_create_connection_swnodes()
200 struct cio2_sensor *sensor; in cio2_bridge_unregister_sensors() local
204 sensor = &bridge->sensors[i]; in cio2_bridge_unregister_sensors()
205 software_node_unregister_nodes(sensor->swnodes); in cio2_bridge_unregister_sensors()
206 ACPI_FREE(sensor->pld); in cio2_bridge_unregister_sensors()
207 acpi_dev_put(sensor->adev); in cio2_bridge_unregister_sensors()
216 struct cio2_sensor *sensor; in cio2_bridge_connect_sensor() local
231 sensor = &bridge->sensors[bridge->n_sensors]; in cio2_bridge_connect_sensor()
232 strscpy(sensor->name, cfg->hid, sizeof(sensor->name)); in cio2_bridge_connect_sensor()
235 &sensor->ssdb, in cio2_bridge_connect_sensor()
236 sizeof(sensor->ssdb)); in cio2_bridge_connect_sensor()
240 status = acpi_get_physical_device_location(adev->handle, &sensor->pld); in cio2_bridge_connect_sensor()
244 if (sensor->ssdb.lanes > CIO2_MAX_LANES) { in cio2_bridge_connect_sensor()
251 cio2_bridge_create_fwnode_properties(sensor, bridge, cfg); in cio2_bridge_connect_sensor()
252 cio2_bridge_create_connection_swnodes(bridge, sensor); in cio2_bridge_connect_sensor()
254 ret = software_node_register_nodes(sensor->swnodes); in cio2_bridge_connect_sensor()
258 fwnode = software_node_fwnode(&sensor->swnodes[ in cio2_bridge_connect_sensor()
265 sensor->adev = acpi_dev_get(adev); in cio2_bridge_connect_sensor()
277 software_node_unregister_nodes(sensor->swnodes); in cio2_bridge_connect_sensor()
279 ACPI_FREE(sensor->pld); in cio2_bridge_connect_sensor()