mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
V4L/DVB (10066): mt9m001 mt9v022: fix bus-width switch GPIO availability test
Testing for non-NULL platform-data is not enough, we have to check if the GPIO in the platform data is valid or not. Also see my earlier patch: [ARM] pxa/pcm990: use negative number for an invalid GPIO in camera data Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
88f4b8990f
commit
297a7ef700
2 changed files with 6 additions and 4 deletions
|
@ -578,6 +578,7 @@ static int mt9m001_set_control(struct soc_camera_device *icd, struct v4l2_contro
|
|||
static int mt9m001_video_probe(struct soc_camera_device *icd)
|
||||
{
|
||||
struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
|
||||
struct soc_camera_link *icl = mt9m001->client->dev.platform_data;
|
||||
s32 data;
|
||||
int ret;
|
||||
|
||||
|
@ -600,7 +601,7 @@ static int mt9m001_video_probe(struct soc_camera_device *icd)
|
|||
case 0x8421:
|
||||
mt9m001->model = V4L2_IDENT_MT9M001C12ST;
|
||||
icd->formats = mt9m001_colour_formats;
|
||||
if (mt9m001->client->dev.platform_data)
|
||||
if (gpio_is_valid(icl->gpio))
|
||||
icd->num_formats = ARRAY_SIZE(mt9m001_colour_formats);
|
||||
else
|
||||
icd->num_formats = 1;
|
||||
|
@ -608,7 +609,7 @@ static int mt9m001_video_probe(struct soc_camera_device *icd)
|
|||
case 0x8431:
|
||||
mt9m001->model = V4L2_IDENT_MT9M001C12STM;
|
||||
icd->formats = mt9m001_monochrome_formats;
|
||||
if (mt9m001->client->dev.platform_data)
|
||||
if (gpio_is_valid(icl->gpio))
|
||||
icd->num_formats = ARRAY_SIZE(mt9m001_monochrome_formats);
|
||||
else
|
||||
icd->num_formats = 1;
|
||||
|
|
|
@ -690,6 +690,7 @@ static int mt9v022_set_control(struct soc_camera_device *icd,
|
|||
static int mt9v022_video_probe(struct soc_camera_device *icd)
|
||||
{
|
||||
struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
|
||||
struct soc_camera_link *icl = mt9v022->client->dev.platform_data;
|
||||
s32 data;
|
||||
int ret;
|
||||
|
||||
|
@ -725,7 +726,7 @@ static int mt9v022_video_probe(struct soc_camera_device *icd)
|
|||
ret = reg_write(icd, MT9V022_PIXEL_OPERATION_MODE, 4 | 0x11);
|
||||
mt9v022->model = V4L2_IDENT_MT9V022IX7ATC;
|
||||
icd->formats = mt9v022_colour_formats;
|
||||
if (mt9v022->client->dev.platform_data)
|
||||
if (gpio_is_valid(icl->gpio))
|
||||
icd->num_formats = ARRAY_SIZE(mt9v022_colour_formats);
|
||||
else
|
||||
icd->num_formats = 1;
|
||||
|
@ -733,7 +734,7 @@ static int mt9v022_video_probe(struct soc_camera_device *icd)
|
|||
ret = reg_write(icd, MT9V022_PIXEL_OPERATION_MODE, 0x11);
|
||||
mt9v022->model = V4L2_IDENT_MT9V022IX7ATM;
|
||||
icd->formats = mt9v022_monochrome_formats;
|
||||
if (mt9v022->client->dev.platform_data)
|
||||
if (gpio_is_valid(icl->gpio))
|
||||
icd->num_formats = ARRAY_SIZE(mt9v022_monochrome_formats);
|
||||
else
|
||||
icd->num_formats = 1;
|
||||
|
|
Loading…
Reference in a new issue