Re: [PATCH 2/5] clk: qcom: Allow custom reset ops

2022-08-02 Thread Dmitry Baryshkov

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

2022-08-01 Thread Akhil P Oommen

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

2022-07-30 Thread kernel test robot
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

2022-07-30 Thread Akhil P Oommen
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