media: atomisp: Remove atomisp_gmin_find_subdev()
atomisp_gmin_find_subdev() can be used to lookup a subdev given its i2c-adapter + i2c-client-address. But the only caller of it reads this from the intel_v4l2_subdev_table struct and that same struct already contains a pointer to the v4l2_subdev. So this function is not necessary, drop it and modify its only caller to directly take the subdev from the intel_v4l2_subdev_table struct. Also drop struct intel_v4l2_subdev_i2c_board_info since that now no longer is used. Reviewed-by: Andy Shevchenko <andy@kernel.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
3f1125db16
commit
ba49e91e01
|
@ -21,8 +21,6 @@
|
|||
int atomisp_register_i2c_module(struct v4l2_subdev *subdev,
|
||||
struct camera_sensor_platform_data *plat_data,
|
||||
enum intel_v4l2_subdev_type type);
|
||||
struct v4l2_subdev *atomisp_gmin_find_subdev(struct i2c_adapter *adapter,
|
||||
struct i2c_board_info *board_info);
|
||||
int atomisp_gmin_remove_subdev(struct v4l2_subdev *sd);
|
||||
int gmin_get_var_int(struct device *dev, bool is_gmin,
|
||||
const char *var, int def);
|
||||
|
|
|
@ -125,13 +125,7 @@ struct intel_v4l2_subdev_id {
|
|||
enum atomisp_camera_port port;
|
||||
};
|
||||
|
||||
struct intel_v4l2_subdev_i2c_board_info {
|
||||
struct i2c_board_info board_info;
|
||||
int i2c_adapter_id;
|
||||
};
|
||||
|
||||
struct intel_v4l2_subdev_table {
|
||||
struct intel_v4l2_subdev_i2c_board_info v4l2_subdev;
|
||||
enum intel_v4l2_subdev_type type;
|
||||
enum atomisp_camera_port port;
|
||||
struct v4l2_subdev *subdev;
|
||||
|
|
|
@ -149,7 +149,6 @@ int atomisp_register_i2c_module(struct v4l2_subdev *subdev,
|
|||
enum intel_v4l2_subdev_type type)
|
||||
{
|
||||
int i;
|
||||
struct i2c_board_info *bi;
|
||||
struct gmin_subdev *gs;
|
||||
struct i2c_client *client = v4l2_get_subdevdata(subdev);
|
||||
struct acpi_device *adev = ACPI_COMPANION(&client->dev);
|
||||
|
@ -183,36 +182,10 @@ int atomisp_register_i2c_module(struct v4l2_subdev *subdev,
|
|||
pdata.subdevs[i].type = type;
|
||||
pdata.subdevs[i].port = gs->csi_port;
|
||||
pdata.subdevs[i].subdev = subdev;
|
||||
pdata.subdevs[i].v4l2_subdev.i2c_adapter_id = client->adapter->nr;
|
||||
|
||||
/* Convert i2c_client to i2c_board_info */
|
||||
bi = &pdata.subdevs[i].v4l2_subdev.board_info;
|
||||
memcpy(bi->type, client->name, I2C_NAME_SIZE);
|
||||
bi->flags = client->flags;
|
||||
bi->addr = client->addr;
|
||||
bi->irq = client->irq;
|
||||
bi->platform_data = plat_data;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(atomisp_register_i2c_module);
|
||||
|
||||
struct v4l2_subdev *atomisp_gmin_find_subdev(struct i2c_adapter *adapter,
|
||||
struct i2c_board_info *board_info)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAX_SUBDEVS && pdata.subdevs[i].type; i++) {
|
||||
struct intel_v4l2_subdev_table *sd = &pdata.subdevs[i];
|
||||
|
||||
if (sd->v4l2_subdev.i2c_adapter_id == adapter->nr &&
|
||||
sd->v4l2_subdev.board_info.addr == board_info->addr)
|
||||
return sd->subdev;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(atomisp_gmin_find_subdev);
|
||||
|
||||
int atomisp_gmin_remove_subdev(struct v4l2_subdev *sd)
|
||||
{
|
||||
int i, j;
|
||||
|
|
|
@ -937,45 +937,9 @@ static int atomisp_subdev_probe(struct atomisp_device *isp)
|
|||
/* FIXME: should, instead, use I2C probe */
|
||||
|
||||
for (subdevs = pdata->subdevs; subdevs->type; ++subdevs) {
|
||||
struct v4l2_subdev *subdev;
|
||||
struct i2c_board_info *board_info =
|
||||
&subdevs->v4l2_subdev.board_info;
|
||||
struct i2c_adapter *adapter =
|
||||
i2c_get_adapter(subdevs->v4l2_subdev.i2c_adapter_id);
|
||||
|
||||
dev_info(isp->dev, "Probing Subdev %s\n", board_info->type);
|
||||
|
||||
if (!adapter) {
|
||||
dev_err(isp->dev,
|
||||
"Failed to find i2c adapter for subdev %s\n",
|
||||
board_info->type);
|
||||
break;
|
||||
}
|
||||
|
||||
/* In G-Min, the sensor devices will already be probed
|
||||
* (via ACPI) and registered, do not create new
|
||||
* ones */
|
||||
subdev = atomisp_gmin_find_subdev(adapter, board_info);
|
||||
if (!subdev) {
|
||||
dev_warn(isp->dev, "Subdev %s not found\n",
|
||||
board_info->type);
|
||||
ret = v4l2_device_register_subdev(&isp->v4l2_dev, subdevs->subdev);
|
||||
if (ret)
|
||||
continue;
|
||||
}
|
||||
ret = v4l2_device_register_subdev(&isp->v4l2_dev, subdev);
|
||||
if (ret) {
|
||||
dev_warn(isp->dev, "Subdev %s detection fail\n",
|
||||
board_info->type);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!subdev) {
|
||||
dev_warn(isp->dev, "Subdev %s detection fail\n",
|
||||
board_info->type);
|
||||
continue;
|
||||
}
|
||||
|
||||
dev_info(isp->dev, "Subdev %s successfully register\n",
|
||||
board_info->type);
|
||||
|
||||
switch (subdevs->type) {
|
||||
case RAW_CAMERA:
|
||||
|
@ -992,7 +956,7 @@ static int atomisp_subdev_probe(struct atomisp_device *isp)
|
|||
|
||||
isp->inputs[isp->input_cnt].type = subdevs->type;
|
||||
isp->inputs[isp->input_cnt].port = subdevs->port;
|
||||
isp->inputs[isp->input_cnt].camera = subdev;
|
||||
isp->inputs[isp->input_cnt].camera = subdevs->subdev;
|
||||
isp->inputs[isp->input_cnt].sensor_index = 0;
|
||||
/*
|
||||
* initialize the subdev frame size, then next we can
|
||||
|
@ -1004,22 +968,18 @@ static int atomisp_subdev_probe(struct atomisp_device *isp)
|
|||
break;
|
||||
case CAMERA_MOTOR:
|
||||
if (isp->motor) {
|
||||
dev_warn(isp->dev,
|
||||
"too many atomisp motors, ignored %s\n",
|
||||
board_info->type);
|
||||
dev_warn(isp->dev, "too many atomisp motors\n");
|
||||
continue;
|
||||
}
|
||||
isp->motor = subdev;
|
||||
isp->motor = subdevs->subdev;
|
||||
break;
|
||||
case LED_FLASH:
|
||||
case XENON_FLASH:
|
||||
if (isp->flash) {
|
||||
dev_warn(isp->dev,
|
||||
"too many atomisp flash devices, ignored %s\n",
|
||||
board_info->type);
|
||||
dev_warn(isp->dev, "too many atomisp flash devices\n");
|
||||
continue;
|
||||
}
|
||||
isp->flash = subdev;
|
||||
isp->flash = subdevs->subdev;
|
||||
break;
|
||||
default:
|
||||
dev_dbg(isp->dev, "unknown subdev probed\n");
|
||||
|
|
Loading…
Reference in New Issue