All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH next v5 1/2] i2c: hisi: Add initial device tree support
@ 2022-09-20  7:22 Weilong Chen
  2022-09-20  7:22 ` [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c Weilong Chen
  2022-09-26  8:59 ` [PATCH next v5 1/2] i2c: hisi: Add initial device tree support Yicong Yang
  0 siblings, 2 replies; 5+ messages in thread
From: Weilong Chen @ 2022-09-20  7:22 UTC (permalink / raw)
  To: chenweilong, yangyicong, xuwei5, wsa, robh+dt, robh
  Cc: linux-i2c, linux-kernel, devicetree

The HiSilicon I2C controller can be used on embedded platform, which
boot from devicetree.

Signed-off-by: Weilong Chen <chenweilong@huawei.com>
---
Change since v4:
- Remove the protection for the headers for ACPI/OF
Link: https://lore.kernel.org/lkml/20220909074842.281232-1-chenweilong@huawei.com/T/

 drivers/i2c/busses/Kconfig    |  2 +-
 drivers/i2c/busses/i2c-hisi.c | 15 ++++++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 0c48d8a9f44a..81f6936c312f 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -673,7 +673,7 @@ config I2C_HIGHLANDER
 
 config I2C_HISI
 	tristate "HiSilicon I2C controller"
-	depends on (ARM64 && ACPI) || COMPILE_TEST
+	depends on ARM64 || COMPILE_TEST
 	help
 	  Say Y here if you want to have Hisilicon I2C controller support
 	  available on the Kunpeng Server.
diff --git a/drivers/i2c/busses/i2c-hisi.c b/drivers/i2c/busses/i2c-hisi.c
index 76c3d8f6fc3c..67031024217c 100644
--- a/drivers/i2c/busses/i2c-hisi.c
+++ b/drivers/i2c/busses/i2c-hisi.c
@@ -5,6 +5,7 @@
  * Copyright (c) 2021 HiSilicon Technologies Co., Ltd.
  */
 
+#include <linux/acpi.h>
 #include <linux/bits.h>
 #include <linux/bitfield.h>
 #include <linux/completion.h>
@@ -13,6 +14,7 @@
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
+#include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/property.h>
 #include <linux/units.h>
