diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile index 12185bc9e49508..216209f313c597 100644 --- a/drivers/firmware/Makefile +++ b/drivers/firmware/Makefile @@ -17,7 +17,7 @@ obj-$(CONFIG_ISCSI_IBFT) += iscsi_ibft.o obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o obj-$(CONFIG_MTK_ADSP_IPC) += mtk-adsp-ipc.o obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o -obj-$(CONFIG_FIRMWARE_RP1) += rp1.o +obj-$(CONFIG_FIRMWARE_RP1) += rp1-fw.o obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o obj-$(CONFIG_QCOM_SCM) += qcom-scm.o qcom-scm-objs += qcom_scm.o qcom_scm-smc.o qcom_scm-legacy.o diff --git a/drivers/firmware/rp1.c b/drivers/firmware/rp1-fw.c similarity index 100% rename from drivers/firmware/rp1.c rename to drivers/firmware/rp1-fw.c diff --git a/drivers/iio/adc/ad4134.c b/drivers/iio/adc/ad4134.c index 2a078f7e355259..ad2d7a293c7f52 100644 --- a/drivers/iio/adc/ad4134.c +++ b/drivers/iio/adc/ad4134.c @@ -566,3 +566,4 @@ module_exit(ad4134_exit); MODULE_AUTHOR("Cosmin Tanislav "); MODULE_DESCRIPTION("Analog Devices AD4134 SPI driver"); MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/ad4630.c b/drivers/iio/adc/ad4630.c index c4218198fc73af..ebe11a53168e09 100644 --- a/drivers/iio/adc/ad4630.c +++ b/drivers/iio/adc/ad4630.c @@ -1683,3 +1683,4 @@ MODULE_AUTHOR("Marcelo Schmitt "); MODULE_AUTHOR("Liviu Adace "); MODULE_DESCRIPTION("Analog Devices AD4630 and ADAQ4224 ADC family driver"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c index 9eaeaf1eb36a14..5d0f5246d72a03 100644 --- a/drivers/iio/adc/ad7768-1.c +++ b/drivers/iio/adc/ad7768-1.c @@ -966,3 +966,4 @@ module_spi_driver(ad7768_driver); MODULE_AUTHOR("Stefan Popa "); MODULE_DESCRIPTION("Analog Devices AD7768-1 ADC driver"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/ad7768.c b/drivers/iio/adc/ad7768.c index db4e46171fc1d7..43c1f6c1c82666 100644 --- a/drivers/iio/adc/ad7768.c +++ b/drivers/iio/adc/ad7768.c @@ -883,3 +883,4 @@ module_spi_driver(ad7768_driver); MODULE_AUTHOR("Stefan Popa "); MODULE_DESCRIPTION("Analog Devices AD7768 ADC"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/ad7944.c b/drivers/iio/adc/ad7944.c index 05a38adb99e2d8..bc53878dbae9bb 100644 --- a/drivers/iio/adc/ad7944.c +++ b/drivers/iio/adc/ad7944.c @@ -788,3 +788,4 @@ module_spi_driver(ad7944_driver); MODULE_AUTHOR("David Lechner "); MODULE_DESCRIPTION("Analog Devices AD7944 PulSAR ADC family driver"); MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/ad_adc.c b/drivers/iio/adc/ad_adc.c index 275c27fbe7d64d..b8daba9cbb4142 100644 --- a/drivers/iio/adc/ad_adc.c +++ b/drivers/iio/adc/ad_adc.c @@ -788,3 +788,4 @@ module_platform_driver(adc_driver); MODULE_AUTHOR("Dragos Bogdan "); MODULE_DESCRIPTION("Analog Devices ADC"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/ad_pulsar.c b/drivers/iio/adc/ad_pulsar.c index b3a9a5f3fdf736..38a23d233579e4 100644 --- a/drivers/iio/adc/ad_pulsar.c +++ b/drivers/iio/adc/ad_pulsar.c @@ -1010,3 +1010,4 @@ module_spi_driver(ad_pulsar_driver); MODULE_AUTHOR("Sergiu Cuciurean "); MODULE_DESCRIPTION("Analog Devices PulSAR ADC family driver"); MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/admc_adc.c b/drivers/iio/adc/admc_adc.c index 057df00195d97e..3dd1c0f9991710 100644 --- a/drivers/iio/adc/admc_adc.c +++ b/drivers/iio/adc/admc_adc.c @@ -227,3 +227,4 @@ module_platform_driver(axiadc_driver); MODULE_AUTHOR("Dragos Bogdan "); MODULE_DESCRIPTION("Analog Devices MC-ADC"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/admc_speed.c b/drivers/iio/adc/admc_speed.c index 935644a572214b..ff2060a9d6900e 100644 --- a/drivers/iio/adc/admc_speed.c +++ b/drivers/iio/adc/admc_speed.c @@ -222,3 +222,4 @@ module_platform_driver(axiadc_of_driver); MODULE_AUTHOR("Dragos Bogdan "); MODULE_DESCRIPTION("Analog Devices MC-Speed"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/cf_axi_adc_core.c b/drivers/iio/adc/cf_axi_adc_core.c index 1e597a05296be7..cb5716db8f1d07 100644 --- a/drivers/iio/adc/cf_axi_adc_core.c +++ b/drivers/iio/adc/cf_axi_adc_core.c @@ -1240,3 +1240,4 @@ module_platform_driver(axiadc_driver); MODULE_AUTHOR("Michael Hennerich "); MODULE_DESCRIPTION("Analog Devices ADI-AIM"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/adc/ltc2387.c b/drivers/iio/adc/ltc2387.c index 46f19952b79d28..7655dfc972b3cc 100644 --- a/drivers/iio/adc/ltc2387.c +++ b/drivers/iio/adc/ltc2387.c @@ -417,3 +417,4 @@ module_platform_driver(ltc2387_driver); MODULE_AUTHOR("Sergiu Cuciurean "); MODULE_DESCRIPTION("Linear Technology LTC2387 ADC"); MODULE_LICENSE("Dual BSD/GPL"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/dac/ad5791.c b/drivers/iio/dac/ad5791.c index 9af0ae913953cd..87377fe95798b7 100644 --- a/drivers/iio/dac/ad5791.c +++ b/drivers/iio/dac/ad5791.c @@ -661,3 +661,4 @@ module_spi_driver(ad5791_driver); MODULE_AUTHOR("Michael Hennerich "); MODULE_DESCRIPTION("Analog Devices AD5760/AD5780/AD5781/AD5790/AD5791 DAC"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/frequency/cf_axi_dds.c b/drivers/iio/frequency/cf_axi_dds.c index ef2275be1220de..8b2cd4e6d1c8dc 100644 --- a/drivers/iio/frequency/cf_axi_dds.c +++ b/drivers/iio/frequency/cf_axi_dds.c @@ -2674,3 +2674,4 @@ module_platform_driver(cf_axi_dds_driver); MODULE_AUTHOR("Michael Hennerich "); MODULE_DESCRIPTION("Analog Devices DDS"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/frequency/m2k-dac.c b/drivers/iio/frequency/m2k-dac.c index 2ff5c1b9b9edbf..bf8b65fe8d7090 100644 --- a/drivers/iio/frequency/m2k-dac.c +++ b/drivers/iio/frequency/m2k-dac.c @@ -861,3 +861,4 @@ module_platform_driver(m2k_dac_driver); MODULE_AUTHOR("Lars-Peter Clausen "); MODULE_DESCRIPTION("Analog Devices M2K DAC driver"); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/iio/imu/adis16550.c b/drivers/iio/imu/adis16550.c index 4ca6a059c0da71..8948b7063377d7 100644 --- a/drivers/iio/imu/adis16550.c +++ b/drivers/iio/imu/adis16550.c @@ -1154,5 +1154,5 @@ MODULE_AUTHOR("Ramona Gradinariu "); MODULE_AUTHOR("Antoniu Miclaus "); MODULE_AUTHOR("Robert Budai "); MODULE_DESCRIPTION("Analog Devices ADIS16550 IMU driver"); -MODULE_IMPORT_NS("IIO_ADISLIB"); +MODULE_IMPORT_NS(IIO_ADISLIB); MODULE_LICENSE("GPL"); diff --git a/drivers/iio/logic/m2k-logic-analyzer.c b/drivers/iio/logic/m2k-logic-analyzer.c index 3a8ef4429ceb40..afd577a12162cc 100644 --- a/drivers/iio/logic/m2k-logic-analyzer.c +++ b/drivers/iio/logic/m2k-logic-analyzer.c @@ -1163,3 +1163,4 @@ module_platform_driver(m2k_la_driver); MODULE_AUTHOR(""); MODULE_DESCRIPTION(""); MODULE_LICENSE("GPL v2"); +MODULE_IMPORT_NS(IIO_DMAENGINE_BUFFER); diff --git a/drivers/pwm/pwm-pio-rp1.c b/drivers/pwm/pwm-pio-rp1.c index 9bed7ba8719718..867510d8c52236 100644 --- a/drivers/pwm/pwm-pio-rp1.c +++ b/drivers/pwm/pwm-pio-rp1.c @@ -30,8 +30,8 @@ struct pwm_pio_rp1 { uint sm; uint offset; uint gpio; - uint32_t period; /* In SM cycles */ - uint32_t duty_cycle; /* In SM cycles */ + uint32_t period; /* In SM cycles */ + uint32_t duty_cycle; /* In SM cycles */ enum pwm_polarity polarity; bool enabled; }; @@ -42,7 +42,7 @@ struct pwm_pio_rp1 { #define pwm_loop_ticks 3 static const uint16_t pwm_program_instructions[] = { - // .wrap_target + // .wrap_target 0x9080, // 0: pull noblock side 0 0xa027, // 1: mov x, osr 0xa046, // 2: mov y, isr @@ -50,7 +50,7 @@ static const uint16_t pwm_program_instructions[] = { 0x1806, // 4: jmp 6 side 1 0xa042, // 5: nop 0x0083, // 6: jmp y--, 3 - // .wrap + // .wrap }; static const struct pio_program pwm_program = { @@ -96,7 +96,7 @@ static void pio_pwm_set_level(PIO pio, uint sm, uint32_t level) } static int pwm_pio_rp1_apply(struct pwm_chip *chip, struct pwm_device *pwm, - const struct pwm_state *state) + const struct pwm_state *state) { struct pwm_pio_rp1 *ppwm = container_of(chip, struct pwm_pio_rp1, chip); uint32_t new_duty_cycle; @@ -131,8 +131,10 @@ static int pwm_pio_rp1_apply(struct pwm_chip *chip, struct pwm_device *pwm, if (state->polarity != ppwm->polarity) { pio_gpio_set_outover(ppwm->pio, ppwm->gpio, - (state->polarity == PWM_POLARITY_INVERSED) ? - GPIO_OVERRIDE_INVERT : GPIO_OVERRIDE_NORMAL); + (state->polarity == + PWM_POLARITY_INVERSED) ? + GPIO_OVERRIDE_INVERT : + GPIO_OVERRIDE_NORMAL); ppwm->polarity = state->polarity; } @@ -159,11 +161,11 @@ static int pwm_pio_rp1_probe(struct platform_device *pdev) struct pwm_chip *chip; bool is_rp1; - ppwm = devm_kzalloc(dev, sizeof(*ppwm), GFP_KERNEL); - if (IS_ERR(ppwm)) - return PTR_ERR(ppwm); + chip = devm_pwmchip_alloc(dev, 1, sizeof(*ppwm)); + if (IS_ERR(chip)) + return PTR_ERR(chip); - chip = &ppwm->chip; + ppwm = pwmchip_get_drvdata(chip); mutex_init(&ppwm->mutex); @@ -182,8 +184,7 @@ static int pwm_pio_rp1_probe(struct platform_device *pdev) is_rp1 = of_device_is_compatible(of_args.np, "raspberrypi,rp1-gpio"); of_node_put(of_args.np); if (!is_rp1 || of_args.args_count != 2) - return dev_err_probe(dev, -EINVAL, - "not an RP1 gpio\n"); + return dev_err_probe(dev, -EINVAL, "not an RP1 gpio\n"); ppwm->gpio = of_args.args[0]; @@ -196,8 +197,7 @@ static int pwm_pio_rp1_probe(struct platform_device *pdev) ppwm->sm = pio_claim_unused_sm(ppwm->pio, false); if ((int)ppwm->sm < 0) { pio_close(ppwm->pio); - return dev_err_probe(dev, -EBUSY, - "%pfw: no free PIO SM\n", + return dev_err_probe(dev, -EBUSY, "%pfw: no free PIO SM\n", dev_fwnode(dev)); } @@ -211,9 +211,9 @@ static int pwm_pio_rp1_probe(struct platform_device *pdev) pwm_program_init(ppwm->pio, ppwm->sm, ppwm->offset, ppwm->gpio); - pwm_pio_resolution = (1000u * 1000 * 1000 * pwm_loop_ticks) / clock_get_hz(clk_sys); + pwm_pio_resolution = + (1000u * 1000 * 1000 * pwm_loop_ticks) / clock_get_hz(clk_sys); - chip->dev = dev; chip->ops = &pwm_pio_rp1_ops; chip->atomic = true; chip->npwm = 1; @@ -223,11 +223,13 @@ static int pwm_pio_rp1_probe(struct platform_device *pdev) return devm_pwmchip_add(dev, chip); } -static void pwm_pio_rp1_remove(struct platform_device *pdev) +static int pwm_pio_rp1_remove(struct platform_device *pdev) { struct pwm_pio_rp1 *ppwm = platform_get_drvdata(pdev); pio_close(ppwm->pio); + + return 0; } static const struct of_device_id pwm_pio_rp1_dt_ids[] = { @@ -237,13 +239,13 @@ static const struct of_device_id pwm_pio_rp1_dt_ids[] = { MODULE_DEVICE_TABLE(of, pwm_pio_rp1_dt_ids); static struct platform_driver pwm_pio_rp1_driver = { - .driver = { - .name = "pwm-pio-rp1", - .of_match_table = pwm_pio_rp1_dt_ids, - }, - .probe = pwm_pio_rp1_probe, - .remove_new = pwm_pio_rp1_remove, -}; + .driver = { + .name = "pwm-pio-rp1", + .of_match_table = pwm_pio_rp1_dt_ids, + }, + .probe = pwm_pio_rp1_probe, + .remove = pwm_pio_rp1_remove, + }; module_platform_driver(pwm_pio_rp1_driver); MODULE_DESCRIPTION("PWM PIO RP1 driver"); diff --git a/drivers/pwm/pwm-rp1.c b/drivers/pwm/pwm-rp1.c index 40ce14412817a9..dfbe7bb3a4d363 100644 --- a/drivers/pwm/pwm-rp1.c +++ b/drivers/pwm/pwm-rp1.c @@ -34,15 +34,13 @@ #define PWM_MODE_MASK GENMASK(1, 0) struct rp1_pwm { - struct pwm_chip chip; - struct device *dev; void __iomem *base; struct clk *clk; }; static inline struct rp1_pwm *to_rp1_pwm(struct pwm_chip *chip) { - return container_of(chip, struct rp1_pwm, chip); + return pwmchip_get_drvdata(chip); } static void rp1_pwm_apply_config(struct pwm_chip *chip, struct pwm_device *pwm) @@ -83,7 +81,7 @@ static int rp1_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, u32 value; if (!clk_rate) { - dev_err(pc->dev, "failed to get clock rate\n"); + dev_err(&chip->dev, "failed to get clock rate\n"); return -EINVAL; } @@ -122,45 +120,34 @@ static const struct pwm_ops rp1_pwm_ops = { .request = rp1_pwm_request, .free = rp1_pwm_free, .apply = rp1_pwm_apply, - .owner = THIS_MODULE, }; static int rp1_pwm_probe(struct platform_device *pdev) { + struct pwm_chip *chip; struct rp1_pwm *pc; - struct resource *res; int ret; - pc = devm_kzalloc(&pdev->dev, sizeof(*pc), GFP_KERNEL); - if (!pc) - return -ENOMEM; + chip = devm_pwmchip_alloc(&pdev->dev, 4, sizeof(*pc)); - pc->dev = &pdev->dev; + if (IS_ERR(chip)) + return PTR_ERR(chip); - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - pc->base = devm_ioremap_resource(&pdev->dev, res); + pc = to_rp1_pwm(chip); + + pc->base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(pc->base)) return PTR_ERR(pc->base); - pc->clk = devm_clk_get(&pdev->dev, NULL); + pc->clk = devm_clk_get_enabled(&pdev->dev, NULL); if (IS_ERR(pc->clk)) return dev_err_probe(&pdev->dev, PTR_ERR(pc->clk), "clock not found\n"); - ret = clk_prepare_enable(pc->clk); - if (ret) - return ret; - - pc->chip.dev = &pdev->dev; - pc->chip.ops = &rp1_pwm_ops; - pc->chip.base = -1; - pc->chip.npwm = 4; - pc->chip.of_xlate = of_pwm_xlate_with_flags; - pc->chip.of_pwm_n_cells = 3; + chip->ops = &rp1_pwm_ops; + chip->of_xlate = of_pwm_xlate_with_flags; - platform_set_drvdata(pdev, pc); - - ret = pwmchip_add(&pc->chip); + ret = devm_pwmchip_add(&pdev->dev, chip); if (ret < 0) goto add_fail; @@ -177,8 +164,6 @@ static int rp1_pwm_remove(struct platform_device *pdev) clk_disable_unprepare(pc->clk); - pwmchip_remove(&pc->chip); - return 0; }