[PATCH v2] ARM: pxa: PalmZ72: Add OV9640 camera support
Marek Vasut
marek.vasut at gmail.com
Sat Jan 15 15:08:12 EST 2011
On Saturday 15 January 2011 19:58:39 Bjørn Forsman wrote:
> 2011/1/15 Marek Vasut <marek.vasut at gmail.com>:
> > On Saturday 15 January 2011 18:49:16 Bjørn Forsman wrote:
> >> 2011/1/15 Russell King - ARM Linux <linux at arm.linux.org.uk>:
> >> > On Sat, Jan 15, 2011 at 05:37:08PM +0100, Bjørn Forsman wrote:
> >> >> Hi,
> >> >>
> >> >> On 15 January 2011 02:17, Marek Vasut <marek.vasut at gmail.com> wrote:
> >> >> > Rework of patch from 2009:
> >> >> > PalmZ72: Add support for OV9640 camera sensor
> >> >> >
> >> >> > Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
> >> >> > ---
> >> >> > v2: Use gpio_request_array()/gpio_free_array() array
> >> >> >
> >> >> > arch/arm/mach-pxa/include/mach/palmz72.h | 5 +
> >> >> > arch/arm/mach-pxa/palmz72.c | 127
> >> >> > ++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+),
> >> >> > 0 deletions(-)
> >> >> >
> >> >> > diff --git a/arch/arm/mach-pxa/include/mach/palmz72.h
> >> >> > b/arch/arm/mach-pxa/include/mach/palmz72.h index 2bbcf70..0d4700a
> >> >> > 100644
> >> >> > --- a/arch/arm/mach-pxa/include/mach/palmz72.h
> >> >> > +++ b/arch/arm/mach-pxa/include/mach/palmz72.h
> >> >>
> >> >> [snip]
> >> >>
> >> >> > +static int palmz72_camera_power(struct device *dev, int power)
> >> >> > +{
> >> >> > + gpio_set_value(GPIO_NR_PALMZ72_CAM_PWDN, !power);
> >> >> > + mdelay(50);
> >> >> > + return 0;
> >> >> > +}
> >> >> > +
> >> >> > +static int palmz72_camera_reset(struct device *dev)
> >> >> > +{
> >> >> > + gpio_set_value(GPIO_NR_PALMZ72_CAM_RESET, 1);
> >> >> > + mdelay(50);
> >> >> > + gpio_set_value(GPIO_NR_PALMZ72_CAM_RESET, 0);
> >> >> > + mdelay(50);
> >> >> > + return 0;
> >> >> > +}
> >> >>
> >> >> (Sorry if these are stupid newbie-questions.)
> >> >>
> >> >> Is the entire kernel blocked during the above mdelay()s or
> >> >> just some kernel thread? (Or: will this add like 100ms or 150ms
> >> >> to boot time?)
> >> >>
> >> >> Can mdelay() be replaced with something non-blocking?
> >> >
> >> > mdelay() is a spinning delay - it doesn't voluntarily relinquish the
> >> > CPU to another task.
> >> >
> >> > If you have preempt enabled and the region is preemptable, you can be
> >> > preempted in the middle of the delay (in which case it becomes delay
> >> > time + time away from the thread.)
> >> >
> >> > msleep() can be used for places where you can sleep, but is limited to
> >> > the jiffy granularity for !HIRES kernels.
> >>
> >> Thanks for explaining!
> >>
> >> Marek, care to try msleep() so we avoid busy-waits?
> >
> > Let's keep it at mdelay() for now, can we? I'll send a subsequent patch
> > once I can test with msleep() ... I don't have the hardware available
> > now.
>
> Sure. It was only a suggestion :-)
It's actually very valid, I'll keep that in mind :)
>
> Best regards,
> Bjørn Forsman
More information about the linux-arm-kernel
mailing list