@@ -483,17 +485,28 @@ static int hisi_i2c_probe(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_ACPI
 static const struct acpi_device_id hisi_i2c_acpi_ids[] = {
 	{ "HISI03D1", 0 },
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, hisi_i2c_acpi_ids);
+#endif
+
+#ifdef CONFIG_OF
+static const struct of_device_id hisi_i2c_dts_ids[] = {
+	{ .compatible = "hisilicon,hisi-i2c", },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, hisi_i2c_dts_ids);
+#endif
 
 static struct platform_driver hisi_i2c_driver = {
 	.probe		= hisi_i2c_probe,
 	.driver		= {
 		.name	= "hisi-i2c",
-		.acpi_match_table = hisi_i2c_acpi_ids,
+		.acpi_match_table = ACPI_PTR(hisi_i2c_acpi_ids),
+		.of_match_table = of_match_ptr(hisi_i2c_dts_ids),
 	},
 };
 module_platform_driver(hisi_i2c_driver);
-- 
2.31.GIT


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c
  2022-09-20  7:22 [PATCH next v5 1/2] i2c: hisi: Add initial device tree support Weilong Chen
@ 2022-09-20  7:22 ` Weilong Chen
  2022-09-26  9:01   ` Yicong Yang
  2022-09-26 19:42   ` Rob Herring
  2022-09-26  8:59 ` [PATCH next v5 1/2] i2c: hisi: Add initial device tree support Yicong Yang
  1 sibling, 2 replies; 5+ messages in thread
From: Weilong Chen @ 2022-09-20  7:22 UTC (permalink / raw)
  To: chenweilong, yangyicong, xuwei5, wsa, robh+dt, robh
  Cc: linux-i2c, linux-kernel, devicetree

Add the new compatible for HiSilicon common i2c.

Signed-off-by: Weilong Chen <chenweilong@huawei.com>
---
Change since v4:
- Add description for SoC specific compatibles.
- Use the clock binding.
- Fix decimal, space, case, unused labels.
Link: https://lore.kernel.org/lkml/20220909074842.281232-1-chenweilong@huawei.com/T/#m4e1c915ead04f4e2e48d69131053a966801625db

 .../bindings/i2c/hisilicon,hisi-i2c.yaml      | 72 +++++++++++++++++++
 MAINTAINERS                                   |  1 +
 2 files changed, 73 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml

diff --git a/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml b/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
new file mode 100644
index 000000000000..b06eb8cb88bc
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/i2c/hisilicon,hisi-i2c.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: HiSilicon common IIC controller Device Tree Bindings
+
+maintainers:
+  - yangyicong@huawei.com
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+  compatible:
+    const: hisilicon,hisi-i2c
+    description:
+      The HiSilicon common IIC controller can be used for many different
+      types of SoC such as Huawei Ascend AI series chips. We use the common
+      string (hisi) for specific compatibles to avoid confusion caused by a
+      lot of different names.
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-frequency:
+    default: 400000
+
+  i2c-sda-falling-time-ns:
+    default: 343
+
+  i2c-scl-falling-time-ns:
+    default: 203
+
+  i2c-sda-hold-time-ns:
+    default: 830
+
+  i2c-scl-rising-time-ns:
+    default: 365
+
+  i2c-digital-filter-width-ns:
+    default: 0
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c@5038b0000 {
+      compatible = "hisilicon,hisi-i2c";
+      reg = <0x38b0000 0x10000>;
+      interrupts = <0x0 120 0x4>;
+      i2c-sda-falling-time-ns = <56>;
+      i2c-scl-falling-time-ns = <56>;
+      i2c-sda-hold-time-ns = <56>;
+      i2c-scl-rising-time-ns = <56>;
+      i2c-digital-filter;
+      i2c-digital-filter-width-ns = <0x0>;
+      clocks = <&alg_clk>;
+      clock-frequency = <400000>;
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index d213a831133f..4c928a444e4b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9155,6 +9155,7 @@ L:	linux-i2c@vger.kernel.org
 S:	Maintained
 W:	https://www.hisilicon.com
 F:	drivers/i2c/busses/i2c-hisi.c
+F:	Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
 
 HISILICON LPC BUS DRIVER
 M:	john.garry@huawei.com
-- 
2.31.GIT


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH next v5 1/2] i2c: hisi: Add initial device tree support
  2022-09-20  7:22 [PATCH next v5 1/2] i2c: hisi: Add initial device tree support Weilong Chen
  2022-09-20  7:22 ` [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c Weilong Chen
@ 2022-09-26  8:59 ` Yicong Yang
  1 sibling, 0 replies; 5+ messages in thread
From: Yicong Yang @ 2022-09-26  8:59 UTC (permalink / raw)
  To: Weilong Chen, xuwei5
  Cc: linux-i2c, linux-kernel, devicetree, robh+dt, yangyicong, wsa, robh

On 2022/9/20 15:22, Weilong Chen wrote:
> The HiSilicon I2C controller can be used on embedded platform, which
> boot from devicetree.
> 
> Signed-off-by: Weilong Chen <chenweilong@huawei.com>
> ---
> Change since v4:
> - Remove the protection for the headers for ACPI/OF
> Link: https://lore.kernel.org/lkml/20220909074842.281232-1-chenweilong@huawei.com/T/
> 
>  drivers/i2c/busses/Kconfig    |  2 +-
>  drivers/i2c/busses/i2c-hisi.c | 15 ++++++++++++++-
>  2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
> index 0c48d8a9f44a..81f6936c312f 100644
> --- a/drivers/i2c/busses/Kconfig
> +++ b/drivers/i2c/busses/Kconfig
> @@ -673,7 +673,7 @@ config I2C_HIGHLANDER
>  
>  config I2C_HISI
>  	tristate "HiSilicon I2C controller"
> -	depends on (ARM64 && ACPI) || COMPILE_TEST
> +	depends on ARM64 || COMPILE_TEST
>  	help
>  	  Say Y here if you want to have Hisilicon I2C controller support
>  	  available on the Kunpeng Server.
> diff --git a/drivers/i2c/busses/i2c-hisi.c b/drivers/i2c/busses/i2c-hisi.c
> index 76c3d8f6fc3c..67031024217c 100644
> --- a/drivers/i2c/busses/i2c-hisi.c
> +++ b/drivers/i2c/busses/i2c-hisi.c
> @@ -5,6 +5,7 @@
>   * Copyright (c) 2021 HiSilicon Technologies Co., Ltd.
>   */
>  
> +#include <linux/acpi.h>
>  #include <linux/bits.h>
>  #include <linux/bitfield.h>
>  #include <linux/completion.h>
> @@ -13,6 +14,7 @@
>  #include <linux/io.h>
>  #include <linux/module.h>
>  #include <linux/mod_devicetable.h>
> +#include <linux/of.h>
>  #include <linux/platform_device.h>
>  #include <linux/property.h>
>  #include <linux/units.h>
> @@ -483,17 +485,28 @@ static int hisi_i2c_probe(struct platform_device *pdev)
>  	return 0;
>  }
>  
> +#ifdef CONFIG_ACPI
>  static const struct acpi_device_id hisi_i2c_acpi_ids[] = {
>  	{ "HISI03D1", 0 },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(acpi, hisi_i2c_acpi_ids);
> +#endif
> +
> +#ifdef CONFIG_OF
> +static const struct of_device_id hisi_i2c_dts_ids[] = {
> +	{ .compatible = "hisilicon,hisi-i2c", },

The patch itself looks good to me:

Acked-by: Yicong Yang <yangyicong@hisilicon.com>

It's better to have a tag from xuwei for HiSilicon's DTS stuff.

Thanks.

> +	{ }
> +};
> +MODULE_DEVICE_TABLE(of, hisi_i2c_dts_ids);
> +#endif
>  
>  static struct platform_driver hisi_i2c_driver = {
>  	.probe		= hisi_i2c_probe,
>  	.driver		= {
>  		.name	= "hisi-i2c",
> -		.acpi_match_table = hisi_i2c_acpi_ids,
> +		.acpi_match_table = ACPI_PTR(hisi_i2c_acpi_ids),
> +		.of_match_table = of_match_ptr(hisi_i2c_dts_ids),
>  	},
>  };
>  module_platform_driver(hisi_i2c_driver);
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c
  2022-09-20  7:22 ` [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c Weilong Chen
@ 2022-09-26  9:01   ` Yicong Yang
  2022-09-26 19:42   ` Rob Herring
  1 sibling, 0 replies; 5+ messages in thread
From: Yicong Yang @ 2022-09-26  9:01 UTC (permalink / raw)
  To: Weilong Chen, xuwei5, wsa, robh+dt, robh
  Cc: linux-i2c, linux-kernel, devicetree, yangyicong

On 2022/9/20 15:22, Weilong Chen wrote:
> Add the new compatible for HiSilicon common i2c.
> 
> Signed-off-by: Weilong Chen <chenweilong@huawei.com>

Reviewed-by: Yicong Yang <yangyicong@hisilicon.com>

> ---
> Change since v4:
> - Add description for SoC specific compatibles.
> - Use the clock binding.
> - Fix decimal, space, case, unused labels.
> Link: https://lore.kernel.org/lkml/20220909074842.281232-1-chenweilong@huawei.com/T/#m4e1c915ead04f4e2e48d69131053a966801625db
> 
>  .../bindings/i2c/hisilicon,hisi-i2c.yaml      | 72 +++++++++++++++++++
>  MAINTAINERS                                   |  1 +
>  2 files changed, 73 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
> 
> diff --git a/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml b/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
> new file mode 100644
> index 000000000000..b06eb8cb88bc
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
> @@ -0,0 +1,72 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/i2c/hisilicon,hisi-i2c.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: HiSilicon common IIC controller Device Tree Bindings
> +
> +maintainers:
> +  - yangyicong@huawei.com
> +
> +allOf:
> +  - $ref: /schemas/i2c/i2c-controller.yaml#
> +
> +properties:
> +  compatible:
> +    const: hisilicon,hisi-i2c
> +    description:
> +      The HiSilicon common IIC controller can be used for many different
> +      types of SoC such as Huawei Ascend AI series chips. We use the common
> +      string (hisi) for specific compatibles to avoid confusion caused by a
> +      lot of different names.
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 1
> +
> +  clock-frequency:
> +    default: 400000
> +
> +  i2c-sda-falling-time-ns:
> +    default: 343
> +
> +  i2c-scl-falling-time-ns:
> +    default: 203
> +
> +  i2c-sda-hold-time-ns:
> +    default: 830
> +
> +  i2c-scl-rising-time-ns:
> +    default: 365
> +
> +  i2c-digital-filter-width-ns:
> +    default: 0
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    i2c@5038b0000 {
> +      compatible = "hisilicon,hisi-i2c";
> +      reg = <0x38b0000 0x10000>;
> +      interrupts = <0x0 120 0x4>;
> +      i2c-sda-falling-time-ns = <56>;
> +      i2c-scl-falling-time-ns = <56>;
> +      i2c-sda-hold-time-ns = <56>;
> +      i2c-scl-rising-time-ns = <56>;
> +      i2c-digital-filter;
> +      i2c-digital-filter-width-ns = <0x0>;
> +      clocks = <&alg_clk>;
> +      clock-frequency = <400000>;
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d213a831133f..4c928a444e4b 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -9155,6 +9155,7 @@ L:	linux-i2c@vger.kernel.org
>  S:	Maintained
>  W:	https://www.hisilicon.com
>  F:	drivers/i2c/busses/i2c-hisi.c
> +F:	Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
>  
>  HISILICON LPC BUS DRIVER
>  M:	john.garry@huawei.com
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c
  2022-09-20  7:22 ` [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c Weilong Chen
  2022-09-26  9:01   ` Yicong Yang
@ 2022-09-26 19:42   ` Rob Herring
  1 sibling, 0 replies; 5+ messages in thread
From: Rob Herring @ 2022-09-26 19:42 UTC (permalink / raw)
  To: Weilong Chen; +Cc: yangyicong, xuwei5, wsa, linux-i2c, linux-kernel, devicetree

On Tue, Sep 20, 2022 at 03:22:15PM +0800, Weilong Chen wrote:
> Add the new compatible for HiSilicon common i2c.
> 
> Signed-off-by: Weilong Chen <chenweilong@huawei.com>
> ---
> Change since v4:
> - Add description for SoC specific compatibles.

A description is not sufficient. A single compatible is saying all SoCs 
have exactly the same features and bugs.

> - Use the clock binding.
> - Fix decimal, space, case, unused labels.
> Link: https://lore.kernel.org/lkml/20220909074842.281232-1-chenweilong@huawei.com/T/#m4e1c915ead04f4e2e48d69131053a966801625db
> 
>  .../bindings/i2c/hisilicon,hisi-i2c.yaml      | 72 +++++++++++++++++++
>  MAINTAINERS                                   |  1 +
>  2 files changed, 73 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
> 
> diff --git a/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml b/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
> new file mode 100644
> index 000000000000..b06eb8cb88bc
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
> @@ -0,0 +1,72 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/i2c/hisilicon,hisi-i2c.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: HiSilicon common IIC controller Device Tree Bindings
> +
> +maintainers:
> +  - yangyicong@huawei.com

Needs to be a name and email.

> +
> +allOf:
> +  - $ref: /schemas/i2c/i2c-controller.yaml#
> +
> +properties:
> +  compatible:
> +    const: hisilicon,hisi-i2c
> +    description:
> +      The HiSilicon common IIC controller can be used for many different
> +      types of SoC such as Huawei Ascend AI series chips. We use the common
> +      string (hisi) for specific compatibles to avoid confusion caused by a
> +      lot of different names.
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 1
> +
> +  clock-frequency:
> +    default: 400000
> +
> +  i2c-sda-falling-time-ns:
> +    default: 343
> +
> +  i2c-scl-falling-time-ns:
> +    default: 203
> +
> +  i2c-sda-hold-time-ns:
> +    default: 830
> +
> +  i2c-scl-rising-time-ns:
> +    default: 365
> +
> +  i2c-digital-filter-width-ns:
> +    default: 0
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    i2c@5038b0000 {
> +      compatible = "hisilicon,hisi-i2c";
> +      reg = <0x38b0000 0x10000>;
> +      interrupts = <0x0 120 0x4>;
> +      i2c-sda-falling-time-ns = <56>;
> +      i2c-scl-falling-time-ns = <56>;
> +      i2c-sda-hold-time-ns = <56>;
> +      i2c-scl-rising-time-ns = <56>;
> +      i2c-digital-filter;
> +      i2c-digital-filter-width-ns = <0x0>;
> +      clocks = <&alg_clk>;
> +      clock-frequency = <400000>;
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d213a831133f..4c928a444e4b 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -9155,6 +9155,7 @@ L:	linux-i2c@vger.kernel.org
>  S:	Maintained
>  W:	https://www.hisilicon.com
>  F:	drivers/i2c/busses/i2c-hisi.c
> +F:	Documentation/devicetree/bindings/i2c/hisilicon,hisi-i2c.yaml
>  
>  HISILICON LPC BUS DRIVER
>  M:	john.garry@huawei.com
> -- 
> 2.31.GIT
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-09-26 19:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-20  7:22 [PATCH next v5 1/2] i2c: hisi: Add initial device tree support Weilong Chen
2022-09-20  7:22 ` [PATCH next v5 2/2] dt-bindings: i2c: add entry for hisilicon,hisi-i2c Weilong Chen
2022-09-26  9:01   ` Yicong Yang
2022-09-26 19:42   ` Rob Herring
2022-09-26  8:59 ` [PATCH next v5 1/2] i2c: hisi: Add initial device tree support Yicong Yang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.