* [PATCH] media: atmel-isi: increase the burst length to improve the performance
@ 2014-11-25 9:30 Josh Wu
2014-11-25 22:21 ` Guennadi Liakhovetski
2015-02-02 10:15 ` Josh Wu
0 siblings, 2 replies; 6+ messages in thread
From: Josh Wu @ 2014-11-25 9:30 UTC (permalink / raw)
To: linux-media
Cc: m.chehab, linux-arm-kernel, g.liakhovetski, voice.shen,
nicolas.ferre, Josh Wu
The burst length could be BEATS_4/8/16. Before this patch, isi use default
value BEATS_4. To imporve the performance we could set it to BEATS_16.
Otherwise sometime it would cause the ISI overflow error.
Reported-by: Bo Shen <voice.shen@atmel.com>
Signed-off-by: Josh Wu <josh.wu@atmel.com>
---
drivers/media/platform/soc_camera/atmel-isi.c | 2 ++
include/media/atmel-isi.h | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
index ee5650f..fda587b 100644
--- a/drivers/media/platform/soc_camera/atmel-isi.c
+++ b/drivers/media/platform/soc_camera/atmel-isi.c
@@ -839,6 +839,8 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
if (isi->pdata.full_mode)
cfg1 |= ISI_CFG1_FULL_MODE;
+ cfg1 |= ISI_CFG1_THMASK_BEATS_16;
+
isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
isi_writel(isi, ISI_CFG1, cfg1);
diff --git a/include/media/atmel-isi.h b/include/media/atmel-isi.h
index c2e5703..6008b09 100644
--- a/include/media/atmel-isi.h
+++ b/include/media/atmel-isi.h
@@ -59,6 +59,10 @@
#define ISI_CFG1_FRATE_DIV_MASK (7 << 8)
#define ISI_CFG1_DISCR (1 << 11)
#define ISI_CFG1_FULL_MODE (1 << 12)
+/* Definition for THMASK(ISI_V2) */
+#define ISI_CFG1_THMASK_BEATS_4 (0 << 13)
+#define ISI_CFG1_THMASK_BEATS_8 (1 << 13)
+#define ISI_CFG1_THMASK_BEATS_16 (2 << 13)
/* Bitfields in CFG2 */
#define ISI_CFG2_GRAYSCALE (1 << 13)
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] media: atmel-isi: increase the burst length to improve the performance
2014-11-25 9:30 [PATCH] media: atmel-isi: increase the burst length to improve the performance Josh Wu
@ 2014-11-25 22:21 ` Guennadi Liakhovetski
2014-11-26 2:54 ` Josh Wu
2015-02-02 10:15 ` Josh Wu
1 sibling, 1 reply; 6+ messages in thread
From: Guennadi Liakhovetski @ 2014-11-25 22:21 UTC (permalink / raw)
To: Josh Wu
Cc: linux-media, m.chehab, linux-arm-kernel, voice.shen, nicolas.ferre
Hi Josh,
On Tue, 25 Nov 2014, Josh Wu wrote:
> The burst length could be BEATS_4/8/16. Before this patch, isi use default
> value BEATS_4. To imporve the performance we could set it to BEATS_16.
>
> Otherwise sometime it would cause the ISI overflow error.
Without looking at datasheets - what does this bit do? Change the transfer
length? What happens then if the data amount isn't a multiple of the
transfer size?
Thanks
Guennadi
>
> Reported-by: Bo Shen <voice.shen@atmel.com>
> Signed-off-by: Josh Wu <josh.wu@atmel.com>
> ---
> drivers/media/platform/soc_camera/atmel-isi.c | 2 ++
> include/media/atmel-isi.h | 4 ++++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
> index ee5650f..fda587b 100644
> --- a/drivers/media/platform/soc_camera/atmel-isi.c
> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
> @@ -839,6 +839,8 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
> if (isi->pdata.full_mode)
> cfg1 |= ISI_CFG1_FULL_MODE;
>
> + cfg1 |= ISI_CFG1_THMASK_BEATS_16;
> +
> isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
> isi_writel(isi, ISI_CFG1, cfg1);
>
> diff --git a/include/media/atmel-isi.h b/include/media/atmel-isi.h
> index c2e5703..6008b09 100644
> --- a/include/media/atmel-isi.h
> +++ b/include/media/atmel-isi.h
> @@ -59,6 +59,10 @@
> #define ISI_CFG1_FRATE_DIV_MASK (7 << 8)
> #define ISI_CFG1_DISCR (1 << 11)
> #define ISI_CFG1_FULL_MODE (1 << 12)
> +/* Definition for THMASK(ISI_V2) */
> +#define ISI_CFG1_THMASK_BEATS_4 (0 << 13)
> +#define ISI_CFG1_THMASK_BEATS_8 (1 << 13)
> +#define ISI_CFG1_THMASK_BEATS_16 (2 << 13)
>
> /* Bitfields in CFG2 */
> #define ISI_CFG2_GRAYSCALE (1 << 13)
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] media: atmel-isi: increase the burst length to improve the performance
2014-11-25 22:21 ` Guennadi Liakhovetski
@ 2014-11-26 2:54 ` Josh Wu
0 siblings, 0 replies; 6+ messages in thread
From: Josh Wu @ 2014-11-26 2:54 UTC (permalink / raw)
To: Guennadi Liakhovetski
Cc: linux-media, m.chehab, linux-arm-kernel, voice.shen, nicolas.ferre
Hi, Gunenadi
On 11/26/2014 6:21 AM, Guennadi Liakhovetski wrote:
> Hi Josh,
>
> On Tue, 25 Nov 2014, Josh Wu wrote:
>
>> The burst length could be BEATS_4/8/16. Before this patch, isi use default
>> value BEATS_4. To imporve the performance we could set it to BEATS_16.
>>
>> Otherwise sometime it would cause the ISI overflow error.
> Without looking at datasheets - what does this bit do? Change the transfer
> length?
Atmel ISI has two internal 32-bytes FIFOs, one for Preview, another for
Codec.
This field is the threshold to trigger the FIFO transfer to AHB by DMA.
We can set the threshold to allow 4-bytes, 8-bytes or 16-bytes for a burst.
BEATS_4, means only allow 4-bytes in a burst.
BEATS_8, means only allow 4-bytes and 8-bytes in a burst.
BEATS_16, means allow 4-bytes, 8-bytes and 16-bytes in a burst.
So BEATS_16 will use the DMA more efficient if has lots of data to
transfer. As we are allowed to use 16-bytes in a burst. That will
trigger less burst than BEATS_4 to transfer same amount of data.
We found this patch can fix ISI FIFO overflow error when system is in a
situation that with a very high memory load.
If we only allow 4-bytes in a burst, that need more burst to transfer
data and less effective.
> What happens then if the data amount isn't a multiple of the
> transfer size?
BEATS_16 means allowed 4-bytes, 8-bytes and 16-bytes in a burst. So it
still can perform a 4-bytes transfer if the data is not multiple of 16.
I think all the data transfer are aligned with 4 bytes. The DMA address
should be aligned with 4 bytes as well.
Best Regards,
Josh Wu
>
> Thanks
> Guennadi
>
>> Reported-by: Bo Shen <voice.shen@atmel.com>
>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>> ---
>> drivers/media/platform/soc_camera/atmel-isi.c | 2 ++
>> include/media/atmel-isi.h | 4 ++++
>> 2 files changed, 6 insertions(+)
>>
>> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
>> index ee5650f..fda587b 100644
>> --- a/drivers/media/platform/soc_camera/atmel-isi.c
>> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
>> @@ -839,6 +839,8 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
>> if (isi->pdata.full_mode)
>> cfg1 |= ISI_CFG1_FULL_MODE;
>>
>> + cfg1 |= ISI_CFG1_THMASK_BEATS_16;
>> +
>> isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
>> isi_writel(isi, ISI_CFG1, cfg1);
>>
>> diff --git a/include/media/atmel-isi.h b/include/media/atmel-isi.h
>> index c2e5703..6008b09 100644
>> --- a/include/media/atmel-isi.h
>> +++ b/include/media/atmel-isi.h
>> @@ -59,6 +59,10 @@
>> #define ISI_CFG1_FRATE_DIV_MASK (7 << 8)
>> #define ISI_CFG1_DISCR (1 << 11)
>> #define ISI_CFG1_FULL_MODE (1 << 12)
>> +/* Definition for THMASK(ISI_V2) */
>> +#define ISI_CFG1_THMASK_BEATS_4 (0 << 13)
>> +#define ISI_CFG1_THMASK_BEATS_8 (1 << 13)
>> +#define ISI_CFG1_THMASK_BEATS_16 (2 << 13)
>>
>> /* Bitfields in CFG2 */
>> #define ISI_CFG2_GRAYSCALE (1 << 13)
>> --
>> 1.9.1
>>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] media: atmel-isi: increase the burst length to improve the performance
2014-11-25 9:30 [PATCH] media: atmel-isi: increase the burst length to improve the performance Josh Wu
2014-11-25 22:21 ` Guennadi Liakhovetski
@ 2015-02-02 10:15 ` Josh Wu
2015-02-02 10:22 ` Guennadi Liakhovetski
1 sibling, 1 reply; 6+ messages in thread
From: Josh Wu @ 2015-02-02 10:15 UTC (permalink / raw)
To: linux-media, Guennadi Liakhovetski
Cc: m.chehab, linux-arm-kernel, g.liakhovetski, voice.shen, nicolas.ferre
Hi, Guennadi
Ping? what about the status of this patch?
Best Regards,
Josh Wu
On 11/25/2014 5:30 PM, Josh Wu wrote:
> The burst length could be BEATS_4/8/16. Before this patch, isi use default
> value BEATS_4. To imporve the performance we could set it to BEATS_16.
>
> Otherwise sometime it would cause the ISI overflow error.
>
> Reported-by: Bo Shen <voice.shen@atmel.com>
> Signed-off-by: Josh Wu <josh.wu@atmel.com>
> ---
> drivers/media/platform/soc_camera/atmel-isi.c | 2 ++
> include/media/atmel-isi.h | 4 ++++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
> index ee5650f..fda587b 100644
> --- a/drivers/media/platform/soc_camera/atmel-isi.c
> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
> @@ -839,6 +839,8 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
> if (isi->pdata.full_mode)
> cfg1 |= ISI_CFG1_FULL_MODE;
>
> + cfg1 |= ISI_CFG1_THMASK_BEATS_16;
> +
> isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
> isi_writel(isi, ISI_CFG1, cfg1);
>
> diff --git a/include/media/atmel-isi.h b/include/media/atmel-isi.h
> index c2e5703..6008b09 100644
> --- a/include/media/atmel-isi.h
> +++ b/include/media/atmel-isi.h
> @@ -59,6 +59,10 @@
> #define ISI_CFG1_FRATE_DIV_MASK (7 << 8)
> #define ISI_CFG1_DISCR (1 << 11)
> #define ISI_CFG1_FULL_MODE (1 << 12)
> +/* Definition for THMASK(ISI_V2) */
> +#define ISI_CFG1_THMASK_BEATS_4 (0 << 13)
> +#define ISI_CFG1_THMASK_BEATS_8 (1 << 13)
> +#define ISI_CFG1_THMASK_BEATS_16 (2 << 13)
>
> /* Bitfields in CFG2 */
> #define ISI_CFG2_GRAYSCALE (1 << 13)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] media: atmel-isi: increase the burst length to improve the performance
2015-02-02 10:15 ` Josh Wu
@ 2015-02-02 10:22 ` Guennadi Liakhovetski
2015-02-03 5:50 ` Josh Wu
0 siblings, 1 reply; 6+ messages in thread
From: Guennadi Liakhovetski @ 2015-02-02 10:22 UTC (permalink / raw)
To: Josh Wu
Cc: linux-media, m.chehab, linux-arm-kernel, voice.shen, nicolas.ferre
Hi Josh,
On Mon, 2 Feb 2015, Josh Wu wrote:
> Hi, Guennadi
>
> Ping? what about the status of this patch?
Right, got lost, sorry... Added to the queue now.
Thanks
Guennadi
> Best Regards,
> Josh Wu
>
> On 11/25/2014 5:30 PM, Josh Wu wrote:
> > The burst length could be BEATS_4/8/16. Before this patch, isi use default
> > value BEATS_4. To imporve the performance we could set it to BEATS_16.
> >
> > Otherwise sometime it would cause the ISI overflow error.
> >
> > Reported-by: Bo Shen <voice.shen@atmel.com>
> > Signed-off-by: Josh Wu <josh.wu@atmel.com>
> > ---
> > drivers/media/platform/soc_camera/atmel-isi.c | 2 ++
> > include/media/atmel-isi.h | 4 ++++
> > 2 files changed, 6 insertions(+)
> >
> > diff --git a/drivers/media/platform/soc_camera/atmel-isi.c
> > b/drivers/media/platform/soc_camera/atmel-isi.c
> > index ee5650f..fda587b 100644
> > --- a/drivers/media/platform/soc_camera/atmel-isi.c
> > +++ b/drivers/media/platform/soc_camera/atmel-isi.c
> > @@ -839,6 +839,8 @@ static int isi_camera_set_bus_param(struct
> > soc_camera_device *icd)
> > if (isi->pdata.full_mode)
> > cfg1 |= ISI_CFG1_FULL_MODE;
> > + cfg1 |= ISI_CFG1_THMASK_BEATS_16;
> > +
> > isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
> > isi_writel(isi, ISI_CFG1, cfg1);
> > diff --git a/include/media/atmel-isi.h b/include/media/atmel-isi.h
> > index c2e5703..6008b09 100644
> > --- a/include/media/atmel-isi.h
> > +++ b/include/media/atmel-isi.h
> > @@ -59,6 +59,10 @@
> > #define ISI_CFG1_FRATE_DIV_MASK (7 << 8)
> > #define ISI_CFG1_DISCR (1 << 11)
> > #define ISI_CFG1_FULL_MODE (1 << 12)
> > +/* Definition for THMASK(ISI_V2) */
> > +#define ISI_CFG1_THMASK_BEATS_4 (0 << 13)
> > +#define ISI_CFG1_THMASK_BEATS_8 (1 << 13)
> > +#define ISI_CFG1_THMASK_BEATS_16 (2 << 13)
> > /* Bitfields in CFG2 */
> > #define ISI_CFG2_GRAYSCALE (1 << 13)
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] media: atmel-isi: increase the burst length to improve the performance
2015-02-02 10:22 ` Guennadi Liakhovetski
@ 2015-02-03 5:50 ` Josh Wu
0 siblings, 0 replies; 6+ messages in thread
From: Josh Wu @ 2015-02-03 5:50 UTC (permalink / raw)
To: Guennadi Liakhovetski
Cc: linux-media, m.chehab, linux-arm-kernel, voice.shen, nicolas.ferre
Hi, Guennadi
On 2/2/2015 6:22 PM, Guennadi Liakhovetski wrote:
> Hi Josh,
>
> On Mon, 2 Feb 2015, Josh Wu wrote:
>
>> Hi, Guennadi
>>
>> Ping? what about the status of this patch?
> Right, got lost, sorry... Added to the queue now.
Thank you.
Best Regards,
Josh Wu
>
> Thanks
> Guennadi
>
>> Best Regards,
>> Josh Wu
>>
>> On 11/25/2014 5:30 PM, Josh Wu wrote:
>>> The burst length could be BEATS_4/8/16. Before this patch, isi use default
>>> value BEATS_4. To imporve the performance we could set it to BEATS_16.
>>>
>>> Otherwise sometime it would cause the ISI overflow error.
>>>
>>> Reported-by: Bo Shen <voice.shen@atmel.com>
>>> Signed-off-by: Josh Wu <josh.wu@atmel.com>
>>> ---
>>> drivers/media/platform/soc_camera/atmel-isi.c | 2 ++
>>> include/media/atmel-isi.h | 4 ++++
>>> 2 files changed, 6 insertions(+)
>>>
>>> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c
>>> b/drivers/media/platform/soc_camera/atmel-isi.c
>>> index ee5650f..fda587b 100644
>>> --- a/drivers/media/platform/soc_camera/atmel-isi.c
>>> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
>>> @@ -839,6 +839,8 @@ static int isi_camera_set_bus_param(struct
>>> soc_camera_device *icd)
>>> if (isi->pdata.full_mode)
>>> cfg1 |= ISI_CFG1_FULL_MODE;
>>> + cfg1 |= ISI_CFG1_THMASK_BEATS_16;
>>> +
>>> isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
>>> isi_writel(isi, ISI_CFG1, cfg1);
>>> diff --git a/include/media/atmel-isi.h b/include/media/atmel-isi.h
>>> index c2e5703..6008b09 100644
>>> --- a/include/media/atmel-isi.h
>>> +++ b/include/media/atmel-isi.h
>>> @@ -59,6 +59,10 @@
>>> #define ISI_CFG1_FRATE_DIV_MASK (7 << 8)
>>> #define ISI_CFG1_DISCR (1 << 11)
>>> #define ISI_CFG1_FULL_MODE (1 << 12)
>>> +/* Definition for THMASK(ISI_V2) */
>>> +#define ISI_CFG1_THMASK_BEATS_4 (0 << 13)
>>> +#define ISI_CFG1_THMASK_BEATS_8 (1 << 13)
>>> +#define ISI_CFG1_THMASK_BEATS_16 (2 << 13)
>>> /* Bitfields in CFG2 */
>>> #define ISI_CFG2_GRAYSCALE (1 << 13)
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-02-03 5:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-25 9:30 [PATCH] media: atmel-isi: increase the burst length to improve the performance Josh Wu
2014-11-25 22:21 ` Guennadi Liakhovetski
2014-11-26 2:54 ` Josh Wu
2015-02-02 10:15 ` Josh Wu
2015-02-02 10:22 ` Guennadi Liakhovetski
2015-02-03 5:50 ` Josh Wu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).