Message ID | 20200526093604.11846-7-vigneshr@ti.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | mtd: spi-nor: Move cadence-qaudspi to spi-mem framework | expand |
Hi Vignesh,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on spi/for-next]
[also build test WARNING on linus/master v5.7-rc7 next-20200526]
[cannot apply to mtd/master]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Vignesh-Raghavendra/mtd-spi-nor-Move-cadence-qaudspi-to-spi-mem-framework/20200526-174159
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=xtensa
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
In file included from include/linux/err.h:5,
from include/linux/clk.h:12,
from drivers/spi/spi-cadence-quadspi.c:9:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/xtensa/include/asm/page.h:193:9: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
193 | ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr)
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
arch/xtensa/include/asm/page.h:201:32: note: in expansion of macro 'pfn_valid'
201 | #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
| ^~~~~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
In file included from ./arch/xtensa/include/generated/asm/bug.h:1,
from include/linux/bug.h:5,
from include/linux/thread_info.h:12,
from arch/xtensa/include/asm/current.h:18,
from include/linux/mutex.h:14,
from include/linux/notifier.h:14,
from include/linux/clk.h:14,
from drivers/spi/spi-cadence-quadspi.c:9:
include/linux/dma-mapping.h: In function 'dma_map_resource':
arch/xtensa/include/asm/page.h:193:9: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
193 | ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr)
| ^~
include/asm-generic/bug.h:139:27: note: in definition of macro 'WARN_ON_ONCE'
139 | int __ret_warn_once = !!(condition); | ^~~~~~~~~
include/linux/dma-mapping.h:352:19: note: in expansion of macro 'pfn_valid'
352 | if (WARN_ON_ONCE(pfn_valid(PHYS_PFN(phys_addr))))
| ^~~~~~~~~
In file included from include/linux/shm.h:6,
from include/linux/sched.h:16,
from include/linux/ratelimit.h:6,
from include/linux/dev_printk.h:16,
from include/linux/device.h:15,
from include/linux/dma-mapping.h:7,
from drivers/spi/spi-cadence-quadspi.c:12:
drivers/spi/spi-cadence-quadspi.c: In function 'cqspi_direct_read_execute':
arch/xtensa/include/asm/page.h:193:9: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
193 | ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr)
| ^~
arch/xtensa/include/asm/page.h:201:32: note: in expansion of macro 'pfn_valid'
201 | #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
| ^~~~~~~~~
>> drivers/spi/spi-cadence-quadspi.c:911:26: note: in expansion of macro 'virt_addr_valid'
911 | if (!cqspi->rx_chan || !virt_addr_valid(buf)) {
| ^~~~~~~~~~~~~~~
vim +/virt_addr_valid +911 drivers/spi/spi-cadence-quadspi.c
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 898
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 899 static int cqspi_direct_read_execute(struct cqspi_flash_pdata *f_pdata,
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 900 u_char *buf, loff_t from, size_t len)
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 901 {
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 902 struct cqspi_st *cqspi = f_pdata->cqspi;
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 903 struct device *dev = &cqspi->pdev->dev;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 904 enum dma_ctrl_flags flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 905 dma_addr_t dma_src = (dma_addr_t)cqspi->mmap_phys_base + from;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 906 int ret = 0;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 907 struct dma_async_tx_descriptor *tx;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 908 dma_cookie_t cookie;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 909 dma_addr_t dma_dst;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 910
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 @911 if (!cqspi->rx_chan || !virt_addr_valid(buf)) {
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 912 memcpy_fromio(buf, cqspi->ahb_base + from, len);
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 913 return 0;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 914 }
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 915
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 916 dma_dst = dma_map_single(dev, buf, len, DMA_FROM_DEVICE);
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 917 if (dma_mapping_error(dev, dma_dst)) {
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 918 dev_err(dev, "dma mapping failed\n");
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 919 return -ENOMEM;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 920 }
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 921 tx = dmaengine_prep_dma_memcpy(cqspi->rx_chan, dma_dst, dma_src,
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 922 len, flags);
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 923 if (!tx) {
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 924 dev_err(dev, "device_prep_dma_memcpy error\n");
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 925 ret = -EIO;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 926 goto err_unmap;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 927 }
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 928
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 929 tx->callback = cqspi_rx_dma_callback;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 930 tx->callback_param = cqspi;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 931 cookie = tx->tx_submit(tx);
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 932 reinit_completion(&cqspi->rx_dma_complete);
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 933
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 934 ret = dma_submit_error(cookie);
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 935 if (ret) {
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 936 dev_err(dev, "dma_submit_error %d\n", cookie);
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 937 ret = -EIO;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 938 goto err_unmap;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 939 }
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 940
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 941 dma_async_issue_pending(cqspi->rx_chan);
3938c0d4cf6047 drivers/mtd/spi-nor/cadence-quadspi.c Nicholas Mc Guire 2018-07-21 942 if (!wait_for_completion_timeout(&cqspi->rx_dma_complete,
3938c0d4cf6047 drivers/mtd/spi-nor/cadence-quadspi.c Nicholas Mc Guire 2018-07-21 943 msecs_to_jiffies(len))) {
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 944 dmaengine_terminate_sync(cqspi->rx_chan);
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 945 dev_err(dev, "DMA wait_for_completion_timeout\n");
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 946 ret = -ETIMEDOUT;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 947 goto err_unmap;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 948 }
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 949
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 950 err_unmap:
d467c948c5d40f drivers/mtd/spi-nor/controllers/cadence-quadspi.c Ramuthevar Vadivel Murugan 2020-05-26 951 dma_unmap_single(dev, dma_dst, len, DMA_FROM_DEVICE);
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 952
91d7b67000c6e9 drivers/mtd/spi-nor/cadence-quadspi.c Christophe JAILLET 2018-10-16 953 return ret;
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 954 }
ffa639e069fb55 drivers/mtd/spi-nor/cadence-quadspi.c Vignesh R 2018-04-10 955
:::::: The code at line 911 was first introduced by commit
:::::: ffa639e069fb55a150a2f14af6762b2c429e6d50 mtd: spi-nor: cadence-quadspi: Add DMA support for direct mode reads
:::::: TO: Vignesh R <vigneshr@ti.com>
:::::: CC: Boris Brezillon <boris.brezillon@bootlin.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi, On 28/05/20 2:28 am, kbuild test robot wrote: > Hi Vignesh, > [...] > > In file included from include/linux/err.h:5, > from include/linux/clk.h:12, > from drivers/spi/spi-cadence-quadspi.c:9: > include/linux/scatterlist.h: In function 'sg_set_buf': > arch/xtensa/include/asm/page.h:193:9: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] > 193 | ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr) > | ^~ > include/linux/compiler.h:78:42: note: in definition of macro 'unlikely' > 78 | # define unlikely(x) __builtin_expect(!!(x), 0) > | ^ > include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON' > 143 | BUG_ON(!virt_addr_valid(buf)); > | ^~~~~~ > arch/xtensa/include/asm/page.h:201:32: note: in expansion of macro 'pfn_valid' > 201 | #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) > | ^~~~~~~~~ > include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid' > 143 | BUG_ON(!virt_addr_valid(buf)); > | ^~~~~~~~~~~~~~~ > In file included from ./arch/xtensa/include/generated/asm/bug.h:1, > from include/linux/bug.h:5, > from include/linux/thread_info.h:12, > from arch/xtensa/include/asm/current.h:18, > from include/linux/mutex.h:14, > from include/linux/notifier.h:14, > from include/linux/clk.h:14, > from drivers/spi/spi-cadence-quadspi.c:9: > include/linux/dma-mapping.h: In function 'dma_map_resource': > arch/xtensa/include/asm/page.h:193:9: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] > 193 | ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr) > | ^~ > include/asm-generic/bug.h:139:27: note: in definition of macro 'WARN_ON_ONCE' > 139 | int __ret_warn_once = !!(condition); | ^~~~~~~~~ > include/linux/dma-mapping.h:352:19: note: in expansion of macro 'pfn_valid' > 352 | if (WARN_ON_ONCE(pfn_valid(PHYS_PFN(phys_addr)))) > | ^~~~~~~~~ > In file included from include/linux/shm.h:6, > from include/linux/sched.h:16, > from include/linux/ratelimit.h:6, > from include/linux/dev_printk.h:16, > from include/linux/device.h:15, > from include/linux/dma-mapping.h:7, > from drivers/spi/spi-cadence-quadspi.c:12: > drivers/spi/spi-cadence-quadspi.c: In function 'cqspi_direct_read_execute': > arch/xtensa/include/asm/page.h:193:9: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] > 193 | ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr) > | ^~ > arch/xtensa/include/asm/page.h:201:32: note: in expansion of macro 'pfn_valid' > 201 | #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) > | ^~~~~~~~~ >>> drivers/spi/spi-cadence-quadspi.c:911:26: note: in expansion of macro 'virt_addr_valid' > 911 | if (!cqspi->rx_chan || !virt_addr_valid(buf)) { > | ^~~~~~~~~~~~~~~ Thanks for the report! But it seems with ARCH=xtensa and config that was attached, I see above warning for every file in the kernel that uses virt_addr_valid(), So, the fix for this warning is really in xtensa arch code and therefore should not block this series from being merged. Regards Vignesh
On Tuesday, May 26, 2020 12:36:04 PM EEST Vignesh Raghavendra wrote: > From: Ramuthevar Vadivel Murugan > <vadivel.muruganx.ramuthevar@linux.intel.com> > > Now that cadence-quadspi has been converted to use spi-mem framework, > move it under drivers/spi/ > > Update license header to match SPI subsystem style > > Signed-off-by: Ramuthevar Vadivel Murugan > <vadivel.muruganx.ramuthevar@linux.intel.com> Signed-off-by: Vignesh > Raghavendra <vigneshr@ti.com> > --- > drivers/mtd/spi-nor/controllers/Kconfig | 11 ----------- > drivers/mtd/spi-nor/controllers/Makefile | 1 - > drivers/spi/Kconfig | 11 +++++++++++ > drivers/spi/Makefile | 1 + > .../spi-cadence-quadspi.c} | 14 +++++++------- > 5 files changed, 19 insertions(+), 19 deletions(-) > rename drivers/{mtd/spi-nor/controllers/cadence-quadspi.c => > spi/spi-cadence-quadspi.c} (99%) I get a conflict when applying this on top of spi-nor/next.
diff --git a/drivers/mtd/spi-nor/controllers/Kconfig b/drivers/mtd/spi-nor/controllers/Kconfig index 10b86660b821..95fcd4b435be 100644 --- a/drivers/mtd/spi-nor/controllers/Kconfig +++ b/drivers/mtd/spi-nor/controllers/Kconfig @@ -9,17 +9,6 @@ config SPI_ASPEED_SMC and support for the SPI flash memory controller (SPI) for the host firmware. The implementation only supports SPI NOR. -config SPI_CADENCE_QUADSPI - tristate "Cadence Quad SPI controller" - depends on OF && (ARM || ARM64 || COMPILE_TEST) - help - Enable support for the Cadence Quad SPI Flash controller. - - Cadence QSPI is a specialized controller for connecting an SPI - Flash over 1/2/4-bit wide bus. Enable this option if you have a - device with a Cadence QSPI controller and want to access the - Flash as an MTD device. - config SPI_HISI_SFC tristate "Hisilicon FMC SPI-NOR Flash Controller(SFC)" depends on ARCH_HISI || COMPILE_TEST diff --git a/drivers/mtd/spi-nor/controllers/Makefile b/drivers/mtd/spi-nor/controllers/Makefile index 46e6fbe586e3..e7abba491d98 100644 --- a/drivers/mtd/spi-nor/controllers/Makefile +++ b/drivers/mtd/spi-nor/controllers/Makefile @@ -1,6 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_SPI_ASPEED_SMC) += aspeed-smc.o -obj-$(CONFIG_SPI_CADENCE_QUADSPI) += cadence-quadspi.o obj-$(CONFIG_SPI_HISI_SFC) += hisi-sfc.o obj-$(CONFIG_SPI_NXP_SPIFI) += nxp-spifi.o obj-$(CONFIG_SPI_INTEL_SPI) += intel-spi.o diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index 099d6a75a371..2de8098b26c1 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig @@ -200,6 +200,17 @@ config SPI_CADENCE This selects the Cadence SPI controller master driver used by Xilinx Zynq and ZynqMP. +config SPI_CADENCE_QUADSPI + tristate "Cadence Quad SPI controller" + depends on OF && (ARM || ARM64 || COMPILE_TEST) + help + Enable support for the Cadence Quad SPI Flash controller. + + Cadence QSPI is a specialized controller for connecting an SPI + Flash over 1/2/4-bit wide bus. Enable this option if you have a + device with a Cadence QSPI controller and want to access the + Flash as an MTD device. + config SPI_CLPS711X tristate "CLPS711X host SPI controller" depends on ARCH_CLPS711X || COMPILE_TEST diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile index 889368f4ad53..f03834d1d312 100644 --- a/drivers/spi/Makefile +++ b/drivers/spi/Makefile @@ -31,6 +31,7 @@ obj-$(CONFIG_SPI_BCM_QSPI) += spi-iproc-qspi.o spi-brcmstb-qspi.o spi-bcm-qspi. obj-$(CONFIG_SPI_BITBANG) += spi-bitbang.o obj-$(CONFIG_SPI_BUTTERFLY) += spi-butterfly.o obj-$(CONFIG_SPI_CADENCE) += spi-cadence.o +obj-$(CONFIG_SPI_CADENCE_QUADSPI) += spi-cadence-quadspi.o obj-$(CONFIG_SPI_CLPS711X) += spi-clps711x.o obj-$(CONFIG_SPI_COLDFIRE_QSPI) += spi-coldfire-qspi.o obj-$(CONFIG_SPI_DAVINCI) += spi-davinci.o diff --git a/drivers/mtd/spi-nor/controllers/cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c similarity index 99% rename from drivers/mtd/spi-nor/controllers/cadence-quadspi.c rename to drivers/spi/spi-cadence-quadspi.c index c1df4b221889..8e8937ec5b1b 100644 --- a/drivers/mtd/spi-nor/controllers/cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1,11 +1,11 @@ // SPDX-License-Identifier: GPL-2.0-only -/* - * Driver for Cadence QSPI Controller - * - * Copyright Altera Corporation (C) 2012-2014. All rights reserved. - * Copyright Intel Corporation (C) 2019-2020. All rights reserved. - * Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com - */ +// +// Driver for Cadence QSPI Controller +// +// Copyright Altera Corporation (C) 2012-2014. All rights reserved. +// Copyright Intel Corporation (C) 2019-2020. All rights reserved. +// Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com + #include <linux/clk.h> #include <linux/completion.h> #include <linux/delay.h>