Message ID | 20221021035638.203929-1-chenweilong@huawei.com |
---|---|
State | Superseded |
Headers | show |
Series | [next,v7,1/2] i2c: hisi: Add initial device tree support | expand |
On 20/10/2022 23:56, Weilong Chen wrote: > Add the new compatible for HiSilicon i2c. > > Signed-off-by: Weilong Chen <chenweilong@huawei.com> > --- > Change since v6: > - Rename to hisilicon,i2c-ascend910.yaml > - Change all IIC to I2C > - Add maintainer name > Link: https://lore.kernel.org/lkml/7520818b-de40-7f2a-1b03-b1dcd29a2023@huawei.com/T/#ma89d78cef45e7ac6f2c6251ed958e8658e5c1eb5 > 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. > .../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..f4f532d69670 > --- /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-xxx.yaml#" > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" Drop quotes > + > +title: HiSilicon common I2C controller Device Tree Bindings Drop "Device Tree bindings" > + > +maintainers: > + - Yicong Yang <yangyicong@hisilicon.com> > + > +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. Description goes to top level description. > + > + 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>; Use defines for constants. Best regards, Krzysztof
On 2022/10/29 7:45, Krzysztof Kozlowski wrote: > On 20/10/2022 23:56, Weilong Chen wrote: >> Add the new compatible for HiSilicon i2c. >> >> Signed-off-by: Weilong Chen <chenweilong@huawei.com> >> --- >> Change since v6: >> - Rename to hisilicon,i2c-ascend910.yaml >> - Change all IIC to I2C >> - Add maintainer name >> Link: https://lore.kernel.org/lkml/7520818b-de40-7f2a-1b03-b1dcd29a2023@huawei.com/T/#ma89d78cef45e7ac6f2c6251ed958e8658e5c1eb5 >> > 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. Thanks for review, I'll fix this. > > >> .../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..f4f532d69670 >> --- /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-xxx.yaml#" >> +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > Drop quotes > >> + >> +title: HiSilicon common I2C controller Device Tree Bindings > Drop "Device Tree bindings" > >> + >> +maintainers: >> + - Yicong Yang <yangyicong@hisilicon.com> >> + >> +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. > Description goes to top level description. > >> + >> + 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>; > Use defines for constants. > > Best regards, > Krzysztof > > .
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);