Message ID | 20230613075834.5219-1-zhuyinbo@loongson.cn |
---|---|
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp377273vqr; Tue, 13 Jun 2023 01:07:53 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4T9DR8a/NBYEL+DGP6QPgNd3sQHtWEL8Ta1SSbgfnotxbmmnzi5c4vkeJR4y4gM7FdEs3C X-Received: by 2002:a1f:4c81:0:b0:463:12f:d38e with SMTP id z123-20020a1f4c81000000b00463012fd38emr5804614vka.1.1686643673616; Tue, 13 Jun 2023 01:07:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686643673; cv=none; d=google.com; s=arc-20160816; b=yvUsTrwMvOxbwILr5yXbwEzFrgpLDJkW1/x/dmbsACqjh/QOg+dBlnuXTvggdlmbXC sMIYCwxif4A9YxQ22N/gbR7KhUk4IfE6ywBklhcQBh6MWn1Y+5oog16hrnUdCwgjuv+H vkhYiecHPC+cdry0Vx8R5jRjgOaFgFU7+b6yFsumWaHfxV078iE/iE25vZHKQ+7afKuT Wa4lA5M2yqRrlDurGgH9atilsYVjsR0HmpGuB3TmJEsXuEtpAk1YYzWENP0asGc9w+fL I/lsyLED3Wmcvl9aL3naTAQVdz9kh/InrPIJLhaSVdDs5g8Hg/crZO944yPFF+GIT9iW 5Wjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=AQirJZpndJRJ4nQnJag/arOeNappVGxLf9NVluNWMgs=; b=eJz0Bm5uEYH05v+D5fVFMXS4/QleEKTBQDycMa+Z90T2yQUbepVozqtcjiUryUypLT FgF3OqfQyCqydK9j4GJmXEMG8kTvrxEvqt536ovm2J5URqytXQ/MAUFGZ+3FguYbqXzt /6jjE0qw/PjOY6iZrEDYV1YLwITWJXYa+R6J6idF4rEOjL0+xEh7JKlbx4YT6liQWFN+ 0KNVJI3N96NO7TrNSIDFtVtTCStq9KVoW9wgR2RGYXVAuPpcC6atvBh4/yKHdLl3HLQL KOJ/Ft73GcigyhSEQM5joQg17z43NTC90kQePdS/Om+wINymLkLMncQYyVcQKRdBjn4R Uqug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v16-20020a63d550000000b00543c8ad57f1si4972368pgi.67.2023.06.13.01.07.41; Tue, 13 Jun 2023 01:07:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240682AbjFMIA3 (ORCPT <rfc822;rust.linux@gmail.com> + 99 others); Tue, 13 Jun 2023 04:00:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241290AbjFMIAH (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Tue, 13 Jun 2023 04:00:07 -0400 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 630BA2112; Tue, 13 Jun 2023 00:59:03 -0700 (PDT) Received: from loongson.cn (unknown [10.20.42.35]) by gateway (Coremail) with SMTP id _____8Dxi+qyIYhkXIMEAA--.9419S3; Tue, 13 Jun 2023 15:58:42 +0800 (CST) Received: from user-pc.202.106.0.20 (unknown [10.20.42.35]) by localhost.localdomain (Coremail) with SMTP id AQAAf8DxluSsIYhkdKsYAA--.5184S2; Tue, 13 Jun 2023 15:58:41 +0800 (CST) From: Yinbo Zhu <zhuyinbo@loongson.cn> To: Mark Brown <broonie@kernel.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, linux-spi@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Jianmin Lv <lvjianmin@loongson.cn>, wanghongliang@loongson.cn, Liu Peibao <liupeibao@loongson.cn>, loongson-kernel@lists.loongnix.cn, Yinbo Zhu <zhuyinbo@loongson.cn> Subject: [PATCH v13 0/2] spi: loongson: add bus driver for the loongson spi Date: Tue, 13 Jun 2023 15:58:32 +0800 Message-Id: <20230613075834.5219-1-zhuyinbo@loongson.cn> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: AQAAf8DxluSsIYhkdKsYAA--.5184S2 X-CM-SenderInfo: 52kx5xhqerqz5rrqw2lrqou0/ X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768574076285693570?= X-GMAIL-MSGID: =?utf-8?q?1768574076285693570?= |
Series |
spi: loongson: add bus driver for the loongson spi
|
|
Message
Yinbo Zhu
June 13, 2023, 7:58 a.m. UTC
Loongson platform support spi hardware controller and this series patch was to add spi driver and binding support. Change in v2: 1. This [PATCH v2 1/2] dt-bindings patch need depend on clk patch: https:// lore.kernel.org/all/20230307115022.12846-1-zhuyinbo@loongson.cn/ 2. Remove the clock-names in spi yaml file. 3. Add "loongson,ls7a-spi" compatible in spi yaml file. 4. Add an || COMPILE_TEST and drop && PCI then add some CONFIG_PCI macro to limit some pci code. 5. Make the spi driver top code comment block that use C++ style. 6. Drop spi->max_speed_hz. 7. Add a spin_lock for loongson_spi_setup. 8. Add a timeout and cpu_relax() in loongson_spi_write_read_8bit. 9. Add spi_transfer_one and drop transfer and rework entire spi driver that include some necessary changes. 10. Use module_init replace subsys_initcall. 11. About PM interface that I don't find any issue so I don't add any changes. Change in v3: 1. This [PATCH v3 1/2] dt-bindings patch need depend on clk patch: https:// lore.kernel.org/all/20230323025229.2971-1-zhuyinbo@loongson.cn/ 2. Drop the unused blank line in loongson,ls-spi.yaml file. 3. Replace clock minItems with clock maxItems in yaml file. 4. Separate spi driver into platform module, pci module and core module. 5. Replace DIV_ROUND_UP with DIV_ROUND_UP_ULL to fix compile error "undefined reference to `__aeabi_uldivmod'" and "__udivdi3 undefined" that reported by test robot. 6. Remove the spin lock. 7. Clear the loongson_spi->hz and loongson_spi->mode in setup to fixup the issue that multiple spi device transfer that maybe cause spi was be misconfigured. Change in v4: 1. This [PATCH v4 1/2] dt-bindings patch need depend on clk patch: https:// lore.kernel.org/all/20230323025229.2971-1-zhuyinbo@loongson.cn/ 2. Add "#include <linux/io.h>" in spi-loongson-core.c for fix the compile issue which devm_ioremap no declaration. 3. Add "EXPORT_SYMBOL_GPL(loongson_spi_dev_pm_ops)" in spi-loongson-core.c for fix the compile issue which loongson_spi_dev_pm_ops undefined. Change in v5: 1. Get rid of the clock patch's dependency and open-code the clock IDs. 2. Fixup checkpatch issue that by installed ply and gitpython package locally, but this series of patch's code doesn't have any change. Change in v6: 1. Remove the "#include <dt-bindings/clock/loongson,ls2k-clk.h>" in yaml file. Change in v7: 1. Remove the "loongson,ls7a-spi" and change yaml file name as "loongson,ls2k-spi.yaml". 2. Use module_pci_driver and module_platform_driver to replace module_init and module_exit. 3. Drop ".owner = THIS_MODULE" in spi platform driver. 4. Add devm_spi_alloc_master devm_spi_register_master to simplify code. 5. Add pci_disable_device() in loongson_spi_pci_unregister. Change in v8: 1. Add reviewed-by information for spi bindings patch. 2. Fixup the uncorrect spi yaml file path in MAINTAINERS file. 3. Add spi_master_suspend and spi_master_resume in spi pm function. Change in v9: 1. Make spi_master_suspend go first in pm suspend. Change in v10: 1. Fix the compile issue about of_node_get and of_get_property no declaration. 2. set config SPI_LOONGSON_CORE invisible. 3. Captial "spi" in commit log and Kconfig file. 4. Write header files in alphabetical order. 5. Use clamp_val, GENMASK() and BIT() in spi clock setting. 6. Optimize clock and mode setting code. 7. Use readb_poll_timeout in loongson_spi_write_read_8bit. 8. Remove some useless dmesg print. 9. Use device_set_node replace of_node_get. 10. Use dev_err_probe in code. 11. Use devm_clk_get_optional replace devm_clk_get. 12. Remove SPI_NO_CS for drop 2k500 non common type spi. 13. Use pcim_enable_device() and pcim_iomap_regions() in spi pci driver. 14. Passing the remapped address in loongson_spi_init_master. 15. Remove the useless goto flag "err_out". 16. Use pci vendor id in pci_ids.h. 17. Use devm_platform_ioremap_resource in spi platform driver. 18. Remove the useless item in pci_device_id. 19. Remove the inned comma in of_device_id. 20. Add some headfile in spi_loongson.h. 21. Remove the useless extern for loongson_spi_init_master in spi_loongson.h. Change in v11: 1. Use spi_get_chipselect() to replace all spi->chip_select in spi driver Change in v12: 1. Reword the dt-bindings patch title. 2. Use a specific spi compatible in dt-bindings and spi driver. 3. Add Cc list for the reviewers of the previous version. 4. Add a static for rdiv[12] array in loongson_spi_set_clk. 5. Fixup the compile warning for spi HZ that reported by robot. 6. Use "#define LOONGSON_... BIT(0)" in readb_poll_timeout. 7. Add a error code return that when write spi failed. 8. Use spi_controller* instead of spi_master* in all cases. 9. Check for the error first which for clock gain. 10. Drop the ->remove() in spi pci driver. 11. Drop the comma for the terminator entry in pci_device_id. 12. Adjust the head file in spi driver. 13. Use forward declarations for device and spi_controller. Change in v13: 1. Reword the dt-bindings patch title. 2. Add the items for compatible with 2k500 in dts-bindings. 3. Add a bit changes in commit log. 4. Add a Reviewed-by for spi driver patch. 5. Rework the function loongson_spi_set_cs. 6. Use GENMASK() to replace some constant in function loongson_spi_set_clk. 7. Add or remove some blank lines. 8. Use LOONGSON_SPI_PARA_MEM_EN replace a constant in loongson_spi_prepare_message. 9. Use SPI_MODE_X_MASK to replace "SPI_CPOL | SPI_CPHA". 10. Use USEC_PER_MSEC to replace MSEC_PER_SEC. Yinbo Zhu (2): spi: dt-bindings: add loongson spi spi: loongson: add bus driver for the loongson spi controller .../bindings/spi/loongson,ls2k-spi.yaml | 46 +++ MAINTAINERS | 10 + drivers/spi/Kconfig | 26 ++ drivers/spi/Makefile | 3 + drivers/spi/spi-loongson-core.c | 279 ++++++++++++++++++ drivers/spi/spi-loongson-pci.c | 55 ++++ drivers/spi/spi-loongson-plat.c | 47 +++ drivers/spi/spi-loongson.h | 49 +++ 8 files changed, 515 insertions(+)
Comments
On Tue, 13 Jun 2023 15:58:32 +0800, Yinbo Zhu wrote: > Loongson platform support spi hardware controller and this series patch > was to add spi driver and binding support. > > Change in v2: > 1. This [PATCH v2 1/2] dt-bindings patch need depend on clk patch: > https:// > lore.kernel.org/all/20230307115022.12846-1-zhuyinbo@loongson.cn/ > 2. Remove the clock-names in spi yaml file. > 3. Add "loongson,ls7a-spi" compatible in spi yaml file. > 4. Add an || COMPILE_TEST and drop && PCI then add some CONFIG_PCI > macro to limit some pci code. > 5. Make the spi driver top code comment block that use C++ style. > 6. Drop spi->max_speed_hz. > 7. Add a spin_lock for loongson_spi_setup. > 8. Add a timeout and cpu_relax() in loongson_spi_write_read_8bit. > 9. Add spi_transfer_one and drop transfer and rework entire spi > driver that include some necessary changes. > 10. Use module_init replace subsys_initcall. > 11. About PM interface that I don't find any issue so I don't add > any changes. > Change in v3: > 1. This [PATCH v3 1/2] dt-bindings patch need depend on clk patch: > https:// > lore.kernel.org/all/20230323025229.2971-1-zhuyinbo@loongson.cn/ > 2. Drop the unused blank line in loongson,ls-spi.yaml file. > 3. Replace clock minItems with clock maxItems in yaml file. > 4. Separate spi driver into platform module, pci module and core > module. > 5. Replace DIV_ROUND_UP with DIV_ROUND_UP_ULL to fix compile error > "undefined reference to `__aeabi_uldivmod'" and "__udivdi3 undefined" > that reported by test robot. > 6. Remove the spin lock. > 7. Clear the loongson_spi->hz and loongson_spi->mode in setup to fixup > the issue that multiple spi device transfer that maybe cause spi was > be misconfigured. > Change in v4: > 1. This [PATCH v4 1/2] dt-bindings patch need depend on clk patch: > https:// > lore.kernel.org/all/20230323025229.2971-1-zhuyinbo@loongson.cn/ > 2. Add "#include <linux/io.h>" in spi-loongson-core.c for fix the compile > issue which devm_ioremap no declaration. > 3. Add "EXPORT_SYMBOL_GPL(loongson_spi_dev_pm_ops)" in > spi-loongson-core.c for fix the compile issue which > loongson_spi_dev_pm_ops undefined. > Change in v5: > 1. Get rid of the clock patch's dependency and open-code the clock IDs. > 2. Fixup checkpatch issue that by installed ply and gitpython package > locally, but this series of patch's code doesn't have any change. > Change in v6: > 1. Remove the "#include <dt-bindings/clock/loongson,ls2k-clk.h>" in > yaml file. > Change in v7: > 1. Remove the "loongson,ls7a-spi" and change yaml file name as > "loongson,ls2k-spi.yaml". > 2. Use module_pci_driver and module_platform_driver to replace > module_init and module_exit. > 3. Drop ".owner = THIS_MODULE" in spi platform driver. > 4. Add devm_spi_alloc_master devm_spi_register_master to simplify code. > 5. Add pci_disable_device() in loongson_spi_pci_unregister. > Change in v8: > 1. Add reviewed-by information for spi bindings patch. > 2. Fixup the uncorrect spi yaml file path in MAINTAINERS file. > 3. Add spi_master_suspend and spi_master_resume in spi pm function. > Change in v9: > 1. Make spi_master_suspend go first in pm suspend. > Change in v10: > 1. Fix the compile issue about of_node_get and of_get_property no > declaration. > 2. set config SPI_LOONGSON_CORE invisible. > 3. Captial "spi" in commit log and Kconfig file. > 4. Write header files in alphabetical order. > 5. Use clamp_val, GENMASK() and BIT() in spi clock setting. > 6. Optimize clock and mode setting code. > 7. Use readb_poll_timeout in loongson_spi_write_read_8bit. > 8. Remove some useless dmesg print. > 9. Use device_set_node replace of_node_get. > 10. Use dev_err_probe in code. > 11. Use devm_clk_get_optional replace devm_clk_get. > 12. Remove SPI_NO_CS for drop 2k500 non common type spi. > 13. Use pcim_enable_device() and pcim_iomap_regions() in spi pci > driver. > 14. Passing the remapped address in loongson_spi_init_master. > 15. Remove the useless goto flag "err_out". > 16. Use pci vendor id in pci_ids.h. > 17. Use devm_platform_ioremap_resource in spi platform driver. > 18. Remove the useless item in pci_device_id. > 19. Remove the inned comma in of_device_id. > 20. Add some headfile in spi_loongson.h. > 21. Remove the useless extern for loongson_spi_init_master in > spi_loongson.h. > Change in v11: > 1. Use spi_get_chipselect() to replace all spi->chip_select in > spi driver > Change in v12: > 1. Reword the dt-bindings patch title. > 2. Use a specific spi compatible in dt-bindings and spi driver. > 3. Add Cc list for the reviewers of the previous version. > 4. Add a static for rdiv[12] array in loongson_spi_set_clk. > 5. Fixup the compile warning for spi HZ that reported by robot. > 6. Use "#define LOONGSON_... BIT(0)" in readb_poll_timeout. > 7. Add a error code return that when write spi failed. > 8. Use spi_controller* instead of spi_master* in all cases. > 9. Check for the error first which for clock gain. > 10. Drop the ->remove() in spi pci driver. > 11. Drop the comma for the terminator entry in pci_device_id. > 12. Adjust the head file in spi driver. > 13. Use forward declarations for device and spi_controller. > Change in v13: > 1. Reword the dt-bindings patch title. > 2. Add the items for compatible with 2k500 in dts-bindings. > 3. Add a bit changes in commit log. > 4. Add a Reviewed-by for spi driver patch. > 5. Rework the function loongson_spi_set_cs. > 6. Use GENMASK() to replace some constant in function > loongson_spi_set_clk. > 7. Add or remove some blank lines. > 8. Use LOONGSON_SPI_PARA_MEM_EN replace a constant in > loongson_spi_prepare_message. > 9. Use SPI_MODE_X_MASK to replace "SPI_CPOL | SPI_CPHA". > 10. Use USEC_PER_MSEC to replace MSEC_PER_SEC. > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next Thanks! [1/2] spi: dt-bindings: add loongson spi commit: b350e6c6297aaa2533da23a21398751eeeecc101 [2/2] spi: loongson: add bus driver for the loongson spi controller commit: 6c7a864007b66e60a3f64858a9555efed408b048 All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark