Lines Matching +full:link +full:- +full:frequencies
1 // SPDX-License-Identifier: GPL-2.0+
3 * AMD ISP platform driver for sensor i2-client instantiation
22 #define AMD_ISP_PLAT_DRV_NAME "amd-isp4"
92 PROPERTY_ENTRY_REF_ARRAY("remote-endpoint", isp4_refs),
107 PROPERTY_ENTRY_U32("clock-frequency", 1 * HZ_PER_MHZ),
120 PROPERTY_ENTRY_U32("clock-frequency", 24 * HZ_PER_MHZ),
156 /* OV05C10 supports one single link frequency */
161 /* OV05C10 supports only 2-lane configuration */
169 PROPERTY_ENTRY_U32("bus-type", 4),
170 PROPERTY_ENTRY_U32_ARRAY_LEN("data-lanes", ov05c10_data_lanes,
172 PROPERTY_ENTRY_U64_ARRAY_LEN("link-frequencies", ov05c10_link_freqs,
174 PROPERTY_ENTRY_REF_ARRAY("remote-endpoint", ov05c10_refs),
200 * remote-endpoint = &OMNI5C10_ep;
207 * clock-frequency = 1 MHz;
209 * clock-frequency = 24MHz;
213 * bus-type = 4;
214 * data-lanes = <1 2>;
215 * link-frequencies = 900MHz;
216 * remote-endpoint = &isp4_mipi1;
256 return !strcmp(adap->name, AMDISP_I2C_ADAP_NAME); in is_isp_i2c_adapter()
262 struct i2c_board_info *info = &isp4_platform->board_info; in instantiate_isp_i2c_client()
265 guard(mutex)(&isp4_platform->lock); in instantiate_isp_i2c_client()
267 if (isp4_platform->i2c_dev) in instantiate_isp_i2c_client()
272 dev_err(&adap->dev, "error %pe registering isp i2c_client\n", i2c_dev); in instantiate_isp_i2c_client()
275 isp4_platform->i2c_dev = i2c_dev; in instantiate_isp_i2c_client()
300 scoped_guard(mutex, &isp4_platform->lock) { in isp_i2c_bus_notify()
301 if (isp4_platform->i2c_dev == client) { in isp_i2c_bus_notify()
302 dev_dbg(&client->adapter->dev, "amdisp i2c_client removed\n"); in isp_i2c_bus_notify()
303 isp4_platform->i2c_dev = NULL; in isp_i2c_bus_notify()
322 return ERR_PTR(-ENOMEM); in prepare_amdisp_platform()
324 ret = devm_mutex_init(dev, &isp4_platform->lock); in prepare_amdisp_platform()
328 isp4_platform->board_info.dev_name = src->board_info.dev_name; in prepare_amdisp_platform()
329 strscpy(isp4_platform->board_info.type, src->board_info.type); in prepare_amdisp_platform()
330 isp4_platform->board_info.addr = src->board_info.addr; in prepare_amdisp_platform()
331 isp4_platform->pinfo = src; in prepare_amdisp_platform()
333 ret = software_node_register_node_group(src->swnodes); in prepare_amdisp_platform()
338 isp4_platform->board_info.swnode = src->swnodes[6]; in prepare_amdisp_platform()
350 if (!adap->owner) in try_to_instantiate_i2c_client()
366 pinfo = device_get_match_data(&pdev->dev); in amd_isp_probe()
368 return dev_err_probe(&pdev->dev, -EINVAL, in amd_isp_probe()
371 isp4_platform = prepare_amdisp_platform(&pdev->dev, pinfo); in amd_isp_probe()
373 return dev_err_probe(&pdev->dev, PTR_ERR(isp4_platform), in amd_isp_probe()
376 isp4_platform->i2c_nb.notifier_call = isp_i2c_bus_notify; in amd_isp_probe()
377 ret = bus_register_notifier(&i2c_bus_type, &isp4_platform->i2c_nb); in amd_isp_probe()
381 adev = ACPI_COMPANION(&pdev->dev); in amd_isp_probe()
383 adev->driver_data = (void *)pinfo->swnodes[0]; in amd_isp_probe()
392 software_node_unregister_node_group(isp4_platform->pinfo->swnodes); in amd_isp_probe()
400 bus_unregister_notifier(&i2c_bus_type, &isp4_platform->i2c_nb); in amd_isp_remove()
401 i2c_unregister_device(isp4_platform->i2c_dev); in amd_isp_remove()
402 software_node_unregister_node_group(isp4_platform->pinfo->swnodes); in amd_isp_remove()