Re: [PATCH v1 2/2] i2c: i2c-stm32f7: SYSCFG Fast Mode Plus support for I2C STM32F7

2018-11-17 Thread kbuild test robot
Hi Pierre-Yves,

I love your patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v4.20-rc2 next-20181116]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Pierre-Yves-MORDRET/SYSCFG-Fast-Mode-Plus-support-for-I2C-STM32F7/20181118-135056
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git 
i2c/for-next
config: xtensa-allmodconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 8.1.0
reproduce:
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
GCC_VERSION=8.1.0 make.cross ARCH=xtensa 

All errors (new ones prefixed by >>):

   drivers/i2c//busses/i2c-stm32f7.c: In function 
'stm32f7_i2c_setup_fm_plus_bits':
>> drivers/i2c//busses/i2c-stm32f7.c:1790:9: error: implicit declaration of 
>> function 'regmap_update_bits'; did you mean 'file_update_time'? 
>> [-Werror=implicit-function-declaration]
 return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
^~
file_update_time
   cc1: some warnings being treated as errors

vim +1790 drivers/i2c//busses/i2c-stm32f7.c

  1768  
  1769  static int stm32f7_i2c_setup_fm_plus_bits(struct platform_device *pdev,
  1770struct stm32f7_i2c_dev 
*i2c_dev)
  1771  {
  1772  struct device_node *np = pdev->dev.of_node;
  1773  int ret;
  1774  u32 reg, mask;
  1775  
  1776  i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, 
"st,syscfg-fmp");
  1777  if (IS_ERR(i2c_dev->regmap)) {
  1778  /* Optional */
  1779  return 0;
  1780  }
  1781  
  1782  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, );
  1783  if (ret)
  1784  return ret;
  1785  
  1786  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 2, );
  1787  if (ret)
  1788  return ret;
  1789  
> 1790  return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
  1791  }
  1792  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


Re: [PATCH v1 2/2] i2c: i2c-stm32f7: SYSCFG Fast Mode Plus support for I2C STM32F7

2018-11-17 Thread kbuild test robot
Hi Pierre-Yves,

I love your patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v4.20-rc2 next-20181116]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Pierre-Yves-MORDRET/SYSCFG-Fast-Mode-Plus-support-for-I2C-STM32F7/20181118-135056
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git 
i2c/for-next
config: xtensa-allmodconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 8.1.0
reproduce:
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
GCC_VERSION=8.1.0 make.cross ARCH=xtensa 

All errors (new ones prefixed by >>):

   drivers/i2c//busses/i2c-stm32f7.c: In function 
'stm32f7_i2c_setup_fm_plus_bits':
>> drivers/i2c//busses/i2c-stm32f7.c:1790:9: error: implicit declaration of 
>> function 'regmap_update_bits'; did you mean 'file_update_time'? 
>> [-Werror=implicit-function-declaration]
 return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
^~
file_update_time
   cc1: some warnings being treated as errors

vim +1790 drivers/i2c//busses/i2c-stm32f7.c

  1768  
  1769  static int stm32f7_i2c_setup_fm_plus_bits(struct platform_device *pdev,
  1770struct stm32f7_i2c_dev 
*i2c_dev)
  1771  {
  1772  struct device_node *np = pdev->dev.of_node;
  1773  int ret;
  1774  u32 reg, mask;
  1775  
  1776  i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, 
"st,syscfg-fmp");
  1777  if (IS_ERR(i2c_dev->regmap)) {
  1778  /* Optional */
  1779  return 0;
  1780  }
  1781  
  1782  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, );
  1783  if (ret)
  1784  return ret;
  1785  
  1786  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 2, );
  1787  if (ret)
  1788  return ret;
  1789  
> 1790  return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
  1791  }
  1792  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


Re: [PATCH v1 2/2] i2c: i2c-stm32f7: SYSCFG Fast Mode Plus support for I2C STM32F7

2018-11-17 Thread kbuild test robot
Hi Pierre-Yves,

I love your patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v4.20-rc2 next-20181116]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Pierre-Yves-MORDRET/SYSCFG-Fast-Mode-Plus-support-for-I2C-STM32F7/20181118-135056
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git 
i2c/for-next
config: s390-allmodconfig (attached as .config)
compiler: s390x-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
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
GCC_VERSION=7.2.0 make.cross ARCH=s390 

All errors (new ones prefixed by >>):

   drivers/i2c/busses/i2c-stm32f7.c: In function 
'stm32f7_i2c_setup_fm_plus_bits':
>> drivers/i2c/busses/i2c-stm32f7.c:1790:9: error: implicit declaration of 
>> function 'regmap_update_bits'; did you mean 'set_pgste_bits'? 
>> [-Werror=implicit-function-declaration]
 return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
