Message ID | 20240509192411.2432066-3-tmaimon77@gmail.com |
---|---|
State | New |
Headers | show |
Series | Introduce Nuvoton Arbel NPCM8XX BMC SoC | expand |
Hi Tomer, kernel test robot noticed the following build warnings: [auto build test WARNING on clk/clk-next] [also build test WARNING on pza/reset/next linus/master v6.9-rc7 next-20240510] [cannot apply to pza/imx-drm/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Tomer-Maimon/dt-bindings-reset-npcm-add-clock-properties/20240510-072622 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next patch link: https://lore.kernel.org/r/20240509192411.2432066-3-tmaimon77%40gmail.com patch subject: [PATCH v24 2/4] reset: npcm: register npcm8xx clock auxiliary bus device config: arm-wpcm450_defconfig (https://download.01.org/0day-ci/archive/20240510/202405101852.gDDWbzsx-lkp@intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240510/202405101852.gDDWbzsx-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202405101852.gDDWbzsx-lkp@intel.com/ All warnings (new ones prefixed by >>): drivers/reset/reset-npcm.c: In function 'npcm_clock_adev_release': drivers/reset/reset-npcm.c:391:9: error: implicit declaration of function 'kfree'; did you mean 'vfree'? [-Werror=implicit-function-declaration] 391 | kfree(rdev); | ^~~~~ | vfree drivers/reset/reset-npcm.c: In function 'npcm_clock_adev_alloc': drivers/reset/reset-npcm.c:400:16: error: implicit declaration of function 'kzalloc'; did you mean 'vzalloc'? [-Werror=implicit-function-declaration] 400 | rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); | ^~~~~~~ | vzalloc >> drivers/reset/reset-npcm.c:400:14: warning: assignment to 'struct npcm_clock_adev *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 400 | rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); | ^ cc1: some warnings being treated as errors vim +400 drivers/reset/reset-npcm.c 393 394 static struct auxiliary_device *npcm_clock_adev_alloc(struct npcm_rc_data *rst_data, char *clk_name) 395 { 396 struct npcm_clock_adev *rdev; 397 struct auxiliary_device *adev; 398 int ret; 399 > 400 rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); 401 if (!rdev) 402 return ERR_PTR(-ENOMEM); 403 404 rdev->base = rst_data->base; 405 406 adev = &rdev->adev; 407 adev->name = clk_name; 408 adev->dev.parent = rst_data->dev; 409 adev->dev.release = npcm_clock_adev_release; 410 adev->id = 555u; 411 412 ret = auxiliary_device_init(adev); 413 if (ret) { 414 kfree(adev); 415 return ERR_PTR(ret); 416 } 417 418 return adev; 419 } 420
Hi Tomer, kernel test robot noticed the following build errors: [auto build test ERROR on clk/clk-next] [also build test ERROR on pza/reset/next linus/master v6.9-rc7 next-20240510] [cannot apply to pza/imx-drm/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Tomer-Maimon/dt-bindings-reset-npcm-add-clock-properties/20240510-072622 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next patch link: https://lore.kernel.org/r/20240509192411.2432066-3-tmaimon77%40gmail.com patch subject: [PATCH v24 2/4] reset: npcm: register npcm8xx clock auxiliary bus device config: i386-buildonly-randconfig-004-20240510 (https://download.01.org/0day-ci/archive/20240510/202405101939.Espij82X-lkp@intel.com/config) compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240510/202405101939.Espij82X-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202405101939.Espij82X-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/reset/reset-npcm.c:391:2: error: call to undeclared function 'kfree'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 391 | kfree(rdev); | ^ drivers/reset/reset-npcm.c:391:2: note: did you mean 'vfree'? include/linux/vmalloc.h:162:13: note: 'vfree' declared here 162 | extern void vfree(const void *addr); | ^ >> drivers/reset/reset-npcm.c:400:9: error: call to undeclared function 'kzalloc'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 400 | rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); | ^ drivers/reset/reset-npcm.c:400:9: note: did you mean 'vzalloc'? include/linux/vmalloc.h:142:14: note: 'vzalloc' declared here 142 | extern void *vzalloc(unsigned long size) __alloc_size(1); | ^ >> drivers/reset/reset-npcm.c:400:7: error: incompatible integer to pointer conversion assigning to 'struct npcm_clock_adev *' from 'int' [-Wint-conversion] 400 | rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); | ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/reset/reset-npcm.c:414:3: error: call to undeclared function 'kfree'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 414 | kfree(adev); | ^ 4 errors generated. vim +/kfree +391 drivers/reset/reset-npcm.c 385 386 static void npcm_clock_adev_release(struct device *dev) 387 { 388 struct auxiliary_device *adev = to_auxiliary_dev(dev); 389 struct npcm_clock_adev *rdev = to_npcm_clock_adev(adev); 390 > 391 kfree(rdev); 392 } 393 394 static struct auxiliary_device *npcm_clock_adev_alloc(struct npcm_rc_data *rst_data, char *clk_name) 395 { 396 struct npcm_clock_adev *rdev; 397 struct auxiliary_device *adev; 398 int ret; 399 > 400 rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); 401 if (!rdev) 402 return ERR_PTR(-ENOMEM); 403 404 rdev->base = rst_data->base; 405 406 adev = &rdev->adev; 407 adev->name = clk_name; 408 adev->dev.parent = rst_data->dev; 409 adev->dev.release = npcm_clock_adev_release; 410 adev->id = 555u; 411 412 ret = auxiliary_device_init(adev); 413 if (ret) { 414 kfree(adev); 415 return ERR_PTR(ret); 416 } 417 418 return adev; 419 } 420
Hi Tomer, kernel test robot noticed the following build warnings: [auto build test WARNING on clk/clk-next] [also build test WARNING on pza/reset/next linus/master v6.9-rc7 next-20240510] [cannot apply to pza/imx-drm/next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Tomer-Maimon/dt-bindings-reset-npcm-add-clock-properties/20240510-072622 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next patch link: https://lore.kernel.org/r/20240509192411.2432066-3-tmaimon77%40gmail.com patch subject: [PATCH v24 2/4] reset: npcm: register npcm8xx clock auxiliary bus device config: i386-buildonly-randconfig-002-20240510 (https://download.01.org/0day-ci/archive/20240510/202405101846.avdHTXi3-lkp@intel.com/config) compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240510/202405101846.avdHTXi3-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202405101846.avdHTXi3-lkp@intel.com/ All warnings (new ones prefixed by >>): drivers/reset/reset-npcm.c: In function 'npcm_clock_adev_release': drivers/reset/reset-npcm.c:391:2: error: implicit declaration of function 'kfree'; did you mean 'vfree'? [-Werror=implicit-function-declaration] kfree(rdev); ^~~~~ vfree drivers/reset/reset-npcm.c: In function 'npcm_clock_adev_alloc': drivers/reset/reset-npcm.c:400:9: error: implicit declaration of function 'kzalloc'; did you mean 'vzalloc'? [-Werror=implicit-function-declaration] rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); ^~~~~~~ vzalloc >> drivers/reset/reset-npcm.c:400:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion] rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); ^ cc1: some warnings being treated as errors vim +400 drivers/reset/reset-npcm.c 385 386 static void npcm_clock_adev_release(struct device *dev) 387 { 388 struct auxiliary_device *adev = to_auxiliary_dev(dev); 389 struct npcm_clock_adev *rdev = to_npcm_clock_adev(adev); 390 > 391 kfree(rdev); 392 } 393 394 static struct auxiliary_device *npcm_clock_adev_alloc(struct npcm_rc_data *rst_data, char *clk_name) 395 { 396 struct npcm_clock_adev *rdev; 397 struct auxiliary_device *adev; 398 int ret; 399 > 400 rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); 401 if (!rdev) 402 return ERR_PTR(-ENOMEM); 403 404 rdev->base = rst_data->base; 405 406 adev = &rdev->adev; 407 adev->name = clk_name; 408 adev->dev.parent = rst_data->dev; 409 adev->dev.release = npcm_clock_adev_release; 410 adev->id = 555u; 411 412 ret = auxiliary_device_init(adev); 413 if (ret) { 414 kfree(adev); 415 return ERR_PTR(ret); 416 } 417 418 return adev; 419 } 420
diff --git a/drivers/reset/reset-npcm.c b/drivers/reset/reset-npcm.c index 8935ef95a2d1..2db9e56485f6 100644 --- a/drivers/reset/reset-npcm.c +++ b/drivers/reset/reset-npcm.c @@ -15,6 +15,8 @@ #include <linux/regmap.h> #include <linux/of_address.h> +#include <soc/nuvoton/clock-npcm8xx.h> + /* NPCM7xx GCR registers */ #define NPCM_MDLR_OFFSET 0x7C #define NPCM7XX_MDLR_USBD0 BIT(9) @@ -89,6 +91,7 @@ struct npcm_rc_data { const struct npcm_reset_info *info; struct regmap *gcr_regmap; u32 sw_reset_number; + struct device *dev; void __iomem *base; spinlock_t lock; }; @@ -372,6 +375,67 @@ static const struct reset_control_ops npcm_rc_ops = { .status = npcm_rc_status, }; +static void npcm_clock_unregister_adev(void *_adev) +{ + struct auxiliary_device *adev = _adev; + + auxiliary_device_delete(adev); + auxiliary_device_uninit(adev); +} + +static void npcm_clock_adev_release(struct device *dev) +{ + struct auxiliary_device *adev = to_auxiliary_dev(dev); + struct npcm_clock_adev *rdev = to_npcm_clock_adev(adev); + + kfree(rdev); +} + +static struct auxiliary_device *npcm_clock_adev_alloc(struct npcm_rc_data *rst_data, char *clk_name) +{ + struct npcm_clock_adev *rdev; + struct auxiliary_device *adev; + int ret; + + rdev = kzalloc(sizeof(*rdev), GFP_KERNEL); + if (!rdev) + return ERR_PTR(-ENOMEM); + + rdev->base = rst_data->base; + + adev = &rdev->adev; + adev->name = clk_name; + adev->dev.parent = rst_data->dev; + adev->dev.release = npcm_clock_adev_release; + adev->id = 555u; + + ret = auxiliary_device_init(adev); + if (ret) { + kfree(adev); + return ERR_PTR(ret); + } + + return adev; +} + +static int npcm8xx_clock_controller_register(struct npcm_rc_data *rst_data, char *clk_name) +{ + struct auxiliary_device *adev; + int ret; + + adev = npcm_clock_adev_alloc(rst_data, clk_name); + if (IS_ERR(adev)) + return PTR_ERR(adev); + + ret = auxiliary_device_add(adev); + if (ret) { + auxiliary_device_uninit(adev); + return ret; + } + + return devm_add_action_or_reset(rst_data->dev, npcm_clock_unregister_adev, adev); +} + static int npcm_rc_probe(struct platform_device *pdev) { struct npcm_rc_data *rc; @@ -392,6 +456,7 @@ static int npcm_rc_probe(struct platform_device *pdev) rc->rcdev.of_node = pdev->dev.of_node; rc->rcdev.of_reset_n_cells = 2; rc->rcdev.of_xlate = npcm_reset_xlate; + rc->dev = &pdev->dev; ret = devm_reset_controller_register(&pdev->dev, &rc->rcdev); if (ret) { @@ -413,7 +478,12 @@ static int npcm_rc_probe(struct platform_device *pdev) } } - return ret; + switch (rc->info->bmc_id) { + case BMC_NPCM8XX: + return npcm8xx_clock_controller_register(rc, "clk-npcm8xx"); + default: + return ret; + } } static struct platform_driver npcm_rc_driver = { diff --git a/include/soc/nuvoton/clock-npcm8xx.h b/include/soc/nuvoton/clock-npcm8xx.h new file mode 100644 index 000000000000..139130e98c51 --- /dev/null +++ b/include/soc/nuvoton/clock-npcm8xx.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __SOC_NPCM8XX_CLOCK_H +#define __SOC_NPCM8XX_CLOCK_H + +#include <linux/auxiliary_bus.h> +#include <linux/container_of.h> + +struct npcm_clock_adev { + void __iomem *base; + struct auxiliary_device adev; +}; + +#define to_npcm_clock_adev(_adev) \ + container_of((_adev), struct npcm_clock_adev, adev) + +#endif
Add NPCM8xx clock controller auxiliary bus device registration. The NPCM8xx clock controller is registered as an aux device because the reset and the clock controller share the same register region. Signed-off-by: Tomer Maimon <tmaimon77@gmail.com> --- drivers/reset/reset-npcm.c | 72 ++++++++++++++++++++++++++++- include/soc/nuvoton/clock-npcm8xx.h | 16 +++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 include/soc/nuvoton/clock-npcm8xx.h