[PATCH v3 10/10] media: rockchip: rkisp1: add support for px30 isp version

Dafna Hirschfeld dafna.hirschfeld at collabora.com
Tue Jun 15 23:29:14 PDT 2021



On 16.06.21 01:50, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
> 
> The px30 uses a V12 isp block so add compatible and matchdata
> for it.
> 
> Signed-off-by: Heiko Stuebner <heiko.stuebner at theobroma-systems.com>
> ---
>   .../media/platform/rockchip/rkisp1/rkisp1-dev.c | 17 +++++++++++++++++
>   1 file changed, 17 insertions(+)
> 
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
> index ddc05189c62a..6e4c0710f3a3 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
> @@ -398,6 +398,19 @@ static irqreturn_t rkisp1_isr(int irq, void *ctx)
>   	return IRQ_HANDLED;
>   }
>   
> +static const char * const px30_isp_clks[] = {
> +	"isp",
> +	"aclk",
> +	"hclk",
> +	"pclk",
> +};
> +
> +static const struct rkisp1_match_data px30_isp_match_data = {
> +	.clks = px30_isp_clks,
> +	.size = ARRAY_SIZE(px30_isp_clks),
> +	.isp_ver = RKISP1_V12,
> +};
> +
>   static const char * const rk3399_isp_clks[] = {
>   	"isp",
>   	"aclk",
> @@ -411,6 +424,10 @@ static const struct rkisp1_match_data rk3399_isp_match_data = {
>   };
>   
>   static const struct of_device_id rkisp1_of_match[] = {
> +	{
> +		.compatible = "rockchip,px30-cif-isp",
> +		.data = &px30_isp_match_data,
> +	},
>   	{
>   		.compatible = "rockchip,rk3399-cif-isp",
>   		.data = &rk3399_isp_match_data,
> 

Hi, in order to avoid the if-else in patch 4/10 maybe we can do:

```
struct interrupt_to_isr {
	char* name;
	irqreturn_t isr(int irq, void *ctx);
}

interrupt_to_is px30_isrs[] {
	{"isp", rkisp1_isp_isr}
	{"mi",  rkisp1_capture_isr}
	{"mipi", rkisp1_mipi_isr}
}
static const struct rkisp1_match_data px30_isp_match_data = {
	.clks = px30_isp_clks,
	.size = ARRAY_SIZE(px30_isp_clks),
	.isp_ver = RKISP1_V12,
	.isrs = px30_isrs
};
//and similar for rk3399
```

Then in the probe we just do
```
for each (name,isr) in isrs
	irq = platform_get_irq_byname(name)
	devm_request_irq(dev, irq, isr,...
```


Thanks,
Dafna	




More information about the Linux-rockchip mailing list