Loading drivers/cam_sensor_module/cam_flash/cam_flash_dev.c +57 −23 Original line number Diff line number Diff line Loading @@ -423,6 +423,7 @@ static int32_t cam_flash_platform_probe(struct platform_device *pdev) fctrl->soc_info.pdev = pdev; fctrl->soc_info.dev = &pdev->dev; fctrl->soc_info.dev_name = pdev->name; fctrl->of_node = pdev->dev.of_node; platform_set_drvdata(pdev, fctrl); Loading Loading @@ -465,21 +466,21 @@ static int32_t cam_flash_platform_probe(struct platform_device *pdev) soc_info = &fctrl->soc_info; if (!soc_info->gpio_data) { CAM_INFO(CAM_FLASH, "No GPIO found"); rc = 0; return rc; } CAM_DBG(CAM_FLASH, "No GPIO found"); } else { if (!soc_info->gpio_data->cam_gpio_common_tbl_size) { CAM_INFO(CAM_FLASH, "No GPIO found"); return -EINVAL; CAM_ERR(CAM_FLASH, "Invalid gpio table size"); rc = -EINVAL; goto free_cci_resource; } rc = cam_sensor_util_init_gpio_pin_tbl(soc_info, &fctrl->power_info.gpio_num_info); if ((rc < 0) || (!fctrl->power_info.gpio_num_info)) { CAM_ERR(CAM_FLASH, "No/Error Flash GPIOs"); return -EINVAL; rc = -EINVAL; goto free_cci_resource; } } fctrl->i2c_data.per_frame = Loading Loading @@ -551,13 +552,17 @@ static int32_t cam_flash_i2c_driver_probe(struct i2c_client *client, { int32_t rc = 0, i = 0; struct cam_flash_ctrl *fctrl; struct cam_hw_soc_info *soc_info = NULL; if (client == NULL || id == NULL) { CAM_ERR(CAM_FLASH, "Invalid Args client: %pK id: %pK", client, id); if (client == NULL) { CAM_ERR(CAM_FLASH, "Invalid Args client: %pK", client); return -EINVAL; } if (id == NULL) { CAM_DBG(CAM_FLASH, "device id is Null"); } if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { CAM_ERR(CAM_FLASH, "%s :: i2c_check_functionality failed", client->name); Loading @@ -566,22 +571,51 @@ static int32_t cam_flash_i2c_driver_probe(struct i2c_client *client, /* Create sensor control structure */ fctrl = kzalloc(sizeof(*fctrl), GFP_KERNEL); if (!fctrl) if (!fctrl) { CAM_ERR(CAM_FLASH, "Failed to allocate memory for fctrl"); return -ENOMEM; } i2c_set_clientdata(client, fctrl); fctrl->io_master_info.client = client; fctrl->of_node = client->dev.of_node; fctrl->soc_info.dev = &client->dev; fctrl->soc_info.dev_name = client->name; fctrl->io_master_info.master_type = I2C_MASTER; rc = cam_flash_init_default_params(fctrl); if (rc) { CAM_ERR(CAM_FLASH, "failed: cam_flash_init_default_params rc %d", rc); goto free_ctrl; } rc = cam_flash_get_dt_data(fctrl, &fctrl->soc_info); if (rc) { CAM_ERR(CAM_FLASH, "failed: cam_sensor_parse_dt rc %d", rc); goto free_ctrl; } soc_info = &fctrl->soc_info; if (!soc_info->gpio_data) { CAM_DBG(CAM_FLASH, "No GPIO found"); } else { if (!soc_info->gpio_data->cam_gpio_common_tbl_size) { CAM_ERR(CAM_FLASH, "Invalid gpio table size"); rc = -EINVAL; goto free_ctrl; } rc = cam_sensor_util_init_gpio_pin_tbl(soc_info, &fctrl->power_info.gpio_num_info); if ((rc < 0) || (!fctrl->power_info.gpio_num_info)) { CAM_ERR(CAM_FLASH, "No/Error Flash GPIOs"); rc = -EINVAL; goto free_ctrl; } } rc = cam_flash_init_subdev(fctrl); if (rc) goto free_ctrl; Loading Loading @@ -650,6 +684,7 @@ static struct i2c_driver cam_flash_i2c_driver = { .remove = cam_flash_i2c_driver_remove, .driver = { .name = FLASH_DRIVER_I2C, .of_match_table = cam_flash_dt_match, }, }; Loading @@ -658,14 +693,13 @@ static int32_t __init cam_flash_init_module(void) int32_t rc = 0; rc = platform_driver_register(&cam_flash_platform_driver); if (rc == 0) { CAM_DBG(CAM_FLASH, "platform probe success"); return 0; } if (rc < 0) CAM_ERR(CAM_FLASH, "platform probe failed rc: %d", rc); rc = i2c_add_driver(&cam_flash_i2c_driver); if (rc) if (rc < 0) CAM_ERR(CAM_FLASH, "i2c_add_driver failed rc: %d", rc); return rc; } Loading drivers/cam_sensor_module/cam_flash/cam_flash_soc.c +8 −1 Original line number Diff line number Diff line Loading @@ -240,7 +240,14 @@ int cam_flash_get_dt_data(struct cam_flash_ctrl *fctrl, rc = -ENOMEM; goto release_soc_res; } of_node = fctrl->pdev->dev.of_node; if (fctrl->of_node == NULL) { CAM_ERR(CAM_FLASH, "device node is NULL"); rc = -EINVAL; goto free_soc_private; } of_node = fctrl->of_node; rc = cam_soc_util_get_dt_properties(soc_info); if (rc) { Loading drivers/cam_sensor_module/cam_sensor_io/cam_sensor_qup_i2c.c +15 −5 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved. */ #include "cam_sensor_cmn_header.h" Loading Loading @@ -32,10 +32,15 @@ static int32_t cam_qup_i2c_rxdata( }, }; rc = i2c_transfer(dev_client->adapter, msgs, 2); if (rc < 0) if (rc < 0) { CAM_ERR(CAM_SENSOR, "failed 0x%x", saddr); return rc; } /* Returns negative errno */ /* else the number of messages executed. */ /* So positive values are not errors. */ return 0; } static int32_t cam_qup_i2c_txdata( Loading @@ -53,10 +58,15 @@ static int32_t cam_qup_i2c_txdata( }, }; rc = i2c_transfer(dev_client->client->adapter, msg, 1); if (rc < 0) if (rc < 0) { CAM_ERR(CAM_SENSOR, "failed 0x%x", saddr); return rc; } /* Returns negative errno, */ /* else the number of messages executed. */ /* So positive values are not errors. */ return 0; } int32_t cam_qup_i2c_read(struct i2c_client *client, uint32_t addr, uint32_t *data, Loading Loading
drivers/cam_sensor_module/cam_flash/cam_flash_dev.c +57 −23 Original line number Diff line number Diff line Loading @@ -423,6 +423,7 @@ static int32_t cam_flash_platform_probe(struct platform_device *pdev) fctrl->soc_info.pdev = pdev; fctrl->soc_info.dev = &pdev->dev; fctrl->soc_info.dev_name = pdev->name; fctrl->of_node = pdev->dev.of_node; platform_set_drvdata(pdev, fctrl); Loading Loading @@ -465,21 +466,21 @@ static int32_t cam_flash_platform_probe(struct platform_device *pdev) soc_info = &fctrl->soc_info; if (!soc_info->gpio_data) { CAM_INFO(CAM_FLASH, "No GPIO found"); rc = 0; return rc; } CAM_DBG(CAM_FLASH, "No GPIO found"); } else { if (!soc_info->gpio_data->cam_gpio_common_tbl_size) { CAM_INFO(CAM_FLASH, "No GPIO found"); return -EINVAL; CAM_ERR(CAM_FLASH, "Invalid gpio table size"); rc = -EINVAL; goto free_cci_resource; } rc = cam_sensor_util_init_gpio_pin_tbl(soc_info, &fctrl->power_info.gpio_num_info); if ((rc < 0) || (!fctrl->power_info.gpio_num_info)) { CAM_ERR(CAM_FLASH, "No/Error Flash GPIOs"); return -EINVAL; rc = -EINVAL; goto free_cci_resource; } } fctrl->i2c_data.per_frame = Loading Loading @@ -551,13 +552,17 @@ static int32_t cam_flash_i2c_driver_probe(struct i2c_client *client, { int32_t rc = 0, i = 0; struct cam_flash_ctrl *fctrl; struct cam_hw_soc_info *soc_info = NULL; if (client == NULL || id == NULL) { CAM_ERR(CAM_FLASH, "Invalid Args client: %pK id: %pK", client, id); if (client == NULL) { CAM_ERR(CAM_FLASH, "Invalid Args client: %pK", client); return -EINVAL; } if (id == NULL) { CAM_DBG(CAM_FLASH, "device id is Null"); } if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { CAM_ERR(CAM_FLASH, "%s :: i2c_check_functionality failed", client->name); Loading @@ -566,22 +571,51 @@ static int32_t cam_flash_i2c_driver_probe(struct i2c_client *client, /* Create sensor control structure */ fctrl = kzalloc(sizeof(*fctrl), GFP_KERNEL); if (!fctrl) if (!fctrl) { CAM_ERR(CAM_FLASH, "Failed to allocate memory for fctrl"); return -ENOMEM; } i2c_set_clientdata(client, fctrl); fctrl->io_master_info.client = client; fctrl->of_node = client->dev.of_node; fctrl->soc_info.dev = &client->dev; fctrl->soc_info.dev_name = client->name; fctrl->io_master_info.master_type = I2C_MASTER; rc = cam_flash_init_default_params(fctrl); if (rc) { CAM_ERR(CAM_FLASH, "failed: cam_flash_init_default_params rc %d", rc); goto free_ctrl; } rc = cam_flash_get_dt_data(fctrl, &fctrl->soc_info); if (rc) { CAM_ERR(CAM_FLASH, "failed: cam_sensor_parse_dt rc %d", rc); goto free_ctrl; } soc_info = &fctrl->soc_info; if (!soc_info->gpio_data) { CAM_DBG(CAM_FLASH, "No GPIO found"); } else { if (!soc_info->gpio_data->cam_gpio_common_tbl_size) { CAM_ERR(CAM_FLASH, "Invalid gpio table size"); rc = -EINVAL; goto free_ctrl; } rc = cam_sensor_util_init_gpio_pin_tbl(soc_info, &fctrl->power_info.gpio_num_info); if ((rc < 0) || (!fctrl->power_info.gpio_num_info)) { CAM_ERR(CAM_FLASH, "No/Error Flash GPIOs"); rc = -EINVAL; goto free_ctrl; } } rc = cam_flash_init_subdev(fctrl); if (rc) goto free_ctrl; Loading Loading @@ -650,6 +684,7 @@ static struct i2c_driver cam_flash_i2c_driver = { .remove = cam_flash_i2c_driver_remove, .driver = { .name = FLASH_DRIVER_I2C, .of_match_table = cam_flash_dt_match, }, }; Loading @@ -658,14 +693,13 @@ static int32_t __init cam_flash_init_module(void) int32_t rc = 0; rc = platform_driver_register(&cam_flash_platform_driver); if (rc == 0) { CAM_DBG(CAM_FLASH, "platform probe success"); return 0; } if (rc < 0) CAM_ERR(CAM_FLASH, "platform probe failed rc: %d", rc); rc = i2c_add_driver(&cam_flash_i2c_driver); if (rc) if (rc < 0) CAM_ERR(CAM_FLASH, "i2c_add_driver failed rc: %d", rc); return rc; } Loading
drivers/cam_sensor_module/cam_flash/cam_flash_soc.c +8 −1 Original line number Diff line number Diff line Loading @@ -240,7 +240,14 @@ int cam_flash_get_dt_data(struct cam_flash_ctrl *fctrl, rc = -ENOMEM; goto release_soc_res; } of_node = fctrl->pdev->dev.of_node; if (fctrl->of_node == NULL) { CAM_ERR(CAM_FLASH, "device node is NULL"); rc = -EINVAL; goto free_soc_private; } of_node = fctrl->of_node; rc = cam_soc_util_get_dt_properties(soc_info); if (rc) { Loading
drivers/cam_sensor_module/cam_sensor_io/cam_sensor_qup_i2c.c +15 −5 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved. */ #include "cam_sensor_cmn_header.h" Loading Loading @@ -32,10 +32,15 @@ static int32_t cam_qup_i2c_rxdata( }, }; rc = i2c_transfer(dev_client->adapter, msgs, 2); if (rc < 0) if (rc < 0) { CAM_ERR(CAM_SENSOR, "failed 0x%x", saddr); return rc; } /* Returns negative errno */ /* else the number of messages executed. */ /* So positive values are not errors. */ return 0; } static int32_t cam_qup_i2c_txdata( Loading @@ -53,10 +58,15 @@ static int32_t cam_qup_i2c_txdata( }, }; rc = i2c_transfer(dev_client->client->adapter, msg, 1); if (rc < 0) if (rc < 0) { CAM_ERR(CAM_SENSOR, "failed 0x%x", saddr); return rc; } /* Returns negative errno, */ /* else the number of messages executed. */ /* So positive values are not errors. */ return 0; } int32_t cam_qup_i2c_read(struct i2c_client *client, uint32_t addr, uint32_t *data, Loading