linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: <Eugen.Hristev@microchip.com>
To: <jacopo@jmondi.org>
Cc: <devicetree@vger.kernel.org>, <linux-media@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 04/30] media: atmel: atmel-isc: specialize max width and max height
Date: Mon, 12 Apr 2021 10:04:14 +0000	[thread overview]
Message-ID: <f6e42811-7b72-ce12-98b5-2f48fe5fb8d0@microchip.com> (raw)
In-Reply-To: <20210412095336.vljygvokqq56kb6n@uno.localdomain>

On 4/12/21 12:53 PM, Jacopo Mondi wrote:
> Ups,
> 
> On Mon, Apr 12, 2021 at 11:43:12AM +0200, Jacopo Mondi wrote:
>> Hi Eugene,
>>
>> On Mon, Apr 05, 2021 at 06:50:39PM +0300, Eugen Hristev wrote:
>>> Move the max width and max height constants to the product specific driver
>>> and have them in the device struct.
>>>
>>> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
>>> ---
>>>   drivers/media/platform/atmel/atmel-isc-base.c | 28 +++++++++----------
>>>   drivers/media/platform/atmel/atmel-isc.h      |  9 ++++--
>>>   .../media/platform/atmel/atmel-sama5d2-isc.c  |  7 +++--
>>>   3 files changed, 25 insertions(+), 19 deletions(-)
>>>
>>> diff --git a/drivers/media/platform/atmel/atmel-isc-base.c b/drivers/media/platform/atmel/atmel-isc-base.c
>>> index 45fc8dbb7943..350076dd029a 100644
>>> --- a/drivers/media/platform/atmel/atmel-isc-base.c
>>> +++ b/drivers/media/platform/atmel/atmel-isc-base.c
>>> @@ -1204,8 +1204,8 @@ static void isc_try_fse(struct isc_device *isc,
>>>       * just use the maximum ISC can receive.
>>>       */
>>>      if (ret) {
>>> -           pad_cfg->try_crop.width = ISC_MAX_SUPPORT_WIDTH;
>>> -           pad_cfg->try_crop.height = ISC_MAX_SUPPORT_HEIGHT;
>>> +           pad_cfg->try_crop.width = isc->max_width;
>>> +           pad_cfg->try_crop.height = isc->max_height;
>>>      } else {
>>>              pad_cfg->try_crop.width = fse.max_width;
>>>              pad_cfg->try_crop.height = fse.max_height;
>>> @@ -1282,10 +1282,10 @@ static int isc_try_fmt(struct isc_device *isc, struct v4l2_format *f,
>>>      isc->try_config.sd_format = sd_fmt;
>>>
>>>      /* Limit to Atmel ISC hardware capabilities */
>>> -   if (pixfmt->width > ISC_MAX_SUPPORT_WIDTH)
>>> -           pixfmt->width = ISC_MAX_SUPPORT_WIDTH;
>>> -   if (pixfmt->height > ISC_MAX_SUPPORT_HEIGHT)
>>> -           pixfmt->height = ISC_MAX_SUPPORT_HEIGHT;
>>> +   if (pixfmt->width > isc->max_width)
>>> +           pixfmt->width = isc->max_width;
>>> +   if (pixfmt->height > isc->max_height)
>>> +           pixfmt->height = isc->max_height;
>>>
>>>      /*
>>>       * The mbus format is the one the subdev outputs.
>>> @@ -1327,10 +1327,10 @@ static int isc_try_fmt(struct isc_device *isc, struct v4l2_format *f,
>>>      v4l2_fill_pix_format(pixfmt, &format.format);
>>>
>>>      /* Limit to Atmel ISC hardware capabilities */
>>> -   if (pixfmt->width > ISC_MAX_SUPPORT_WIDTH)
>>> -           pixfmt->width = ISC_MAX_SUPPORT_WIDTH;
>>> -   if (pixfmt->height > ISC_MAX_SUPPORT_HEIGHT)
>>> -           pixfmt->height = ISC_MAX_SUPPORT_HEIGHT;
>>> +   if (pixfmt->width > isc->max_width)
>>> +           pixfmt->width = isc->max_width;
>>> +   if (pixfmt->height > isc->max_height)
>>> +           pixfmt->height = isc->max_height;
>>
>> What happens if the sensor sends a frame larger that the ISC max
>> supported sizes ?
>>
> 
> I meant to ask this question on the previous patch :/

Hi Jacopo,

The ISC has a feature in the PFE module (parallel front end), the first 
pixel capturing module, which will automatically crop the frame at the 
maximum size (or configured frame size).

here is the commit that implements this safety mechanism :

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=253ccf34232ae3b47497e5e55aef3ac48821425c

Eugen

> 
>>>
>>>      pixfmt->field = V4L2_FIELD_NONE;
>>>      pixfmt->bytesperline = (pixfmt->width * isc->try_config.bpp) >> 3;
>>> @@ -1368,10 +1368,10 @@ static int isc_set_fmt(struct isc_device *isc, struct v4l2_format *f)
>>>              return ret;
>>>
>>>      /* Limit to Atmel ISC hardware capabilities */
>>> -   if (pixfmt->width > ISC_MAX_SUPPORT_WIDTH)
>>> -           pixfmt->width = ISC_MAX_SUPPORT_WIDTH;
>>> -   if (pixfmt->height > ISC_MAX_SUPPORT_HEIGHT)
>>> -           pixfmt->height = ISC_MAX_SUPPORT_HEIGHT;
>>> +   if (f->fmt.pix.width > isc->max_width)
>>> +           f->fmt.pix.width = isc->max_width;
>>> +   if (f->fmt.pix.height > isc->max_height)
>>> +           f->fmt.pix.height = isc->max_height;
>>>
>>>      isc->fmt = *f;
>>>
>>> diff --git a/drivers/media/platform/atmel/atmel-isc.h b/drivers/media/platform/atmel/atmel-isc.h
>>> index 8d81d9967ad2..6becc6c3aaf0 100644
>>> --- a/drivers/media/platform/atmel/atmel-isc.h
>>> +++ b/drivers/media/platform/atmel/atmel-isc.h
>>> @@ -10,9 +10,6 @@
>>>    */
>>>   #ifndef _ATMEL_ISC_H_
>>>
>>> -#define ISC_MAX_SUPPORT_WIDTH   2592
>>> -#define ISC_MAX_SUPPORT_HEIGHT  1944
>>> -
>>>   #define ISC_CLK_MAX_DIV            255
>>>
>>>   enum isc_clk_id {
>>> @@ -191,6 +188,9 @@ struct isc_ctrls {
>>>    * @gamma_table:   pointer to the table with gamma values, has
>>>    *                 gamma_max sets of GAMMA_ENTRIES entries each
>>>    * @gamma_max:             maximum number of sets of inside the gamma_table
>>> + *
>>> + * @max_width:             maximum frame width, dependent on the internal RAM
>>> + * @max_height:            maximum frame height, dependent on the internal RAM
>>>    */
>>>   struct isc_device {
>>>      struct regmap           *regmap;
>>> @@ -254,6 +254,9 @@ struct isc_device {
>>>      /* pointer to the defined gamma table */
>>>      const u32       (*gamma_table)[GAMMA_ENTRIES];
>>>      u32             gamma_max;
>>> +
>>> +   u32             max_width;
>>> +   u32             max_height;
>>>   };
>>>
>>>   extern struct isc_format formats_list[];
>>> diff --git a/drivers/media/platform/atmel/atmel-sama5d2-isc.c b/drivers/media/platform/atmel/atmel-sama5d2-isc.c
>>> index f45d8b96bfb8..f8d1c8ba99b3 100644
>>> --- a/drivers/media/platform/atmel/atmel-sama5d2-isc.c
>>> +++ b/drivers/media/platform/atmel/atmel-sama5d2-isc.c
>>> @@ -49,8 +49,8 @@
>>>   #include "atmel-isc-regs.h"
>>>   #include "atmel-isc.h"
>>>
>>> -#define ISC_MAX_SUPPORT_WIDTH   2592
>>> -#define ISC_MAX_SUPPORT_HEIGHT  1944
>>> +#define ISC_SAMA5D2_MAX_SUPPORT_WIDTH   2592
>>> +#define ISC_SAMA5D2_MAX_SUPPORT_HEIGHT  1944
>>>
>>>   #define ISC_CLK_MAX_DIV            255
>>>
>>> @@ -195,6 +195,9 @@ static int atmel_isc_probe(struct platform_device *pdev)
>>>      isc->gamma_table = isc_sama5d2_gamma_table;
>>>      isc->gamma_max = 2;
>>>
>>> +   isc->max_width = ISC_SAMA5D2_MAX_SUPPORT_WIDTH;
>>> +   isc->max_height = ISC_SAMA5D2_MAX_SUPPORT_HEIGHT;
>>> +
>>>      ret = isc_pipeline_init(isc);
>>>      if (ret)
>>>              return ret;
>>> --
>>> 2.25.1
>>>


  reply	other threads:[~2021-04-12 10:06 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-05 15:50 [PATCH v2 00/30] media: atmel: atmel-isc: add support for xisc Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 01/30] media: atmel: atmel-isc: specialize gamma table into product specific Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 02/30] media: atmel: atmel-isc: specialize driver name constant Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 03/30] media: atmel: atmel-isc: add checks for limiting frame sizes Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 04/30] media: atmel: atmel-isc: specialize max width and max height Eugen Hristev
2021-04-12  9:43   ` Jacopo Mondi
2021-04-12  9:53     ` Jacopo Mondi
2021-04-12 10:04       ` Eugen.Hristev [this message]
2021-04-05 15:50 ` [PATCH v2 05/30] media: atmel: atmel-isc: specialize dma cfg Eugen Hristev
2021-04-12  9:46   ` Jacopo Mondi
2021-04-05 15:50 ` [PATCH v2 06/30] media: atmel: atmel-isc: extract CSC submodule config into separate function Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 07/30] media: atmel: atmel-isc-base: add id to clock debug message Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 08/30] media: atmel: atmel-isc: create register offsets struct Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 09/30] media: atmel: atmel-isc: extract CBC submodule config into separate function Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 10/30] media: atmel: atmel-isc: add CBC to the reg offsets struct Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 11/30] media: atmel: atmel-isc: add SUB422 and SUB420 to register offsets Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 12/30] media: atmel: atmel-isc: add RLP " Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 13/30] media: atmel: atmel-isc: add HIS " Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 14/30] media: atmel: atmel-isc: add DMA " Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 15/30] media: atmel: atmel-isc: add support for version register Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 16/30] media: atmel: atmel-isc: add his_entry to register offsets Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 17/30] media: atmel: atmel-isc: add register description for additional modules Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 18/30] media: atmel: atmel-isc: extend pipeline with extra modules Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 19/30] media: atmel: atmel-isc: add CC initialization function Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 20/30] media: atmel: atmel-isc: create product specific v4l2 controls config Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 21/30] media: atmel: atmel-isc: create callback for DPC submodule product specific Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 22/30] media: atmel: atmel-isc: create callback for GAM " Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 23/30] media: atmel: atmel-isc: create callback for RLP " Eugen Hristev
2021-04-05 15:50 ` [PATCH v2 24/30] media: atmel: atmel-isc: move the formats list into product specific code Eugen Hristev
2021-04-05 15:51 ` [PATCH v2 25/30] media: atmel: atmel-isc: create an adapt pipeline callback for product specific Eugen Hristev
2021-04-05 15:51 ` [PATCH v2 26/30] media: atmel: atmel-isc-regs: add additional fields for sama7g5 type pipeline Eugen Hristev
2021-04-05 15:51 ` [PATCH v2 27/30] media: atmel: atmel-isc-base: add support for more formats and additional pipeline modules Eugen Hristev
2021-04-05 15:51 ` [PATCH v2 28/30] dt-bindings: media: atmel: add microchip-xisc binding Eugen Hristev
2021-04-09 16:07   ` Rob Herring
2021-04-12  9:57   ` Jacopo Mondi
2021-04-12 10:12     ` Eugen.Hristev
2021-04-12 10:34       ` Jacopo Mondi
2021-04-05 15:51 ` [PATCH v2 29/30] media: atmel: atmel-isc-sama5d2: remove duplicate define Eugen Hristev
2021-04-05 15:51 ` [PATCH v2 30/30] media: atmel: atmel-isc: add microchip-xisc driver Eugen Hristev
2021-04-12 12:37   ` Eugen.Hristev
2021-04-12 13:41     ` Jacopo Mondi
2021-04-12 14:15       ` Eugen.Hristev
2021-04-12 14:38         ` Jacopo Mondi
2021-04-07  7:30 ` [PATCH v2 00/30] media: atmel: atmel-isc: add support for xisc Hans Verkuil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f6e42811-7b72-ce12-98b5-2f48fe5fb8d0@microchip.com \
    --to=eugen.hristev@microchip.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jacopo@jmondi.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).