[PATCH 07/13] atmel-isi: move hw code into isi_hw_initialize()
Josh Wu
rainyfeeling at gmail.com
Tue Jan 26 06:07:13 PST 2016
Hi, Guennadi
Thanks for the reivew.
2016-01-25 2:09 GMT+08:00 Guennadi Liakhovetski <g.liakhovetski at gmx.de>:
> On Mon, 18 Jan 2016, Josh Wu wrote:
>
>> That make hw operation code separate with general code.
>>
>> Also since reset action can be failed, so add a return value for
>> isi_hw_initialze().
>>
>> Signed-off-by: Josh Wu <rainyfeeling at gmail.com>
>> ---
>>
>> drivers/media/platform/soc_camera/atmel-isi.c | 34 +++++++++++++++++----------
>> 1 file changed, 21 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
>> index 4ddc309..ed4d04b 100644
>> --- a/drivers/media/platform/soc_camera/atmel-isi.c
>> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
>> @@ -203,10 +203,27 @@ static int isi_hw_wait_status(struct atmel_isi *isi, int status_flag,
>> return 0;
>> }
>>
>> -static void isi_hw_initialize(struct atmel_isi *isi)
>> +static int isi_hw_initialize(struct atmel_isi *isi)
>> {
>> u32 common_flags = isi->bus_param;
>> u32 cfg1 = 0;
>> + int ret;
>> +
>> + /* Reset ISI */
>> + isi_writel(isi, ISI_CTRL, ISI_CTRL_SRST);
>> +
>> + /* Check Reset status */
>> + ret = isi_hw_wait_status(isi, ISI_CTRL_SRST, 500);
>
> You could also remove the superfluous space while at it.
sure, I'll fix the duplicated space here.
Best Regards,
Josh Wu
>
> Thanks
> Guennadi
>
>> + if (ret) {
>> + dev_err(isi->soc_host.icd->parent, "Reset ISI timed out\n");
>> + return ret;
>> + }
>> +
>> + /* Disable all interrupts */
>> + isi_writel(isi, ISI_INTDIS, (u32)~0UL);
>> +
>> + /* Clear any pending interrupt */
>> + isi_readl(isi, ISI_STATUS);
>>
>> /* set bus param for ISI */
>> if (common_flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
>> @@ -229,6 +246,8 @@ static void isi_hw_initialize(struct atmel_isi *isi)
>>
>> isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
>> isi_writel(isi, ISI_CFG1, cfg1);
>> +
>> + return 0;
>> }
>>
>> static irqreturn_t atmel_isi_handle_streaming(struct atmel_isi *isi)
>> @@ -453,27 +472,16 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
>>
>> pm_runtime_get_sync(ici->v4l2_dev.dev);
>>
>> - /* Reset ISI */
>> - isi_writel(isi, ISI_CTRL, ISI_CTRL_SRST);
>> -
>> - /* Check Reset status */
>> - ret = isi_hw_wait_status(isi, ISI_CTRL_SRST, 500);
>> + ret = isi_hw_initialize(isi);
>> if (ret) {
>> - dev_err(icd->parent, "Reset ISI timed out\n");
>> pm_runtime_put(ici->v4l2_dev.dev);
>> return ret;
>> }
>> - /* Disable all interrupts */
>> - isi_writel(isi, ISI_INTDIS, (u32)~0UL);
>> -
>> - isi_hw_initialize(isi);
>>
>> configure_geometry(isi, icd->user_width, icd->user_height,
>> icd->current_fmt);
>>
>> spin_lock_irq(&isi->lock);
>> - /* Clear any pending interrupt */
>> - isi_readl(isi, ISI_STATUS);
>>
>> if (count)
>> start_dma(isi, isi->active);
>> --
>> 1.9.1
>>
More information about the linux-arm-kernel
mailing list