* [PATCH] Move .power and .reset from soc_camera platform to sensor driver
@ 2008-07-31 6:02 Stefan Herbrechtsmeier
2008-07-31 13:53 ` Paulius Zaleckas
[not found] ` <48917CB5.6000304@teltonika.lt>
0 siblings, 2 replies; 14+ messages in thread
From: Stefan Herbrechtsmeier @ 2008-07-31 6:02 UTC (permalink / raw)
To: video4linux-list; +Cc: Paulius Zaleckas, Guennadi Liakhovetski
Move .power (enable_camera, disable_camera) and .reset from soc_camera
platform driver (pxa_camera_platform_data, sh_mobile_ceu_info) to sensor
driver (soc_camera_link) and add .init and .release to request and free
gpios.
Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
diff -r 55e8c99c8aa8 -r 294f0a37c4fe linux/drivers/media/video/mt9m001.c
--- a/linux/drivers/media/video/mt9m001.c Wed Jul 30 07:18:13 2008 -0300
+++ b/linux/drivers/media/video/mt9m001.c Thu Jul 31 07:59:35 2008 +0200
@@ -117,14 +117,23 @@ static int reg_clear(struct soc_camera_d
static int mt9m001_init(struct soc_camera_device *icd)
{
- int ret;
+ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
+ struct soc_camera_link *icl = mt9m001->client->dev.platform_data;
+ int ret = 0;
/* Disable chip, synchronous option update */
dev_dbg(icd->vdev->parent, "%s\n", __func__);
- ret = reg_write(icd, MT9M001_RESET, 1);
- if (ret >= 0)
- ret = reg_write(icd, MT9M001_RESET, 0);
+ if (icl->power)
+ icl->power(&mt9m001->client->dev, 1);
+
+ if (icl->reset)
+ icl->reset(&mt9m001->client->dev);
+ else {
+ ret = reg_write(icd, MT9M001_RESET, 1);
+ if (ret >= 0)
+ ret = reg_write(icd, MT9M001_RESET, 0);
+ }
if (ret >= 0)
ret = reg_write(icd, MT9M001_OUTPUT_CONTROL, 0);
@@ -133,8 +142,15 @@ static int mt9m001_init(struct soc_camer
static int mt9m001_release(struct soc_camera_device *icd)
{
+ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
+ struct soc_camera_link *icl = mt9m001->client->dev.platform_data;
+
/* Disable the chip */
- reg_write(icd, MT9M001_OUTPUT_CONTROL, 0);
+ if (icl->power)
+ icl->power(&mt9m001->client->dev, 0);
+ else
+ reg_write(icd, MT9M001_OUTPUT_CONTROL, 0);
+
return 0;
}
@@ -670,6 +686,12 @@ static int mt9m001_probe(struct i2c_clie
* ourselves in the driver based on vertical blanking and frame width */
mt9m001->autoexposure = 1;
+ if (icl->init) {
+ ret = icl->init(&mt9m001->client->dev);
+ if (ret)
+ goto einit;
+ }
+
ret = bus_switch_request(mt9m001, icl);
if (ret)
goto eswinit;
@@ -683,6 +705,9 @@ eisdr:
eisdr:
bus_switch_release(mt9m001);
eswinit:
+ if (icl->release)
+ icl->release(&mt9m001->client->dev);
+einit:
kfree(mt9m001);
return ret;
}
@@ -690,9 +715,12 @@ static int mt9m001_remove(struct i2c_cli
static int mt9m001_remove(struct i2c_client *client)
{
struct mt9m001 *mt9m001 = i2c_get_clientdata(client);
+ struct soc_camera_link *icl = mt9m001->client->dev.platform_data;
soc_camera_device_unregister(&mt9m001->icd);
bus_switch_release(mt9m001);
+ if (icl->release)
+ icl->release(&mt9m001->client->dev);
kfree(mt9m001);
return 0;
diff -r 55e8c99c8aa8 -r 294f0a37c4fe linux/drivers/media/video/mt9v022.c
--- a/linux/drivers/media/video/mt9v022.c Wed Jul 30 07:18:13 2008 -0300
+++ b/linux/drivers/media/video/mt9v022.c Thu Jul 31 07:59:35 2008 +0200
@@ -134,7 +134,11 @@ static int mt9v022_init(struct soc_camer
static int mt9v022_init(struct soc_camera_device *icd)
{
struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
+ struct soc_camera_link *icl = mt9v022->client->dev.platform_data;
int ret;
+
+ if (icl->power)
+ icl->power(&mt9v022->client->dev, 1);
/* Almost the default mode: master, parallel, simultaneous, and an
* undocumented bit 0x200, which is present in table 7, but not in 8,
@@ -161,7 +165,12 @@ static int mt9v022_init(struct soc_camer
static int mt9v022_release(struct soc_camera_device *icd)
{
- /* Nothing? */
+ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
+ struct soc_camera_link *icl = mt9v022->client->dev.platform_data;
+
+ if (icl->power)
+ icl->power(&mt9v022->client->dev, 0);
+
return 0;
}
@@ -668,6 +677,7 @@ static int mt9v022_video_probe(struct so
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;
@@ -686,15 +696,19 @@ static int mt9v022_video_probe(struct so
goto ei2c;
}
- /* Soft reset */
- ret = reg_write(icd, MT9V022_RESET, 1);
- if (ret < 0)
- goto ei2c;
- /* 15 clock cycles */
- udelay(200);
- if (reg_read(icd, MT9V022_RESET)) {
- dev_err(&icd->dev, "Resetting MT9V022 failed!\n");
- goto ei2c;
+ if (icl->reset)
+ icl->reset(&mt9v022->client->dev);
+ else {
+ /* Soft reset */
+ ret = reg_write(icd, MT9V022_RESET, 1);
+ if (ret < 0)
+ goto ei2c;
+ /* 15 clock cycles */
+ udelay(200);
+ if (reg_read(icd, MT9V022_RESET)) {
+ dev_err(&icd->dev, "Resetting MT9V022 failed!\n");
+ goto ei2c;
+ }
}
/* Set monochrome or colour sensor type */
@@ -788,6 +802,12 @@ static int mt9v022_probe(struct i2c_clie
* other widths. Therefore it seems to be a sensible default. */
mt9v022->datawidth = 10;
+ if (icl->init) {
+ ret = icl->init(&mt9v022->client->dev);
+ if (ret)
+ goto einit;
+ }
+
ret = bus_switch_request(mt9v022, icl);
if (ret)
goto eswinit;
@@ -801,6 +821,9 @@ eisdr:
eisdr:
bus_switch_release(mt9v022);
eswinit:
+ if (icl->release)
+ icl->release(&mt9v022->client->dev);
+einit:
kfree(mt9v022);
return ret;
}
@@ -808,9 +831,12 @@ static int mt9v022_remove(struct i2c_cli
static int mt9v022_remove(struct i2c_client *client)
{
struct mt9v022 *mt9v022 = i2c_get_clientdata(client);
+ struct soc_camera_link *icl = mt9v022->client->dev.platform_data;
soc_camera_device_unregister(&mt9v022->icd);
bus_switch_release(mt9v022);
+ if (icl->release)
+ icl->release(&mt9v022->client->dev);
kfree(mt9v022);
return 0;
diff -r 55e8c99c8aa8 -r 294f0a37c4fe linux/drivers/media/video/pxa_camera.c
--- a/linux/drivers/media/video/pxa_camera.c Wed Jul 30 07:18:13 2008 -0300
+++ b/linux/drivers/media/video/pxa_camera.c Thu Jul 31 07:59:35 2008 +0200
@@ -627,17 +627,6 @@ static void pxa_camera_activate(struct p
pdata->init(pcdev->dev);
}
- if (pdata && pdata->power) {
- dev_dbg(pcdev->dev, "%s: Power on camera\n", __func__);
- pdata->power(pcdev->dev, 1);
- }
-
- if (pdata && pdata->reset) {
- dev_dbg(pcdev->dev, "%s: Releasing camera reset\n",
- __func__);
- pdata->reset(pcdev->dev, 1);
- }
-
CICR0 = 0x3FF; /* disable all interrupts */
if (pcdev->platform_flags & PXA_CAMERA_PCLK_EN)
@@ -658,20 +647,7 @@ static void pxa_camera_activate(struct p
static void pxa_camera_deactivate(struct pxa_camera_dev *pcdev)
{
- struct pxacamera_platform_data *board = pcdev->pdata;
-
clk_disable(pcdev->clk);
-
- if (board && board->reset) {
- dev_dbg(pcdev->dev, "%s: Asserting camera reset\n",
- __func__);
- board->reset(pcdev->dev, 0);
- }
-
- if (board && board->power) {
- dev_dbg(pcdev->dev, "%s: Power off camera\n", __func__);
- board->power(pcdev->dev, 0);
- }
}
static irqreturn_t pxa_camera_irq(int irq, void *data)
diff -r 55e8c99c8aa8 -r 294f0a37c4fe linux/drivers/media/video/sh_mobile_ceu_camera.c
--- a/linux/drivers/media/video/sh_mobile_ceu_camera.c Wed Jul 30 07:18:13 2008 -0300
+++ b/linux/drivers/media/video/sh_mobile_ceu_camera.c Thu Jul 31 07:59:35 2008 +0200
@@ -304,9 +304,6 @@ static int sh_mobile_ceu_add_device(stru
"SuperH Mobile CEU driver attached to camera %d\n",
icd->devnum);
- if (pcdev->pdata->enable_camera)
- pcdev->pdata->enable_camera();
-
ret = icd->ops->init(icd);
if (ret)
goto err;
@@ -333,8 +330,6 @@ static void sh_mobile_ceu_remove_device(
ceu_write(pcdev, CEIER, 0);
ceu_write(pcdev, CAPSR, 1 << 16); /* reset */
icd->ops->release(icd);
- if (pcdev->pdata->disable_camera)
- pcdev->pdata->disable_camera();
dev_info(&icd->dev,
"SuperH Mobile CEU driver detached from camera %d\n",
diff -r 55e8c99c8aa8 -r 294f0a37c4fe linux/include/asm-arm/arch-pxa/camera.h
--- a/linux/include/asm-arm/arch-pxa/camera.h Wed Jul 30 07:18:13 2008 -0300
+++ b/linux/include/asm-arm/arch-pxa/camera.h Thu Jul 31 07:59:35 2008 +0200
@@ -36,8 +36,6 @@
struct pxacamera_platform_data {
int (*init)(struct device *);
- int (*power)(struct device *, int);
- int (*reset)(struct device *, int);
unsigned long flags;
unsigned long mclk_10khz;
diff -r 55e8c99c8aa8 -r 294f0a37c4fe linux/include/media/sh_mobile_ceu.h
--- a/linux/include/media/sh_mobile_ceu.h Wed Jul 30 07:18:13 2008 -0300
+++ b/linux/include/media/sh_mobile_ceu.h Thu Jul 31 07:59:35 2008 +0200
@@ -5,8 +5,6 @@
struct sh_mobile_ceu_info {
unsigned long flags; /* SOCAM_... */
- void (*enable_camera)(void);
- void (*disable_camera)(void);
};
#endif /* __ASM_SH_MOBILE_CEU_H__ */
diff -r 55e8c99c8aa8 -r 294f0a37c4fe linux/include/media/soc_camera.h
--- a/linux/include/media/soc_camera.h Wed Jul 30 07:18:13 2008 -0300
+++ b/linux/include/media/soc_camera.h Thu Jul 31 07:59:35 2008 +0200
@@ -76,6 +76,11 @@ struct soc_camera_host_ops {
};
struct soc_camera_link {
+ int (*init)(struct device *);
+ void (*release)(struct device *);
+ void (*power)(struct device *, int);
+ void (*reset)(struct device *);
+
/* Camera bus id, used to match a camera and a bus */
int bus_id;
/* GPIO number to switch between 8 and 10 bit modes */
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Move .power and .reset from soc_camera platform to sensor driver
2008-07-31 6:02 [PATCH] Move .power and .reset from soc_camera platform to sensor driver Stefan Herbrechtsmeier
@ 2008-07-31 13:53 ` Paulius Zaleckas
[not found] ` <48917CB5.6000304@teltonika.lt>
1 sibling, 0 replies; 14+ messages in thread
From: Paulius Zaleckas @ 2008-07-31 13:53 UTC (permalink / raw)
To: video4linux-list
Stefan Herbrechtsmeier wrote:
> Move .power (enable_camera, disable_camera) and .reset from soc_camera
> platform driver (pxa_camera_platform_data, sh_mobile_ceu_info) to sensor
> driver (soc_camera_link) and add .init and .release to request and free
> gpios.
>
> Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
While I agree that it is good to move .power and .reset to
soc_camera_link... IMHO controlling of these should be left in
host driver.
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Move .power and .reset from soc_camera platform to sensor driver
[not found] ` <48917CB5.6000304@teltonika.lt>
@ 2008-08-01 6:11 ` Stefan Herbrechtsmeier
2008-08-01 6:25 ` Guennadi Liakhovetski
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Herbrechtsmeier @ 2008-08-01 6:11 UTC (permalink / raw)
To: Paulius Zaleckas; +Cc: video4linux-list, Guennadi Liakhovetski
Paulius Zaleckas schrieb:
> Stefan Herbrechtsmeier wrote:
>> Move .power (enable_camera, disable_camera) and .reset from soc_camera
>> platform driver (pxa_camera_platform_data, sh_mobile_ceu_info) to sensor
>> driver (soc_camera_link) and add .init and .release to request and free
>> gpios.
>>
>> Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
>
> While I agree that it is good to move .power and .reset to
> soc_camera_link... IMHO controlling of these should be left in
> host driver.
How should we deal with the register based version of this functions
(soft reset)?
At the moment we reset the sensors twice, if we use a hardware reset
(.reset).
--
Dipl.-Ing. Stefan Herbrechtsmeier
Heinz Nixdorf Institute
University of Paderborn
System and Circuit Technology
Fürstenallee 11
D-33102 Paderborn (Germany)
office : F0.415
phone : + 49 5251 - 60 6342
fax : + 49 5251 - 60 6351
mailto : hbmeier@hni.upb.de
www : http://wwwhni.upb.de/sct/mitarbeiter/hbmeier
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Move .power and .reset from soc_camera platform to sensor driver
2008-08-01 6:11 ` Stefan Herbrechtsmeier
@ 2008-08-01 6:25 ` Guennadi Liakhovetski
2008-08-01 7:35 ` Stefan Herbrechtsmeier
2008-08-01 8:24 ` [PATCH] Move .power and .reset from soc_camera platform " Paulius Zaleckas
0 siblings, 2 replies; 14+ messages in thread
From: Guennadi Liakhovetski @ 2008-08-01 6:25 UTC (permalink / raw)
To: Stefan Herbrechtsmeier; +Cc: video4linux-list, Paulius Zaleckas
On Fri, 1 Aug 2008, Stefan Herbrechtsmeier wrote:
> Paulius Zaleckas schrieb:
> > Stefan Herbrechtsmeier wrote:
> > > Move .power (enable_camera, disable_camera) and .reset from soc_camera
> > > platform driver (pxa_camera_platform_data, sh_mobile_ceu_info) to sensor
> > > driver (soc_camera_link) and add .init and .release to request and free
> > > gpios.
> > >
> > > Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
> >
> > While I agree that it is good to move .power and .reset to
> > soc_camera_link... IMHO controlling of these should be left in
> > host driver.
> How should we deal with the register based version of this functions (soft
> reset)?
> At the moment we reset the sensors twice, if we use a hardware reset (.reset).
Paulius, can you give any specific reason why you think, calling those
functions from the host driver would be better?
As for calling either platform-provided reset or internal one. Actually,
whyt about making platform reset (and power too) return an error code, and
if it failed call th internal one? And as a parameter wouldn't it make
more sense to pass the soc_camera_link to the platform functions instead
of the struct device from the i2c device?
I'll have a better look at your patch this WE, so, you don't have to be in
a hurry with a new version:-) I probably will have some more comments.
These are just a couple to think about.
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Move .power and .reset from soc_camera platform to sensor driver
2008-08-01 6:25 ` Guennadi Liakhovetski
@ 2008-08-01 7:35 ` Stefan Herbrechtsmeier
2008-08-01 7:45 ` Guennadi Liakhovetski
2008-08-01 8:24 ` [PATCH] Move .power and .reset from soc_camera platform " Paulius Zaleckas
1 sibling, 1 reply; 14+ messages in thread
From: Stefan Herbrechtsmeier @ 2008-08-01 7:35 UTC (permalink / raw)
To: Guennadi Liakhovetski; +Cc: video4linux-list, Paulius Zaleckas
Guennadi Liakhovetski schrieb:
> On Fri, 1 Aug 2008, Stefan Herbrechtsmeier wrote:
>
>
>> Paulius Zaleckas schrieb:
>>
>>> Stefan Herbrechtsmeier wrote:
>>>
>>>> Move .power (enable_camera, disable_camera) and .reset from soc_camera
>>>> platform driver (pxa_camera_platform_data, sh_mobile_ceu_info) to sensor
>>>> driver (soc_camera_link) and add .init and .release to request and free
>>>> gpios.
>>>>
>>>> Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
>>>>
>>> While I agree that it is good to move .power and .reset to
>>> soc_camera_link... IMHO controlling of these should be left in
>>> host driver.
>>>
>> How should we deal with the register based version of this functions (soft
>> reset)?
>> At the moment we reset the sensors twice, if we use a hardware reset (.reset).
>>
>
> Paulius, can you give any specific reason why you think, calling those
> functions from the host driver would be better?
>
> As for calling either platform-provided reset or internal one. Actually,
> whyt about making platform reset (and power too) return an error code, and
> if it failed call th internal one?
At the moment I assume that reset and power will work, if they are
defined, but we can change it.
> And as a parameter wouldn't it make
> more sense to pass the soc_camera_link to the platform functions instead
> of the struct device from the i2c device?
>
I have simple make the function similar to other platform_data functions
on my system.
At the moment I use the parameter only for printing messages via dev_err.
Regards
Stefan
--
Dipl.-Ing. Stefan Herbrechtsmeier
Heinz Nixdorf Institute
University of Paderborn
System and Circuit Technology
Fürstenallee 11
D-33102 Paderborn (Germany)
office : F0.415
phone : + 49 5251 - 60 6342
fax : + 49 5251 - 60 6351
mailto : hbmeier@hni.upb.de
www : http://wwwhni.upb.de/sct/mitarbeiter/hbmeier
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Move .power and .reset from soc_camera platform to sensor driver
2008-08-01 7:35 ` Stefan Herbrechtsmeier
@ 2008-08-01 7:45 ` Guennadi Liakhovetski
2008-08-01 8:15 ` Stefan Herbrechtsmeier
0 siblings, 1 reply; 14+ messages in thread
From: Guennadi Liakhovetski @ 2008-08-01 7:45 UTC (permalink / raw)
To: Stefan Herbrechtsmeier; +Cc: video4linux-list, Paulius Zaleckas
On Fri, 1 Aug 2008, Stefan Herbrechtsmeier wrote:
> Guennadi Liakhovetski schrieb:
> >
> > As for calling either platform-provided reset or internal one. Actually,
> > whyt about making platform reset (and power too) return an error code, and
> > if it failed call th internal one?
> At the moment I assume that reset and power will work, if they are defined,
> but we can change it.
I'd rather preserve the possibility to use "soft" reset / poweroff also
when a platform function is defined. In fact, it might be even better to
do a soft power-off first and then call platform-provided one. Don't think
it would make much sense for reset though.
> > And as a parameter wouldn't it make more sense to pass the soc_camera_link
> > to the platform functions instead of the struct device from the i2c device?
> >
> I have simple make the function similar to other platform_data functions on my
> system.
> At the moment I use the parameter only for printing messages via dev_err.
You have to be able to trace which camera has to be resetted / powered on
or off in your platform code, and the camera_link structure is the object
that identifies a specific camera, ot, at least, it can be. Whereas the
device pointer doesn't easily tell you which camera you want to operate
upon.
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Move .power and .reset from soc_camera platform to sensor driver
2008-08-01 7:45 ` Guennadi Liakhovetski
@ 2008-08-01 8:15 ` Stefan Herbrechtsmeier
2008-08-13 13:30 ` [PATCH] soc-camera: Move .power and .reset from soc_camera host " Guennadi Liakhovetski
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Herbrechtsmeier @ 2008-08-01 8:15 UTC (permalink / raw)
To: Guennadi Liakhovetski; +Cc: video4linux-list, Paulius Zaleckas
Guennadi Liakhovetski schrieb:
> On Fri, 1 Aug 2008, Stefan Herbrechtsmeier wrote:
>
>
>> Guennadi Liakhovetski schrieb:
>>
>>> As for calling either platform-provided reset or internal one. Actually,
>>> whyt about making platform reset (and power too) return an error code, and
>>> if it failed call th internal one?
>>>
>> At the moment I assume that reset and power will work, if they are defined,
>> but we can change it.
>>
>
> I'd rather preserve the possibility to use "soft" reset / poweroff also
> when a platform function is defined. In fact, it might be even better to
> do a soft power-off first and then call platform-provided one. Don't think
> it would make much sense for reset though.
>
You are right, I'll change it with the next version.
>
>>> And as a parameter wouldn't it make more sense to pass the soc_camera_link
>>> to the platform functions instead of the struct device from the i2c device?
>>>
>>>
>> I have simple make the function similar to other platform_data functions on my
>> system.
>> At the moment I use the parameter only for printing messages via dev_err.
>>
>
> You have to be able to trace which camera has to be resetted / powered on
> or off in your platform code, and the camera_link structure is the object
> that identifies a specific camera, ot, at least, it can be. Whereas the
> device pointer doesn't easily tell you which camera you want to operate
> upon.
>
If you use the same function for different sensors (camera_links), you
are right,
but you can get the camera_link from the dev pointer (.platform_data) if you
need it.
Regards
Stefan
--
Dipl.-Ing. Stefan Herbrechtsmeier
Heinz Nixdorf Institute
University of Paderborn
System and Circuit Technology
Fürstenallee 11
D-33102 Paderborn (Germany)
office : F0.415
phone : + 49 5251 - 60 6342
fax : + 49 5251 - 60 6351
mailto : hbmeier@hni.upb.de
www : http://wwwhni.upb.de/sct/mitarbeiter/hbmeier
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Move .power and .reset from soc_camera platform to sensor driver
2008-08-01 6:25 ` Guennadi Liakhovetski
2008-08-01 7:35 ` Stefan Herbrechtsmeier
@ 2008-08-01 8:24 ` Paulius Zaleckas
1 sibling, 0 replies; 14+ messages in thread
From: Paulius Zaleckas @ 2008-08-01 8:24 UTC (permalink / raw)
To: video4linux-list
Guennadi Liakhovetski wrote:
> On Fri, 1 Aug 2008, Stefan Herbrechtsmeier wrote:
>
>> Paulius Zaleckas schrieb:
>>> Stefan Herbrechtsmeier wrote:
>>>> Move .power (enable_camera, disable_camera) and .reset from soc_camera
>>>> platform driver (pxa_camera_platform_data, sh_mobile_ceu_info) to sensor
>>>> driver (soc_camera_link) and add .init and .release to request and free
>>>> gpios.
>>>>
>>>> Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
>>> While I agree that it is good to move .power and .reset to
>>> soc_camera_link... IMHO controlling of these should be left in
>>> host driver.
>> How should we deal with the register based version of this functions (soft
>> reset)?
>> At the moment we reset the sensors twice, if we use a hardware reset (.reset).
>
> Paulius, can you give any specific reason why you think, calling those
> functions from the host driver would be better?
I have changed my mind :)
But I think sensor driver should also control mclk activation.
This is because some sensors (in my case OV7670) needs mclk all the time
running to produce images with good white balance in open-capture-close
scenario. Currently I have a patch for soc_camera which leaves the
camera activated after probing...
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH] soc-camera: Move .power and .reset from soc_camera host to sensor driver
2008-08-01 8:15 ` Stefan Herbrechtsmeier
@ 2008-08-13 13:30 ` Guennadi Liakhovetski
2008-08-14 4:57 ` Stefan Herbrechtsmeier
0 siblings, 1 reply; 14+ messages in thread
From: Guennadi Liakhovetski @ 2008-08-13 13:30 UTC (permalink / raw)
To: Stefan Herbrechtsmeier; +Cc: video4linux-list, Paulius Zaleckas
Make .power and .reset callbacks per camera instead of per host, also move
their invocation to camera drivers.
Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
Robert and Stefan, please, read comments below, well, and the patch too:-)
This patch applies on the top of other my patches today.
Robert, please, have a look if you agree with the hunk for mt9m111. I so
far added ->power calls to your enable and disable functions, not sure if
this is the best place. BTW, why do you call enable from video_probe
again? Is it really necessary? And you might want to call disable at
suspend? Which would then also power the camera down, if supported by the
platform.
Stefan,
On Fri, 1 Aug 2008, Stefan Herbrechtsmeier wrote:
> Guennadi Liakhovetski schrieb:
> >
> > I'd rather preserve the possibility to use "soft" reset / poweroff also when
> > a platform function is defined. In fact, it might be even better to do a
> > soft power-off first and then call platform-provided one. Don't think it
> > would make much sense for reset though.
> >
> You are right, I'll change it with the next version.
How about the version below? I didn't understand why you need extra .init
and .release calls, so, I removed them for now. I think, .init per host
and power-on / off per camera should be enough for all init / release
needs, don't you think so?
> > > > And as a parameter wouldn't it make more sense to pass the
> > > > soc_camera_link
> > > > to the platform functions instead of the struct device from the i2c
> > > > device?
> > > >
> > > I have simple make the function similar to other platform_data functions
> > > on my
> > > system.
> > > At the moment I use the parameter only for printing messages via dev_err.
> > >
> >
> > You have to be able to trace which camera has to be resetted / powered on or
> > off in your platform code, and the camera_link structure is the object that
> > identifies a specific camera, ot, at least, it can be. Whereas the device
> > pointer doesn't easily tell you which camera you want to operate upon.
> >
> If you use the same function for different sensors (camera_links), you are
> right,
> but you can get the camera_link from the dev pointer (.platform_data) if you
> need it.
Agree, I kept your version with struct device pointer.
diff --git a/drivers/media/video/mt9m001.c b/drivers/media/video/mt9m001.c
index 3531f93..0c52437 100644
--- a/drivers/media/video/mt9m001.c
+++ b/drivers/media/video/mt9m001.c
@@ -117,13 +117,33 @@ static int reg_clear(struct soc_camera_device *icd, const u8 reg,
static int mt9m001_init(struct soc_camera_device *icd)
{
+ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
+ struct soc_camera_link *icl = mt9m001->client->dev.platform_data;
int ret;
dev_dbg(icd->vdev->parent, "%s\n", __func__);
- ret = reg_write(icd, MT9M001_RESET, 1);
- if (!ret)
- ret = reg_write(icd, MT9M001_RESET, 0);
+ if (icl->power) {
+ ret = icl->power(&mt9m001->client->dev, 1);
+ if (ret < 0) {
+ dev_err(icd->vdev->parent,
+ "Platform failed to power-on the camera.\n");
+ return ret;
+ }
+ }
+
+ /* The camera could have been already on, we reset it additionally */
+ if (icl->reset)
+ ret = icl->reset(&mt9m001->client->dev);
+ else
+ ret = -ENODEV;
+
+ if (ret < 0) {
+ /* Either no platform reset, or platform reset failed */
+ ret = reg_write(icd, MT9M001_RESET, 1);
+ if (!ret)
+ ret = reg_write(icd, MT9M001_RESET, 0);
+ }
/* Disable chip, synchronous option update */
if (!ret)
ret = reg_write(icd, MT9M001_OUTPUT_CONTROL, 0);
@@ -133,8 +153,15 @@ static int mt9m001_init(struct soc_camera_device *icd)
static int mt9m001_release(struct soc_camera_device *icd)
{
+ struct mt9m001 *mt9m001 = container_of(icd, struct mt9m001, icd);
+ struct soc_camera_link *icl = mt9m001->client->dev.platform_data;
+
/* Disable the chip */
reg_write(icd, MT9M001_OUTPUT_CONTROL, 0);
+
+ if (icl->power)
+ icl->power(&mt9m001->client->dev, 0);
+
return 0;
}
diff --git a/drivers/media/video/mt9m111.c b/drivers/media/video/mt9m111.c
index 537cff0..8c532ac 100644
--- a/drivers/media/video/mt9m111.c
+++ b/drivers/media/video/mt9m111.c
@@ -351,8 +351,18 @@ static int mt9m111_setfmt_yuv(struct soc_camera_device *icd)
static int mt9m111_enable(struct soc_camera_device *icd)
{
struct mt9m111 *mt9m111 = container_of(icd, struct mt9m111, icd);
+ struct soc_camera_link *icl = mt9m111->client->dev.platform_data;
int ret;
+ if (icl->power) {
+ ret = icl->power(&mt9m111->client->dev, 1);
+ if (ret < 0) {
+ dev_err(icd->vdev->parent,
+ "Platform failed to power-on the camera.\n");
+ return ret;
+ }
+ }
+
ret = reg_set(RESET, MT9M111_RESET_CHIP_ENABLE);
if (!ret)
mt9m111->powered = 1;
@@ -362,11 +372,16 @@ static int mt9m111_enable(struct soc_camera_device *icd)
static int mt9m111_disable(struct soc_camera_device *icd)
{
struct mt9m111 *mt9m111 = container_of(icd, struct mt9m111, icd);
+ struct soc_camera_link *icl = mt9m111->client->dev.platform_data;
int ret;
ret = reg_clear(RESET, MT9M111_RESET_CHIP_ENABLE);
if (!ret)
mt9m111->powered = 0;
+
+ if (icl->power)
+ icl->power(&mt9m111->client->dev, 0);
+
return ret;
}
diff --git a/drivers/media/video/mt9v022.c b/drivers/media/video/mt9v022.c
index 0f4b204..2584201 100644
--- a/drivers/media/video/mt9v022.c
+++ b/drivers/media/video/mt9v022.c
@@ -134,8 +134,25 @@ static int reg_clear(struct soc_camera_device *icd, const u8 reg,
static int mt9v022_init(struct soc_camera_device *icd)
{
struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
+ struct soc_camera_link *icl = mt9v022->client->dev.platform_data;
int ret;
+ if (icl->power) {
+ ret = icl->power(&mt9v022->client->dev, 1);
+ if (ret < 0) {
+ dev_err(icd->vdev->parent,
+ "Platform failed to power-on the camera.\n");
+ return ret;
+ }
+ }
+
+ /*
+ * The camera could have been already on, we hard-reset it additionally,
+ * if available. Soft reset is done in video_probe().
+ */
+ if (icl->reset)
+ icl->reset(&mt9v022->client->dev);
+
/* Almost the default mode: master, parallel, simultaneous, and an
* undocumented bit 0x200, which is present in table 7, but not in 8,
* plus snapshot mode to disable scan for now */
@@ -161,7 +178,12 @@ static int mt9v022_init(struct soc_camera_device *icd)
static int mt9v022_release(struct soc_camera_device *icd)
{
- /* Nothing? */
+ struct mt9v022 *mt9v022 = container_of(icd, struct mt9v022, icd);
+ struct soc_camera_link *icl = mt9v022->client->dev.platform_data;
+
+ if (icl->power)
+ icl->power(&mt9v022->client->dev, 0);
+
return 0;
}
diff --git a/drivers/media/video/pxa_camera.c b/drivers/media/video/pxa_camera.c
index 85f545d..6df2aee 100644
--- a/drivers/media/video/pxa_camera.c
+++ b/drivers/media/video/pxa_camera.c
@@ -629,17 +629,6 @@ static void pxa_camera_activate(struct pxa_camera_dev *pcdev)
pdata->init(pcdev->dev);
}
- if (pdata && pdata->power) {
- dev_dbg(pcdev->dev, "%s: Power on camera\n", __func__);
- pdata->power(pcdev->dev, 1);
- }
-
- if (pdata && pdata->reset) {
- dev_dbg(pcdev->dev, "%s: Releasing camera reset\n",
- __func__);
- pdata->reset(pcdev->dev, 1);
- }
-
CICR0 = 0x3FF; /* disable all interrupts */
if (pcdev->platform_flags & PXA_CAMERA_PCLK_EN)
@@ -660,20 +649,7 @@ static void pxa_camera_activate(struct pxa_camera_dev *pcdev)
static void pxa_camera_deactivate(struct pxa_camera_dev *pcdev)
{
- struct pxacamera_platform_data *board = pcdev->pdata;
-
clk_disable(pcdev->clk);
-
- if (board && board->reset) {
- dev_dbg(pcdev->dev, "%s: Asserting camera reset\n",
- __func__);
- board->reset(pcdev->dev, 0);
- }
-
- if (board && board->power) {
- dev_dbg(pcdev->dev, "%s: Power off camera\n", __func__);
- board->power(pcdev->dev, 0);
- }
}
static irqreturn_t pxa_camera_irq(int irq, void *data)
diff --git a/drivers/media/video/sh_mobile_ceu_camera.c b/drivers/media/video/sh_mobile_ceu_camera.c
index f7ca3cb..f6cec44 100644
--- a/drivers/media/video/sh_mobile_ceu_camera.c
+++ b/drivers/media/video/sh_mobile_ceu_camera.c
@@ -304,9 +304,6 @@ static int sh_mobile_ceu_add_device(struct soc_camera_device *icd)
"SuperH Mobile CEU driver attached to camera %d\n",
icd->devnum);
- if (pcdev->pdata->enable_camera)
- pcdev->pdata->enable_camera();
-
ret = icd->ops->init(icd);
if (ret)
goto err;
@@ -333,8 +330,6 @@ static void sh_mobile_ceu_remove_device(struct soc_camera_device *icd)
ceu_write(pcdev, CEIER, 0);
ceu_write(pcdev, CAPSR, 1 << 16); /* reset */
icd->ops->release(icd);
- if (pcdev->pdata->disable_camera)
- pcdev->pdata->disable_camera();
dev_info(&icd->dev,
"SuperH Mobile CEU driver detached from camera %d\n",
diff --git a/include/asm-arm/arch-pxa/camera.h b/include/asm-arm/arch-pxa/camera.h
index 39516ce..31abe6d 100644
--- a/include/asm-arm/arch-pxa/camera.h
+++ b/include/asm-arm/arch-pxa/camera.h
@@ -36,8 +36,6 @@
struct pxacamera_platform_data {
int (*init)(struct device *);
- int (*power)(struct device *, int);
- int (*reset)(struct device *, int);
unsigned long flags;
unsigned long mclk_10khz;
diff --git a/include/media/sh_mobile_ceu.h b/include/media/sh_mobile_ceu.h
index 234a471..b5dbefe 100644
--- a/include/media/sh_mobile_ceu.h
+++ b/include/media/sh_mobile_ceu.h
@@ -5,8 +5,6 @@
struct sh_mobile_ceu_info {
unsigned long flags; /* SOCAM_... */
- void (*enable_camera)(void);
- void (*disable_camera)(void);
};
#endif /* __ASM_SH_MOBILE_CEU_H__ */
diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
index d548de3..c5de7bb 100644
--- a/include/media/soc_camera.h
+++ b/include/media/soc_camera.h
@@ -83,6 +83,9 @@ struct soc_camera_link {
int bus_id;
/* GPIO number to switch between 8 and 10 bit modes */
unsigned int gpio;
+ /* Optional callbacks to power on or off and reset the sensor */
+ int (*power)(struct device *, int);
+ int (*reset)(struct device *);
};
static inline struct soc_camera_device *to_soc_camera_dev(struct device *dev)
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH] soc-camera: Move .power and .reset from soc_camera host to sensor driver
2008-08-13 13:30 ` [PATCH] soc-camera: Move .power and .reset from soc_camera host " Guennadi Liakhovetski
@ 2008-08-14 4:57 ` Stefan Herbrechtsmeier
2008-08-14 5:12 ` Guennadi Liakhovetski
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Herbrechtsmeier @ 2008-08-14 4:57 UTC (permalink / raw)
To: Guennadi Liakhovetski; +Cc: video4linux-list, Paulius Zaleckas
Guennadi Liakhovetski schrieb:
> Make .power and .reset callbacks per camera instead of per host, also move
> their invocation to camera drivers.
>
> Signed-off-by: Stefan Herbrechtsmeier <hbmeier@hni.uni-paderborn.de>
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
>
> On Fri, 1 Aug 2008, Stefan Herbrechtsmeier wrote:
>
>> Guennadi Liakhovetski schrieb:
>>
>>> I'd rather preserve the possibility to use "soft" reset / poweroff also when
>>> a platform function is defined. In fact, it might be even better to do a
>>> soft power-off first and then call platform-provided one. Don't think it
>>> would make much sense for reset though.
>>>
>>>
>> You are right, I'll change it with the next version.
>>
>
> How about the version below? I didn't understand why you need extra .init
> and .release calls, so, I removed them for now. I think, .init per host
> and power-on / off per camera should be enough for all init / release
> needs, don't you think so
I use the .init call for gpio_request and gpio_direction_output and the
.release call for gpio_free.
I do that this way, because I think they belongs more to the camera.
The patch looks ok for me.
Regards
Stefan
--
Dipl.-Ing. Stefan Herbrechtsmeier
Heinz Nixdorf Institute
University of Paderborn
System and Circuit Technology
Fürstenallee 11
D-33102 Paderborn (Germany)
office : F0.415
phone : + 49 5251 - 60 6342
fax : + 49 5251 - 60 6351
mailto : hbmeier@hni.upb.de
www : http://wwwhni.upb.de/sct/mitarbeiter/hbmeier
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] soc-camera: Move .power and .reset from soc_camera host to sensor driver
2008-08-14 4:57 ` Stefan Herbrechtsmeier
@ 2008-08-14 5:12 ` Guennadi Liakhovetski
2008-08-14 6:13 ` Stefan Herbrechtsmeier
0 siblings, 1 reply; 14+ messages in thread
From: Guennadi Liakhovetski @ 2008-08-14 5:12 UTC (permalink / raw)
To: Stefan Herbrechtsmeier; +Cc: video4linux-list, Paulius Zaleckas
On Thu, 14 Aug 2008, Stefan Herbrechtsmeier wrote:
> Guennadi Liakhovetski schrieb:
> >
> > How about the version below? I didn't understand why you need extra .init
> > and .release calls, so, I removed them for now. I think, .init per host and
> > power-on / off per camera should be enough for all init / release needs,
> > don't you think so
> I use the .init call for gpio_request and gpio_direction_output and the
> .release call for gpio_free.
> I do that this way, because I think they belongs more to the camera.
What are these GPIOs? Are they interfacing to a specific camera, or do
they belong to the camera-host interface? If they belong to a specific
camera, then yes, it is logical to control them from the camera driver
platform callbacks. But cannot you do this in .power? Just do the .init
part on power-on and the .release part on power-off?
> The patch looks ok for me.
Well, if you cannot use it in this form without .init and .release then it
can hardly be called "ok" for you:-)
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] soc-camera: Move .power and .reset from soc_camera host to sensor driver
2008-08-14 5:12 ` Guennadi Liakhovetski
@ 2008-08-14 6:13 ` Stefan Herbrechtsmeier
2008-08-14 6:24 ` Guennadi Liakhovetski
0 siblings, 1 reply; 14+ messages in thread
From: Stefan Herbrechtsmeier @ 2008-08-14 6:13 UTC (permalink / raw)
To: Guennadi Liakhovetski; +Cc: video4linux-list, Paulius Zaleckas
Guennadi Liakhovetski schrieb:
> On Thu, 14 Aug 2008, Stefan Herbrechtsmeier wrote:
>
>
>> Guennadi Liakhovetski schrieb:
>>
>>> How about the version below? I didn't understand why you need extra .init
>>> and .release calls, so, I removed them for now. I think, .init per host and
>>> power-on / off per camera should be enough for all init / release needs,
>>> don't you think so
>>>
>> I use the .init call for gpio_request and gpio_direction_output and the
>> .release call for gpio_free.
>> I do that this way, because I think they belongs more to the camera.
>>
>
> What are these GPIOs? Are they interfacing to a specific camera, or do
> they belong to the camera-host interface? If they belong to a specific
> camera, then yes, it is logical to control them from the camera driver
> platform callbacks.
The GPIOs belongs to the camera. One GPIO for the camera reset input and
one for the power down
input of the camera.
> But cannot you do this in .power? Just do the .init
> part on power-on and the .release part on power-off?
>
The driver need to control the power down input after power-off to hold
the camera in power down mode.
Maybe I can free the gpio after power-off without changing the gpio
value, but I think the use of .init and
.release call is better and more clearly. Do you think it is ok to free
the gpio even if it must stay high?
>
>> The patch looks ok for me.
>>
>
> Well, if you cannot use it in this form without .init and .release then it
> can hardly be called "ok" for you:-)
>
I mean it is ok except the .init and .release part. ;-)
Regards
Stefan
--
Dipl.-Ing. Stefan Herbrechtsmeier
Heinz Nixdorf Institute
University of Paderborn
System and Circuit Technology
Fürstenallee 11
D-33102 Paderborn (Germany)
office : F0.415
phone : + 49 5251 - 60 6342
fax : + 49 5251 - 60 6351
mailto : hbmeier@hni.upb.de
www : http://wwwhni.upb.de/sct/mitarbeiter/hbmeier
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] soc-camera: Move .power and .reset from soc_camera host to sensor driver
2008-08-14 6:13 ` Stefan Herbrechtsmeier
@ 2008-08-14 6:24 ` Guennadi Liakhovetski
2008-08-14 6:37 ` Stefan Herbrechtsmeier
0 siblings, 1 reply; 14+ messages in thread
From: Guennadi Liakhovetski @ 2008-08-14 6:24 UTC (permalink / raw)
To: Stefan Herbrechtsmeier; +Cc: video4linux-list, Paulius Zaleckas
On Thu, 14 Aug 2008, Stefan Herbrechtsmeier wrote:
> The GPIOs belongs to the camera. One GPIO for the camera reset input and one
> for the power down
> input of the camera.
Ok, then don't you want to keep the camera off even if the driver is not
configured or not loaded at all? Why don't you configure those GPIOs in
your platform code permanently, you can make it dependent on
defined(CONFIG_...) || defined(CONFIG_..._MODULE), and then just let power
and reset callbacks toggle them without reconfiguring them ever again?
Thanks
Guennadi
---
Guennadi Liakhovetski
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] soc-camera: Move .power and .reset from soc_camera host to sensor driver
2008-08-14 6:24 ` Guennadi Liakhovetski
@ 2008-08-14 6:37 ` Stefan Herbrechtsmeier
0 siblings, 0 replies; 14+ messages in thread
From: Stefan Herbrechtsmeier @ 2008-08-14 6:37 UTC (permalink / raw)
To: Guennadi Liakhovetski; +Cc: video4linux-list, Paulius Zaleckas
Guennadi Liakhovetski schrieb:
> On Thu, 14 Aug 2008, Stefan Herbrechtsmeier wrote:
>
>
>> The GPIOs belongs to the camera. One GPIO for the camera reset input and one
>> for the power down
>> input of the camera.
>>
>
> Ok, then don't you want to keep the camera off even if the driver is not
> configured or not loaded at all? Why don't you configure those GPIOs in
> your platform code permanently, you can make it dependent on
> defined(CONFIG_...) || defined(CONFIG_..._MODULE), and then just let power
> and reset callbacks toggle them without reconfiguring them ever again?
>
I move the GPIOs init code to platform code. Thus your patch is complete
ok for me. ;-)
--
Dipl.-Ing. Stefan Herbrechtsmeier
Heinz Nixdorf Institute
University of Paderborn
System and Circuit Technology
Fürstenallee 11
D-33102 Paderborn (Germany)
office : F0.415
phone : + 49 5251 - 60 6342
fax : + 49 5251 - 60 6351
mailto : hbmeier@hni.upb.de
www : http://wwwhni.upb.de/sct/mitarbeiter/hbmeier
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2008-08-14 6:37 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-31 6:02 [PATCH] Move .power and .reset from soc_camera platform to sensor driver Stefan Herbrechtsmeier
2008-07-31 13:53 ` Paulius Zaleckas
[not found] ` <48917CB5.6000304@teltonika.lt>
2008-08-01 6:11 ` Stefan Herbrechtsmeier
2008-08-01 6:25 ` Guennadi Liakhovetski
2008-08-01 7:35 ` Stefan Herbrechtsmeier
2008-08-01 7:45 ` Guennadi Liakhovetski
2008-08-01 8:15 ` Stefan Herbrechtsmeier
2008-08-13 13:30 ` [PATCH] soc-camera: Move .power and .reset from soc_camera host " Guennadi Liakhovetski
2008-08-14 4:57 ` Stefan Herbrechtsmeier
2008-08-14 5:12 ` Guennadi Liakhovetski
2008-08-14 6:13 ` Stefan Herbrechtsmeier
2008-08-14 6:24 ` Guennadi Liakhovetski
2008-08-14 6:37 ` Stefan Herbrechtsmeier
2008-08-01 8:24 ` [PATCH] Move .power and .reset from soc_camera platform " Paulius Zaleckas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox