diff options
author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2013-04-17 14:03:34 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-04-25 08:33:42 -0400 |
commit | 0c2224ee0e480001eab6fd31e7d12b6d80745926 (patch) | |
tree | 9472818f6e3c08a0aa4f1f5d26a4130728aa347f /drivers/media/i2c/s5c73m3 | |
parent | 068b16b638070611272cf60da821cd70b2a267b3 (diff) |
[media] s5c73m3: Fix remove() callback to free requested resources
Make sure v4l2_device_unregister_subdev() is called for both:
oif and sensor subdev and both media entities are freed on
driver removal.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/i2c/s5c73m3')
-rw-r--r-- | drivers/media/i2c/s5c73m3/s5c73m3-core.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/media/i2c/s5c73m3/s5c73m3-core.c b/drivers/media/i2c/s5c73m3/s5c73m3-core.c index b353c50a6881..ce8fcf22253a 100644 --- a/drivers/media/i2c/s5c73m3/s5c73m3-core.c +++ b/drivers/media/i2c/s5c73m3/s5c73m3-core.c | |||
@@ -1668,13 +1668,17 @@ out_err1: | |||
1668 | 1668 | ||
1669 | static int s5c73m3_remove(struct i2c_client *client) | 1669 | static int s5c73m3_remove(struct i2c_client *client) |
1670 | { | 1670 | { |
1671 | struct v4l2_subdev *sd = i2c_get_clientdata(client); | 1671 | struct v4l2_subdev *oif_sd = i2c_get_clientdata(client); |
1672 | struct s5c73m3 *state = sensor_sd_to_s5c73m3(sd); | 1672 | struct s5c73m3 *state = oif_sd_to_s5c73m3(oif_sd); |
1673 | struct v4l2_subdev *sensor_sd = &state->sensor_sd; | ||
1673 | 1674 | ||
1674 | v4l2_device_unregister_subdev(sd); | 1675 | v4l2_device_unregister_subdev(oif_sd); |
1675 | 1676 | ||
1676 | v4l2_ctrl_handler_free(sd->ctrl_handler); | 1677 | v4l2_ctrl_handler_free(oif_sd->ctrl_handler); |
1677 | media_entity_cleanup(&sd->entity); | 1678 | media_entity_cleanup(&oif_sd->entity); |
1679 | |||
1680 | v4l2_device_unregister_subdev(sensor_sd); | ||
1681 | media_entity_cleanup(&sensor_sd->entity); | ||
1678 | 1682 | ||
1679 | s5c73m3_unregister_spi_driver(state); | 1683 | s5c73m3_unregister_spi_driver(state); |
1680 | s5c73m3_free_gpios(state); | 1684 | s5c73m3_free_gpios(state); |