^~
set_pgste_bits
   cc1: some warnings being treated as errors

vim +1790 drivers/i2c/busses/i2c-stm32f7.c

  1768  
  1769  static int stm32f7_i2c_setup_fm_plus_bits(struct platform_device *pdev,
  1770struct stm32f7_i2c_dev 
*i2c_dev)
  1771  {
  1772  struct device_node *np = pdev->dev.of_node;
  1773  int ret;
  1774  u32 reg, mask;
  1775  
  1776  i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, 
"st,syscfg-fmp");
  1777  if (IS_ERR(i2c_dev->regmap)) {
  1778  /* Optional */
  1779  return 0;
  1780  }
  1781  
  1782  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, );
  1783  if (ret)
  1784  return ret;
  1785  
  1786  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 2, );
  1787  if (ret)
  1788  return ret;
  1789  
> 1790  return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
  1791  }
  1792  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


Re: [PATCH v1 2/2] i2c: i2c-stm32f7: SYSCFG Fast Mode Plus support for I2C STM32F7

2018-11-17 Thread kbuild test robot
Hi Pierre-Yves,

I love your patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v4.20-rc2 next-20181116]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Pierre-Yves-MORDRET/SYSCFG-Fast-Mode-Plus-support-for-I2C-STM32F7/20181118-135056
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git 
i2c/for-next
config: s390-allmodconfig (attached as .config)
compiler: s390x-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
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
GCC_VERSION=7.2.0 make.cross ARCH=s390 

All errors (new ones prefixed by >>):

   drivers/i2c/busses/i2c-stm32f7.c: In function 
'stm32f7_i2c_setup_fm_plus_bits':
>> drivers/i2c/busses/i2c-stm32f7.c:1790:9: error: implicit declaration of 
>> function 'regmap_update_bits'; did you mean 'set_pgste_bits'? 
>> [-Werror=implicit-function-declaration]
 return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
^~
set_pgste_bits
   cc1: some warnings being treated as errors

vim +1790 drivers/i2c/busses/i2c-stm32f7.c

  1768  
  1769  static int stm32f7_i2c_setup_fm_plus_bits(struct platform_device *pdev,
  1770struct stm32f7_i2c_dev 
*i2c_dev)
  1771  {
  1772  struct device_node *np = pdev->dev.of_node;
  1773  int ret;
  1774  u32 reg, mask;
  1775  
  1776  i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, 
"st,syscfg-fmp");
  1777  if (IS_ERR(i2c_dev->regmap)) {
  1778  /* Optional */
  1779  return 0;
  1780  }
  1781  
  1782  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, );
  1783  if (ret)
  1784  return ret;
  1785  
  1786  ret = of_property_read_u32_index(np, "st,syscfg-fmp", 2, );
  1787  if (ret)
  1788  return ret;
  1789  
> 1790  return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
  1791  }
  1792  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


[PATCH v1 2/2] i2c: i2c-stm32f7: SYSCFG Fast Mode Plus support for I2C STM32F7

2018-11-16 Thread Pierre-Yves MORDRET
Read SYSCFG bindings to set Fast Mode Plus bits if Fast Mode Plus
speed is selected.

Signed-off-by: Pierre-Yves MORDRET 
---
  Version history:
v1:
   * Initial
---
---
 drivers/i2c/busses/i2c-stm32f7.c | 37 ++---
 1 file changed, 34 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c
index 62d023e..8e381b7 100644
--- a/drivers/i2c/busses/i2c-stm32f7.c
+++ b/drivers/i2c/busses/i2c-stm32f7.c
@@ -21,6 +21,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -276,6 +277,7 @@ struct stm32f7_i2c_msg {
  * slave)
  * @dma: dma data
  * @use_dma: boolean to know if dma is used in the current transfer
