Re: [PATCH 2/5] clk: qcom: Allow custom reset ops
On 30/07/2022 12:17, Akhil P Oommen wrote: Add support to allow soc specific clk drivers to specify a custom reset operation. A consumer-driver of the reset framework can call "reset_control_reset()" api to trigger this. Signed-off-by: Akhil P Oommen --- drivers/clk/qcom/reset.c | 6 ++ drivers/clk/qcom/reset.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/drivers/clk/qcom/reset.c b/drivers/clk/qcom/reset.c index 819d194..4782bf1 100644 --- a/drivers/clk/qcom/reset.c +++ b/drivers/clk/qcom/reset.c @@ -13,6 +13,12 @@ static int qcom_reset(struct reset_controller_dev *rcdev, unsigned long id) { + struct qcom_reset_controller *rst = to_qcom_reset_controller(rcdev); + const struct qcom_reset_map *map = &rst->reset_map[id]; + + if (map->op) + return map->op(map); This looks like a hack. For example, assert() and deassert() would still follow the usual pattern of updating the bits. Please at least make them return -EOPNOTSUP if map->op is defined. A slightly better solution would be to make qcom_reset implementation optional (and depending on desc->num_resets being greater than 0). Then you can register your own reset controller implementation from the gpucc driver. + rcdev->ops->assert(rcdev, id); udelay(1); rcdev->ops->deassert(rcdev, id); diff --git a/drivers/clk/qcom/reset.h b/drivers/clk/qcom/reset.h index 2a08b5e..295deeb 100644 --- a/drivers/clk/qcom/reset.h +++ b/drivers/clk/qcom/reset.h @@ -11,6 +11,8 @@ struct qcom_reset_map { unsigned int reg; u8 bit; + int (*op)(const struct qcom_reset_map *map); + void *priv; }; struct regmap; -- With best wishes Dmitry
Re: [Freedreno] [PATCH 2/5] clk: qcom: Allow custom reset ops
On 7/30/2022 6:40 PM, kernel test robot wrote: Hi Akhil, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on clk/clk-next] [also build test WARNING on robh/for-next drm-misc/drm-misc-next drm-tip/drm-tip linus/master v5.19-rc8 next-20220728] [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/Akhil-P-Oommen/clk-qcom-Support-gdsc-collapse-polling-using-reset-inteface/20220730-171922 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next config: ia64-randconfig-r031-20220729 (https://download.01.org/0day-ci/archive/20220730/202207302137.mpbhpahz-...@intel.com/config) compiler: ia64-linux-gcc (GCC) 12.1.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 # https://github.com/intel-lab-lkp/linux/commit/971a03493e9854ff4a227ee4d80b533997959891 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Akhil-P-Oommen/clk-qcom-Support-gdsc-collapse-polling-using-reset-inteface/20220730-171922 git checkout 971a03493e9854ff4a227ee4d80b533997959891 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=ia64 SHELL=/bin/bash drivers/clk/qcom/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot All warnings (new ones prefixed by >>): drivers/clk/qcom/reset.c: In function 'qcom_reset': drivers/clk/qcom/reset.c:17:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] 17 | const struct qcom_reset_map *map = &rst->reset_map[id]; | ^ vim +17 drivers/clk/qcom/reset.c 13 14 static int qcom_reset(struct reset_controller_dev *rcdev, unsigned long id) 15 { 16 struct qcom_reset_controller *rst = to_qcom_reset_controller(rcdev); > 17 const struct qcom_reset_map *map = &rst->reset_map[id]; 18 19 if (map->op) 20 return map->op(map); 21 22 rcdev->ops->assert(rcdev, id); 23 udelay(1); 24 rcdev->ops->deassert(rcdev, id); 25 return 0; 26 } 27 Will fix this and send another version of this patch. Please let me know if there is any feedback to the whole series. -Akhil.
Re: [PATCH 2/5] clk: qcom: Allow custom reset ops
Hi Akhil, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on clk/clk-next] [also build test WARNING on robh/for-next drm-misc/drm-misc-next drm-tip/drm-tip linus/master v5.19-rc8 next-20220728] [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/Akhil-P-Oommen/clk-qcom-Support-gdsc-collapse-polling-using-reset-inteface/20220730-171922 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next config: ia64-randconfig-r031-20220729 (https://download.01.org/0day-ci/archive/20220730/202207302137.mpbhpahz-...@intel.com/config) compiler: ia64-linux-gcc (GCC) 12.1.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 # https://github.com/intel-lab-lkp/linux/commit/971a03493e9854ff4a227ee4d80b533997959891 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Akhil-P-Oommen/clk-qcom-Support-gdsc-collapse-polling-using-reset-inteface/20220730-171922 git checkout 971a03493e9854ff4a227ee4d80b533997959891 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=ia64 SHELL=/bin/bash drivers/clk/qcom/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot All warnings (new ones prefixed by >>): drivers/clk/qcom/reset.c: In function 'qcom_reset': >> drivers/clk/qcom/reset.c:17:9: warning: ISO C90 forbids mixed declarations >> and code [-Wdeclaration-after-statement] 17 | const struct qcom_reset_map *map = &rst->reset_map[id]; | ^ vim +17 drivers/clk/qcom/reset.c 13 14 static int qcom_reset(struct reset_controller_dev *rcdev, unsigned long id) 15 { 16 struct qcom_reset_controller *rst = to_qcom_reset_controller(rcdev); > 17 const struct qcom_reset_map *map = &rst->reset_map[id]; 18 19 if (map->op) 20 return map->op(map); 21 22 rcdev->ops->assert(rcdev, id); 23 udelay(1); 24 rcdev->ops->deassert(rcdev, id); 25 return 0; 26 } 27 -- 0-DAY CI Kernel Test Service https://01.org/lkp
[PATCH 2/5] clk: qcom: Allow custom reset ops
Add support to allow soc specific clk drivers to specify a custom reset operation. A consumer-driver of the reset framework can call "reset_control_reset()" api to trigger this. Signed-off-by: Akhil P Oommen --- drivers/clk/qcom/reset.c | 6 ++ drivers/clk/qcom/reset.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/drivers/clk/qcom/reset.c b/drivers/clk/qcom/reset.c index 819d194..4782bf1 100644 --- a/drivers/clk/qcom/reset.c +++ b/drivers/clk/qcom/reset.c @@ -13,6 +13,12 @@ static int qcom_reset(struct reset_controller_dev *rcdev, unsigned long id) { + struct qcom_reset_controller *rst = to_qcom_reset_controller(rcdev); + const struct qcom_reset_map *map = &rst->reset_map[id]; + + if (map->op) + return map->op(map); + rcdev->ops->assert(rcdev, id); udelay(1); rcdev->ops->deassert(rcdev, id); diff --git a/drivers/clk/qcom/reset.h b/drivers/clk/qcom/reset.h index 2a08b5e..295deeb 100644 --- a/drivers/clk/qcom/reset.h +++ b/drivers/clk/qcom/reset.h @@ -11,6 +11,8 @@ struct qcom_reset_map { unsigned int reg; u8 bit; + int (*op)(const struct qcom_reset_map *map); + void *priv; }; struct regmap; -- 2.7.4