Message ID | 20220730144713.2.I4b69f984a97535179acd9637426a1331f84f6646@changeid |
---|---|
State | New |
Headers | show |
Series | clk/qcom: Support gdsc collapse polling using 'reset' inteface | expand |
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-lkp@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 <lkp@intel.com> 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
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-lkp@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 <lkp@intel.com> > > 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.
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 <quic_akhilpo@quicinc.com> > --- > > 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;
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;
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 <quic_akhilpo@quicinc.com> --- drivers/clk/qcom/reset.c | 6 ++++++ drivers/clk/qcom/reset.h | 2 ++ 2 files changed, 8 insertions(+)