+ * @regmap: holds SYSCFG phandle for Fast Mode Plus bits
  */
 struct stm32f7_i2c_dev {
struct i2c_adapter adap;
@@ -296,6 +298,7 @@ struct stm32f7_i2c_dev {
bool master_mode;
struct stm32_i2c_dma *dma;
bool use_dma;
+   struct regmap *regmap;
 };
 
 /**
@@ -1763,6 +1766,30 @@ static int stm32f7_i2c_unreg_slave(struct i2c_client 
*slave)
return 0;
 }
 
+static int stm32f7_i2c_setup_fm_plus_bits(struct platform_device *pdev,
+ struct stm32f7_i2c_dev *i2c_dev)
+{
+   struct device_node *np = pdev->dev.of_node;
+   int ret;
+   u32 reg, mask;
+
+   i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, "st,syscfg-fmp");
+   if (IS_ERR(i2c_dev->regmap)) {
+   /* Optional */
+   return 0;
+   }
+
+   ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, );
+   if (ret)
+   return ret;
+
+   ret = of_property_read_u32_index(np, "st,syscfg-fmp", 2, );
+   if (ret)
+   return ret;
+
+   return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
+}
+
 static u32 stm32f7_i2c_func(struct i2c_adapter *adap)
 {
return I2C_FUNC_I2C | I2C_FUNC_10BIT_ADDR | I2C_FUNC_SLAVE |
@@ -1828,12 +1855,16 @@ static int stm32f7_i2c_probe(struct platform_device 
*pdev)
i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
ret = device_property_read_u32(>dev, "clock-frequency",
   _rate);
-   if (!ret && clk_rate >= 100)
+   if (!ret && clk_rate >= 100) {
i2c_dev->speed = STM32_I2C_SPEED_FAST_PLUS;
-   else if (!ret && clk_rate >= 40)
+   ret = stm32f7_i2c_setup_fm_plus_bits(pdev, i2c_dev);
+   if (ret)
+   goto clk_free;
+   } else if (!ret && clk_rate >= 40) {
i2c_dev->speed = STM32_I2C_SPEED_FAST;
-   else if (!ret && clk_rate >= 10)
+   } else if (!ret && clk_rate >= 10) {
i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
+   }
 
rst = devm_reset_control_get(>dev, NULL);
if (IS_ERR(rst)) {
-- 
2.7.4



[PATCH v1 2/2] i2c: i2c-stm32f7: SYSCFG Fast Mode Plus support for I2C STM32F7

2018-11-16 Thread Pierre-Yves MORDRET
Read SYSCFG bindings to set Fast Mode Plus bits if Fast Mode Plus
speed is selected.

Signed-off-by: Pierre-Yves MORDRET 
---
  Version history:
v1:
   * Initial
---
---
 drivers/i2c/busses/i2c-stm32f7.c | 37 ++---
 1 file changed, 34 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c
index 62d023e..8e381b7 100644
--- a/drivers/i2c/busses/i2c-stm32f7.c
+++ b/drivers/i2c/busses/i2c-stm32f7.c
@@ -21,6 +21,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -276,6 +277,7 @@ struct stm32f7_i2c_msg {
  * slave)
  * @dma: dma data
  * @use_dma: boolean to know if dma is used in the current transfer
+ * @regmap: holds SYSCFG phandle for Fast Mode Plus bits
  */
 struct stm32f7_i2c_dev {
struct i2c_adapter adap;
@@ -296,6 +298,7 @@ struct stm32f7_i2c_dev {
bool master_mode;
struct stm32_i2c_dma *dma;
bool use_dma;
+   struct regmap *regmap;
 };
 
 /**
@@ -1763,6 +1766,30 @@ static int stm32f7_i2c_unreg_slave(struct i2c_client 
*slave)
return 0;
 }
 
+static int stm32f7_i2c_setup_fm_plus_bits(struct platform_device *pdev,
+ struct stm32f7_i2c_dev *i2c_dev)
+{
+   struct device_node *np = pdev->dev.of_node;
+   int ret;
+   u32 reg, mask;
+
+   i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, "st,syscfg-fmp");
+   if (IS_ERR(i2c_dev->regmap)) {
+   /* Optional */
+   return 0;
+   }
+
+   ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, );
+   if (ret)
+   return ret;
+
+   ret = of_property_read_u32_index(np, "st,syscfg-fmp", 2, );
+   if (ret)
+   return ret;
+
+   return regmap_update_bits(i2c_dev->regmap, reg, mask, mask);
+}
+
 static u32 stm32f7_i2c_func(struct i2c_adapter *adap)
 {
return I2C_FUNC_I2C | I2C_FUNC_10BIT_ADDR | I2C_FUNC_SLAVE |
@@ -1828,12 +1855,16 @@ static int stm32f7_i2c_probe(struct platform_device 
*pdev)
i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
ret = device_property_read_u32(>dev, "clock-frequency",
   _rate);
-   if (!ret && clk_rate >= 100)
+   if (!ret && clk_rate >= 100) {
i2c_dev->speed = STM32_I2C_SPEED_FAST_PLUS;
-   else if (!ret && clk_rate >= 40)
+   ret = stm32f7_i2c_setup_fm_plus_bits(pdev, i2c_dev);
+   if (ret)
+   goto clk_free;
+   } else if (!ret && clk_rate >= 40) {
i2c_dev->speed = STM32_I2C_SPEED_FAST;
-   else if (!ret && clk_rate >= 10)
+   } else if (!ret && clk_rate >= 10) {
i2c_dev->speed = STM32_I2C_SPEED_STANDARD;
+   }
 
rst = devm_reset_control_get(>dev, NULL);
if (IS_ERR(rst)) {
-- 
2.7.4