2022-10-24 02:05:44

by chenweilong

[permalink] [raw]
Subject: [PATCH next v8 1/2] i2c: hisi: Add initial device tree support

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

Signed-off-by: Weilong Chen <[email protected]>
Acked-by: Yicong Yang <[email protected]>
---
Change since v7:
- No change
Link: https://lore.kernel.org/all/[email protected]/

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 264e780ae32e..a2081c03f3c4 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..d58a6d2f1bc6 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,i2c-ascend910", },
+ { }
+};
+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


2022-10-24 02:26:12

by chenweilong

[permalink] [raw]
Subject: [PATCH next v8 2/2] dt-bindings: i2c: add entry for hisilicon,i2c-ascend910

Add the new compatible for HiSilicon i2c.

Signed-off-by: Weilong Chen <[email protected]>
---
Change since v7:
- Fix yamllint errors, rename i2c-xxx to i2c-ascend910
Link: https://lore.kernel.org/all/[email protected]/

.../bindings/i2c/hisilicon,i2c-ascend910.yaml | 70 +++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 71 insertions(+)
create mode 100644 Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml

diff --git a/Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml b/Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
new file mode 100644
index 000000000000..918825a3026b
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
@@ -0,0 +1,70 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/i2c/hisilicon,i2c-ascend910.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: HiSilicon common I2C controller Device Tree Bindings
+
+maintainers:
+ - Yicong Yang <[email protected]>
+
+allOf:
+ - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+ compatible:
+ const: hisilicon,i2c-ascend910
+ description:
+ The HiSilicon common I2C controller can be used for many different
+ types of SoC such as Huawei Ascend AI series chips.
+
+ 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,i2c-ascend910";
+ 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 ad32dc9c4822..5e5e4a3f5ada 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9211,6 +9211,7 @@ M: Yicong Yang <[email protected]>
L: [email protected]
S: Maintained
W: https://www.hisilicon.com
+F: Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
F: drivers/i2c/busses/i2c-hisi.c

HISILICON LPC BUS DRIVER
--
2.31.GIT

2022-10-25 23:00:41

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH next v8 2/2] dt-bindings: i2c: add entry for hisilicon,i2c-ascend910

On Mon, 24 Oct 2022 09:51:51 +0800, Weilong Chen wrote:
> Add the new compatible for HiSilicon i2c.
>
> Signed-off-by: Weilong Chen <[email protected]>
> ---
> Change since v7:
> - Fix yamllint errors, rename i2c-xxx to i2c-ascend910
> Link: https://lore.kernel.org/all/[email protected]/
>
> .../bindings/i2c/hisilicon,i2c-ascend910.yaml | 70 +++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 71 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
>

Reviewed-by: Rob Herring <[email protected]>

2022-10-26 01:00:18

by chenweilong

[permalink] [raw]
Subject: Re: [PATCH next v8 2/2] dt-bindings: i2c: add entry for hisilicon,i2c-ascend910

Thanks a lot.

On 2022/10/26 6:55, Rob Herring wrote:
> On Mon, 24 Oct 2022 09:51:51 +0800, Weilong Chen wrote:
>> Add the new compatible for HiSilicon i2c.
>>
>> Signed-off-by: Weilong Chen <[email protected]>
>> ---
>> Change since v7:
>> - Fix yamllint errors, rename i2c-xxx to i2c-ascend910
>> Link: https://lore.kernel.org/all/[email protected]/
>>
>> .../bindings/i2c/hisilicon,i2c-ascend910.yaml | 70 +++++++++++++++++++
>> MAINTAINERS | 1 +
>> 2 files changed, 71 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
>>
> Reviewed-by: Rob Herring <[email protected]>
>
> .



2022-10-29 00:16:54

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH next v8 2/2] dt-bindings: i2c: add entry for hisilicon,i2c-ascend910

On 23/10/2022 21:51, Weilong Chen wrote:
> Add the new compatible for HiSilicon i2c.
>
> Signed-off-by: Weilong Chen <[email protected]>

Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC. It might happen, that command when run on an older
kernel, gives you outdated entries. Therefore please be sure you base
your patches on recent Linux kernel.

> ---
> Change since v7:
> - Fix yamllint errors, rename i2c-xxx to i2c-ascend910
> Link: https://lore.kernel.org/all/[email protected]/
>
> .../bindings/i2c/hisilicon,i2c-ascend910.yaml | 70 +++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 71 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
>
> diff --git a/Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml b/Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
> new file mode 100644
> index 000000000000..918825a3026b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/hisilicon,i2c-ascend910.yaml
> @@ -0,0 +1,70 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/i2c/hisilicon,i2c-ascend910.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"

My previous comments apply.

> +
> +title: HiSilicon common I2C controller Device Tree Bindings
> +
> +maintainers:
> + - Yicong Yang <[email protected]>
> +
> +allOf:
> + - $ref: /schemas/i2c/i2c-controller.yaml#
> +
> +properties:
> + compatible:
> + const: hisilicon,i2c-ascend910
> + description:
> + The HiSilicon common I2C controller can be used for many different
> + types of SoC such as Huawei Ascend AI series chips.

Comment still applies.

> +
> + 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,i2c-ascend910";
> + reg = <0x38b0000 0x10000>;
> + interrupts = <0x0 120 0x4>;

Same here.


Best regards,
Krzysztof