On 11/4/22 11:26, Hans Verkuil wrote: > Hi Eugen, > > On 02/11/2022 14:14, Eugen Hristev wrote: >> The Atmel ISC driver is not compliant with media controller specification. >> In order to evolve this driver, it has to move to media controller, to >> support enhanced features and future products which embed it. >> The move to media controller involves several changes which are >> not backwards compatible with the current usability of the driver. >> >> The best example is the way the format is propagated from the top video >> driver /dev/videoX down to the sensor. >> >> In a simple configuration sensor ==> isc , the isc just calls subdev s_fmt >> and controls the sensor directly. This is achieved by having a lot of code >> inside the driver that will query the subdev at probe time and make a list >> of formats which are usable. >> Basically the user has nothing to configure, as the isc will handle >> everything at the top level. This is an easy way to capture, but also comes >> with the drawback of lack of flexibility. >> In a more complicated pipeline >> sensor ==> controller 1 ==> controller 2 ==> isc >> this will not be achievable, as controller 1 and controller 2 might be >> media-controller configurable, and will not propagate the formats down to >> the sensor. >> >> After discussions with the media maintainers, the decision is to move >> Atmel ISC to staging as-is, to keep the Kconfig symbols and the users >> to the driver in staging. Thus, all the existing users of the non >> media-controller paradigm will continue to be happy and use the old config >> way. >> >> The next step is to readd the driver in the media subsystem with a different >> symbol, with the conversion to media controller done, and new users >> of the driver will be able to use all the new features. >> >> This patch is merely a file move to staging, not affecting any of the users. >> >> The exported symbols had to be renamed to atmel_* to avoid duplication when >> the future Microchip ISC driver will be added to media subsystem. >> >> Signed-off-by: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx> >> --- >> MAINTAINERS | 4 +- >> drivers/media/platform/atmel/Kconfig | 36 ----------------- >> drivers/media/platform/atmel/Makefile | 6 --- >> drivers/staging/media/Kconfig | 2 + >> drivers/staging/media/Makefile | 1 + >> drivers/staging/media/atmel/Kconfig | 40 +++++++++++++++++++ >> drivers/staging/media/atmel/Makefile | 8 ++++ >> .../media}/atmel/atmel-isc-base.c | 20 +++++----- >> .../media}/atmel/atmel-isc-clk.c | 8 ++-- >> .../media}/atmel/atmel-isc-regs.h | 0 >> .../media}/atmel/atmel-isc.h | 16 ++++---- >> .../media}/atmel/atmel-sama5d2-isc.c | 18 ++++----- >> .../media}/atmel/atmel-sama7g5-isc.c | 18 ++++----- >> 13 files changed, 93 insertions(+), 84 deletions(-) >> create mode 100644 drivers/staging/media/atmel/Kconfig >> create mode 100644 drivers/staging/media/atmel/Makefile >> rename drivers/{media/platform => staging/media}/atmel/atmel-isc-base.c (99%) >> rename drivers/{media/platform => staging/media}/atmel/atmel-isc-clk.c (97%) >> rename drivers/{media/platform => staging/media}/atmel/atmel-isc-regs.h (100%) >> rename drivers/{media/platform => staging/media}/atmel/atmel-isc.h (96%) >> rename drivers/{media/platform => staging/media}/atmel/atmel-sama5d2-isc.c (97%) >> rename drivers/{media/platform => staging/media}/atmel/atmel-sama7g5-isc.c (97%) > > A new 'deprecated' directory was created for drivers that are marked > as deprecated (like this one). Please update this patch for that. > > Also add a TODO file explaining why it is deprecated, what replaces > it, and when it will be removed (I would set that to 2-3 years in > the future). > > The Kconfig should also be updated to prevent building this deprecated > driver if the new driver is selected, unless COMPILE_TEST is also set. > > To be honest, I wonder if it wouldn't be better to do the move to > staging as the last patch of the series. It's more logical in the > patch sequence. Hi Hans, I had the feeling to do this as first patch, because it would be strange for me to first add a second driver with a different name that would duplicate much of the code, and after that move this driver to staging. But if you feel it's better like that, I can definitely reorder them, it will need a few changes in the commit messages, but no worries about that. I have built both drivers in the same time and had no issues. I only had to rename the exported symbols in the old driver with a prefix. I think it's a good approach to not duplicate in any way exported symbols. Thanks for having a look, Eugen > > Regards, > > Hans > >> >> diff --git a/MAINTAINERS b/MAINTAINERS >> index 307775bfbf99..8b28d8d4c55e 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -13488,8 +13488,8 @@ L: linux-media@xxxxxxxxxxxxxxx >> S: Supported >> F: Documentation/devicetree/bindings/media/atmel,isc.yaml >> F: Documentation/devicetree/bindings/media/microchip,xisc.yaml >> -F: drivers/media/platform/atmel/atmel-isc* >> -F: drivers/media/platform/atmel/atmel-sama*-isc* >> +F: drivers/staging/media/atmel/atmel-isc* >> +F: drivers/staging/media/atmel/atmel-sama*-isc* >> F: include/linux/atmel-isc-media.h >> >> MICROCHIP ISI DRIVER >> diff --git a/drivers/media/platform/atmel/Kconfig b/drivers/media/platform/atmel/Kconfig >> index f399dba62e17..f438a98542e8 100644 >> --- a/drivers/media/platform/atmel/Kconfig >> +++ b/drivers/media/platform/atmel/Kconfig >> @@ -2,42 +2,6 @@ >> >> comment "Atmel media platform drivers" >> >> -config VIDEO_ATMEL_ISC >> - tristate "ATMEL Image Sensor Controller (ISC) support" >> - depends on V4L_PLATFORM_DRIVERS >> - depends on VIDEO_DEV && COMMON_CLK >> - depends on ARCH_AT91 || COMPILE_TEST >> - select MEDIA_CONTROLLER >> - select VIDEO_V4L2_SUBDEV_API >> - select VIDEOBUF2_DMA_CONTIG >> - select REGMAP_MMIO >> - select V4L2_FWNODE >> - select VIDEO_ATMEL_ISC_BASE >> - help >> - This module makes the ATMEL Image Sensor Controller available >> - as a v4l2 device. >> - >> -config VIDEO_ATMEL_XISC >> - tristate "ATMEL eXtended Image Sensor Controller (XISC) support" >> - depends on V4L_PLATFORM_DRIVERS >> - depends on VIDEO_DEV && COMMON_CLK >> - depends on ARCH_AT91 || COMPILE_TEST >> - select VIDEOBUF2_DMA_CONTIG >> - select REGMAP_MMIO >> - select V4L2_FWNODE >> - select VIDEO_ATMEL_ISC_BASE >> - select MEDIA_CONTROLLER >> - select VIDEO_V4L2_SUBDEV_API >> - help >> - This module makes the ATMEL eXtended Image Sensor Controller >> - available as a v4l2 device. >> - >> -config VIDEO_ATMEL_ISC_BASE >> - tristate >> - default n >> - help >> - ATMEL ISC and XISC common code base. >> - >> config VIDEO_ATMEL_ISI >> tristate "ATMEL Image Sensor Interface (ISI) support" >> depends on V4L_PLATFORM_DRIVERS >> diff --git a/drivers/media/platform/atmel/Makefile b/drivers/media/platform/atmel/Makefile >> index 794e8f739287..86f77030e6e2 100644 >> --- a/drivers/media/platform/atmel/Makefile >> +++ b/drivers/media/platform/atmel/Makefile >> @@ -1,10 +1,4 @@ >> # SPDX-License-Identifier: GPL-2.0-only >> -atmel-isc-objs = atmel-sama5d2-isc.o >> -atmel-xisc-objs = atmel-sama7g5-isc.o >> -atmel-isc-common-objs = atmel-isc-base.o atmel-isc-clk.o >> >> obj-$(CONFIG_VIDEO_ATMEL_ISI) += atmel-isi.o >> -obj-$(CONFIG_VIDEO_ATMEL_ISC_BASE) += atmel-isc-common.o >> -obj-$(CONFIG_VIDEO_ATMEL_ISC) += atmel-isc.o >> -obj-$(CONFIG_VIDEO_ATMEL_XISC) += atmel-xisc.o >> obj-$(CONFIG_VIDEO_MICROCHIP_CSI2DC) += microchip-csi2dc.o >> diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig >> index d4f03b203ae5..072fab838374 100644 >> --- a/drivers/staging/media/Kconfig >> +++ b/drivers/staging/media/Kconfig >> @@ -20,6 +20,8 @@ menuconfig STAGING_MEDIA >> if STAGING_MEDIA && MEDIA_SUPPORT >> >> # Please keep them in alphabetic order >> +source "drivers/staging/media/atmel/Kconfig" >> + >> source "drivers/staging/media/atomisp/Kconfig" >> >> source "drivers/staging/media/imx/Kconfig" >> diff --git a/drivers/staging/media/Makefile b/drivers/staging/media/Makefile >> index a387692b84f2..dbfeb03ea41f 100644 >> --- a/drivers/staging/media/Makefile >> +++ b/drivers/staging/media/Makefile >> @@ -1,4 +1,5 @@ >> # SPDX-License-Identifier: GPL-2.0 >> +obj-$(CONFIG_VIDEO_ATMEL_ISC_BASE) += atmel/ >> obj-$(CONFIG_INTEL_ATOMISP) += atomisp/ >> obj-$(CONFIG_VIDEO_CPIA2) += deprecated/cpia2/ >> obj-$(CONFIG_VIDEO_IMX_MEDIA) += imx/ >> diff --git a/drivers/staging/media/atmel/Kconfig b/drivers/staging/media/atmel/Kconfig >> new file mode 100644 >> index 000000000000..73cef959f236 >> --- /dev/null >> +++ b/drivers/staging/media/atmel/Kconfig >> @@ -0,0 +1,40 @@ >> +# SPDX-License-Identifier: GPL-2.0-only >> + >> +comment "Atmel media platform drivers" >> + >> +config VIDEO_ATMEL_ISC >> + tristate "ATMEL Image Sensor Controller (ISC) support" >> + depends on V4L_PLATFORM_DRIVERS >> + depends on VIDEO_DEV && COMMON_CLK >> + depends on ARCH_AT91 || COMPILE_TEST >> + select MEDIA_CONTROLLER >> + select VIDEO_V4L2_SUBDEV_API >> + select VIDEOBUF2_DMA_CONTIG >> + select REGMAP_MMIO >> + select V4L2_FWNODE >> + select VIDEO_ATMEL_ISC_BASE >> + help >> + This module makes the ATMEL Image Sensor Controller available >> + as a v4l2 device. >> + >> +config VIDEO_ATMEL_XISC >> + tristate "ATMEL eXtended Image Sensor Controller (XISC) support" >> + depends on V4L_PLATFORM_DRIVERS >> + depends on VIDEO_DEV && COMMON_CLK >> + depends on ARCH_AT91 || COMPILE_TEST >> + select VIDEOBUF2_DMA_CONTIG >> + select REGMAP_MMIO >> + select V4L2_FWNODE >> + select VIDEO_ATMEL_ISC_BASE >> + select MEDIA_CONTROLLER >> + select VIDEO_V4L2_SUBDEV_API >> + help >> + This module makes the ATMEL eXtended Image Sensor Controller >> + available as a v4l2 device. >> + >> +config VIDEO_ATMEL_ISC_BASE >> + tristate >> + default n >> + help >> + ATMEL ISC and XISC common code base. >> + >> diff --git a/drivers/staging/media/atmel/Makefile b/drivers/staging/media/atmel/Makefile >> new file mode 100644 >> index 000000000000..34eaeeac5bba >> --- /dev/null >> +++ b/drivers/staging/media/atmel/Makefile >> @@ -0,0 +1,8 @@ >> +# SPDX-License-Identifier: GPL-2.0-only >> +atmel-isc-objs = atmel-sama5d2-isc.o >> +atmel-xisc-objs = atmel-sama7g5-isc.o >> +atmel-isc-common-objs = atmel-isc-base.o atmel-isc-clk.o >> + >> +obj-$(CONFIG_VIDEO_ATMEL_ISC_BASE) += atmel-isc-common.o >> +obj-$(CONFIG_VIDEO_ATMEL_ISC) += atmel-isc.o >> +obj-$(CONFIG_VIDEO_ATMEL_XISC) += atmel-xisc.o >> diff --git a/drivers/media/platform/atmel/atmel-isc-base.c b/drivers/staging/media/atmel/atmel-isc-base.c >> similarity index 99% >> rename from drivers/media/platform/atmel/atmel-isc-base.c >> rename to drivers/staging/media/atmel/atmel-isc-base.c >> index 9e5317a7d516..99e61bbfc9bc 100644 >> --- a/drivers/media/platform/atmel/atmel-isc-base.c >> +++ b/drivers/staging/media/atmel/atmel-isc-base.c >> @@ -1221,7 +1221,7 @@ static const struct v4l2_file_operations isc_fops = { >> .poll = vb2_fop_poll, >> }; >> >> -irqreturn_t isc_interrupt(int irq, void *dev_id) >> +irqreturn_t atmel_isc_interrupt(int irq, void *dev_id) >> { >> struct isc_device *isc = (struct isc_device *)dev_id; >> struct regmap *regmap = isc->regmap; >> @@ -1267,7 +1267,7 @@ irqreturn_t isc_interrupt(int irq, void *dev_id) >> >> return ret; >> } >> -EXPORT_SYMBOL_GPL(isc_interrupt); >> +EXPORT_SYMBOL_GPL(atmel_isc_interrupt); >> >> static void isc_hist_count(struct isc_device *isc, u32 *min, u32 *max) >> { >> @@ -1934,14 +1934,14 @@ static int isc_async_complete(struct v4l2_async_notifier *notifier) >> return ret; >> } >> >> -const struct v4l2_async_notifier_operations isc_async_ops = { >> +const struct v4l2_async_notifier_operations atmel_isc_async_ops = { >> .bound = isc_async_bound, >> .unbind = isc_async_unbind, >> .complete = isc_async_complete, >> }; >> -EXPORT_SYMBOL_GPL(isc_async_ops); >> +EXPORT_SYMBOL_GPL(atmel_isc_async_ops); >> >> -void isc_subdev_cleanup(struct isc_device *isc) >> +void atmel_isc_subdev_cleanup(struct isc_device *isc) >> { >> struct isc_subdev_entity *subdev_entity; >> >> @@ -1952,9 +1952,9 @@ void isc_subdev_cleanup(struct isc_device *isc) >> >> INIT_LIST_HEAD(&isc->subdev_entities); >> } >> -EXPORT_SYMBOL_GPL(isc_subdev_cleanup); >> +EXPORT_SYMBOL_GPL(atmel_isc_subdev_cleanup); >> >> -int isc_pipeline_init(struct isc_device *isc) >> +int atmel_isc_pipeline_init(struct isc_device *isc) >> { >> struct device *dev = isc->dev; >> struct regmap *regmap = isc->regmap; >> @@ -1993,17 +1993,17 @@ int isc_pipeline_init(struct isc_device *isc) >> >> return 0; >> } >> -EXPORT_SYMBOL_GPL(isc_pipeline_init); >> +EXPORT_SYMBOL_GPL(atmel_isc_pipeline_init); >> >> /* regmap configuration */ >> #define ATMEL_ISC_REG_MAX 0xd5c >> -const struct regmap_config isc_regmap_config = { >> +const struct regmap_config atmel_isc_regmap_config = { >> .reg_bits = 32, >> .reg_stride = 4, >> .val_bits = 32, >> .max_register = ATMEL_ISC_REG_MAX, >> }; >> -EXPORT_SYMBOL_GPL(isc_regmap_config); >> +EXPORT_SYMBOL_GPL(atmel_isc_regmap_config); >> >> MODULE_AUTHOR("Songjun Wu"); >> MODULE_AUTHOR("Eugen Hristev"); >> diff --git a/drivers/media/platform/atmel/atmel-isc-clk.c b/drivers/staging/media/atmel/atmel-isc-clk.c >> similarity index 97% >> rename from drivers/media/platform/atmel/atmel-isc-clk.c >> rename to drivers/staging/media/atmel/atmel-isc-clk.c >> index 2059fe376b00..d442b5f4c931 100644 >> --- a/drivers/media/platform/atmel/atmel-isc-clk.c >> +++ b/drivers/staging/media/atmel/atmel-isc-clk.c >> @@ -277,7 +277,7 @@ static int isc_clk_register(struct isc_device *isc, unsigned int id) >> return 0; >> } >> >> -int isc_clk_init(struct isc_device *isc) >> +int atmel_isc_clk_init(struct isc_device *isc) >> { >> unsigned int i; >> int ret; >> @@ -293,9 +293,9 @@ int isc_clk_init(struct isc_device *isc) >> >> return 0; >> } >> -EXPORT_SYMBOL_GPL(isc_clk_init); >> +EXPORT_SYMBOL_GPL(atmel_isc_clk_init); >> >> -void isc_clk_cleanup(struct isc_device *isc) >> +void atmel_isc_clk_cleanup(struct isc_device *isc) >> { >> unsigned int i; >> >> @@ -308,4 +308,4 @@ void isc_clk_cleanup(struct isc_device *isc) >> clk_unregister(isc_clk->clk); >> } >> } >> -EXPORT_SYMBOL_GPL(isc_clk_cleanup); >> +EXPORT_SYMBOL_GPL(atmel_isc_clk_cleanup); >> diff --git a/drivers/media/platform/atmel/atmel-isc-regs.h b/drivers/staging/media/atmel/atmel-isc-regs.h >> similarity index 100% >> rename from drivers/media/platform/atmel/atmel-isc-regs.h >> rename to drivers/staging/media/atmel/atmel-isc-regs.h >> diff --git a/drivers/media/platform/atmel/atmel-isc.h b/drivers/staging/media/atmel/atmel-isc.h >> similarity index 96% >> rename from drivers/media/platform/atmel/atmel-isc.h >> rename to drivers/staging/media/atmel/atmel-isc.h >> index ff60ba020cb9..dfc030b5a08f 100644 >> --- a/drivers/media/platform/atmel/atmel-isc.h >> +++ b/drivers/staging/media/atmel/atmel-isc.h >> @@ -350,13 +350,13 @@ struct isc_device { >> u32 formats_list_size; >> }; >> >> -extern const struct regmap_config isc_regmap_config; >> -extern const struct v4l2_async_notifier_operations isc_async_ops; >> - >> -irqreturn_t isc_interrupt(int irq, void *dev_id); >> -int isc_pipeline_init(struct isc_device *isc); >> -int isc_clk_init(struct isc_device *isc); >> -void isc_subdev_cleanup(struct isc_device *isc); >> -void isc_clk_cleanup(struct isc_device *isc); >> +extern const struct regmap_config atmel_isc_regmap_config; >> +extern const struct v4l2_async_notifier_operations atmel_isc_async_ops; >> + >> +irqreturn_t atmel_isc_interrupt(int irq, void *dev_id); >> +int atmel_isc_pipeline_init(struct isc_device *isc); >> +int atmel_isc_clk_init(struct isc_device *isc); >> +void atmel_isc_subdev_cleanup(struct isc_device *isc); >> +void atmel_isc_clk_cleanup(struct isc_device *isc); >> >> #endif >> diff --git a/drivers/media/platform/atmel/atmel-sama5d2-isc.c b/drivers/staging/media/atmel/atmel-sama5d2-isc.c >> similarity index 97% >> rename from drivers/media/platform/atmel/atmel-sama5d2-isc.c >> rename to drivers/staging/media/atmel/atmel-sama5d2-isc.c >> index 9881d89a645b..ba0614f981a2 100644 >> --- a/drivers/media/platform/atmel/atmel-sama5d2-isc.c >> +++ b/drivers/staging/media/atmel/atmel-sama5d2-isc.c >> @@ -408,7 +408,7 @@ static int atmel_isc_probe(struct platform_device *pdev) >> if (IS_ERR(io_base)) >> return PTR_ERR(io_base); >> >> - isc->regmap = devm_regmap_init_mmio(dev, io_base, &isc_regmap_config); >> + isc->regmap = devm_regmap_init_mmio(dev, io_base, &atmel_isc_regmap_config); >> if (IS_ERR(isc->regmap)) { >> ret = PTR_ERR(isc->regmap); >> dev_err(dev, "failed to init register map: %d\n", ret); >> @@ -419,7 +419,7 @@ static int atmel_isc_probe(struct platform_device *pdev) >> if (irq < 0) >> return irq; >> >> - ret = devm_request_irq(dev, irq, isc_interrupt, 0, >> + ret = devm_request_irq(dev, irq, atmel_isc_interrupt, 0, >> "atmel-sama5d2-isc", isc); >> if (ret < 0) { >> dev_err(dev, "can't register ISR for IRQ %u (ret=%i)\n", >> @@ -464,7 +464,7 @@ static int atmel_isc_probe(struct platform_device *pdev) >> /* sama5d2-isc : ISPCK is required and mandatory */ >> isc->ispck_required = true; >> >> - ret = isc_pipeline_init(isc); >> + ret = atmel_isc_pipeline_init(isc); >> if (ret) >> return ret; >> >> @@ -481,7 +481,7 @@ static int atmel_isc_probe(struct platform_device *pdev) >> return ret; >> } >> >> - ret = isc_clk_init(isc); >> + ret = atmel_isc_clk_init(isc); >> if (ret) { >> dev_err(dev, "failed to init isc clock: %d\n", ret); >> goto unprepare_hclk; >> @@ -523,7 +523,7 @@ static int atmel_isc_probe(struct platform_device *pdev) >> goto cleanup_subdev; >> } >> >> - subdev_entity->notifier.ops = &isc_async_ops; >> + subdev_entity->notifier.ops = &atmel_isc_async_ops; >> >> ret = v4l2_async_nf_register(&isc->v4l2_dev, >> &subdev_entity->notifier); >> @@ -567,7 +567,7 @@ static int atmel_isc_probe(struct platform_device *pdev) >> pm_runtime_disable(dev); >> >> cleanup_subdev: >> - isc_subdev_cleanup(isc); >> + atmel_isc_subdev_cleanup(isc); >> >> unregister_v4l2_device: >> v4l2_device_unregister(&isc->v4l2_dev); >> @@ -575,7 +575,7 @@ static int atmel_isc_probe(struct platform_device *pdev) >> unprepare_hclk: >> clk_disable_unprepare(isc->hclock); >> >> - isc_clk_cleanup(isc); >> + atmel_isc_clk_cleanup(isc); >> >> return ret; >> } >> @@ -586,14 +586,14 @@ static int atmel_isc_remove(struct platform_device *pdev) >> >> pm_runtime_disable(&pdev->dev); >> >> - isc_subdev_cleanup(isc); >> + atmel_isc_subdev_cleanup(isc); >> >> v4l2_device_unregister(&isc->v4l2_dev); >> >> clk_disable_unprepare(isc->ispck); >> clk_disable_unprepare(isc->hclock); >> >> - isc_clk_cleanup(isc); >> + atmel_isc_clk_cleanup(isc); >> >> return 0; >> } >> diff --git a/drivers/media/platform/atmel/atmel-sama7g5-isc.c b/drivers/staging/media/atmel/atmel-sama7g5-isc.c >> similarity index 97% >> rename from drivers/media/platform/atmel/atmel-sama7g5-isc.c >> rename to drivers/staging/media/atmel/atmel-sama7g5-isc.c >> index 8b11aa8340d7..01ababdfcbd9 100644 >> --- a/drivers/media/platform/atmel/atmel-sama7g5-isc.c >> +++ b/drivers/staging/media/atmel/atmel-sama7g5-isc.c >> @@ -397,7 +397,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) >> if (IS_ERR(io_base)) >> return PTR_ERR(io_base); >> >> - isc->regmap = devm_regmap_init_mmio(dev, io_base, &isc_regmap_config); >> + isc->regmap = devm_regmap_init_mmio(dev, io_base, &atmel_isc_regmap_config); >> if (IS_ERR(isc->regmap)) { >> ret = PTR_ERR(isc->regmap); >> dev_err(dev, "failed to init register map: %d\n", ret); >> @@ -408,7 +408,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) >> if (irq < 0) >> return irq; >> >> - ret = devm_request_irq(dev, irq, isc_interrupt, 0, >> + ret = devm_request_irq(dev, irq, atmel_isc_interrupt, 0, >> "microchip-sama7g5-xisc", isc); >> if (ret < 0) { >> dev_err(dev, "can't register ISR for IRQ %u (ret=%i)\n", >> @@ -453,7 +453,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) >> /* sama7g5-isc : ISPCK does not exist, ISC is clocked by MCK */ >> isc->ispck_required = false; >> >> - ret = isc_pipeline_init(isc); >> + ret = atmel_isc_pipeline_init(isc); >> if (ret) >> return ret; >> >> @@ -470,7 +470,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) >> return ret; >> } >> >> - ret = isc_clk_init(isc); >> + ret = atmel_isc_clk_init(isc); >> if (ret) { >> dev_err(dev, "failed to init isc clock: %d\n", ret); >> goto unprepare_hclk; >> @@ -513,7 +513,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) >> goto cleanup_subdev; >> } >> >> - subdev_entity->notifier.ops = &isc_async_ops; >> + subdev_entity->notifier.ops = &atmel_isc_async_ops; >> >> ret = v4l2_async_nf_register(&isc->v4l2_dev, >> &subdev_entity->notifier); >> @@ -536,7 +536,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) >> return 0; >> >> cleanup_subdev: >> - isc_subdev_cleanup(isc); >> + atmel_isc_subdev_cleanup(isc); >> >> unregister_v4l2_device: >> v4l2_device_unregister(&isc->v4l2_dev); >> @@ -544,7 +544,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) >> unprepare_hclk: >> clk_disable_unprepare(isc->hclock); >> >> - isc_clk_cleanup(isc); >> + atmel_isc_clk_cleanup(isc); >> >> return ret; >> } >> @@ -555,13 +555,13 @@ static int microchip_xisc_remove(struct platform_device *pdev) >> >> pm_runtime_disable(&pdev->dev); >> >> - isc_subdev_cleanup(isc); >> + atmel_isc_subdev_cleanup(isc); >> >> v4l2_device_unregister(&isc->v4l2_dev); >> >> clk_disable_unprepare(isc->hclock); >> >> - isc_clk_cleanup(isc); >> + atmel_isc_clk_cleanup(isc); >> >> return 0; >> } >