Message ID | 20210615225023.3929434-11-heiko@sntech.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | rkisp1 support for px30 | expand |
On 16.06.21 01:50, Heiko Stuebner wrote: > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > The px30 uses a V12 isp block so add compatible and matchdata > for it. > > Signed-off-by: Heiko Stuebner <heiko.stuebner@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
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,