Skip to content

Commit

Permalink
Merge tag 'i2c-for-6.2-rc1' of git://git.kernel.org/pub/scm/linux/ker…
Browse files Browse the repository at this point in the history
…nel/git/wsa/linux

Pull i2c updates from Wolfram Sang:
 "Core got a new helper 'i2c_client_get_device_id()', designware got
  some bigger updates, the rest is driver updates all over the place"

* tag 'i2c-for-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (41 commits)
  i2c: ismt: Fix an out-of-bounds bug in ismt_access()
  i2c: mux: reg: check return value after calling platform_get_resource()
  i2c: xiic: Make sure to disable clock on .remove()
  i2c: hisi: Add support to get clock frequency from clock
  i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe
  i2c: slave-eeprom: Convert to i2c's .probe_new()
  i2c: mux: pca954x: Convert to i2c's .probe_new()
  drivers/i2c: use simple i2c probe
  i2c: mux: pca9541: switch to using .probe_new
  i2c: gpio: Fix potential unused warning for 'i2c_gpio_dt_ids'
  i2c: qcom-geni: add support for I2C Master Hub variant
  i2c: qcom-geni: add desc struct to prepare support for I2C Master Hub variant
  soc: qcom: geni-se: add support for I2C Master Hub wrapper variant
  soc: qcom: geni-se: add desc struct to specify clocks from device match data
  dt-bindings: i2c: qcom-geni: document I2C Master Hub serial I2C engine
  dt-bindings: qcom: geni-se: document I2C Master Hub wrapper variant
  dt-bindings: i2c: renesas,riic: Document RZ/Five SoC
  i2c: tegra: Set ACPI node as primary fwnode
  i2c: smbus: add DDR support for SPD
  i2c: /pasemi: PASemi I2C controller IRQ enablement
  ...
  • Loading branch information
Linus Torvalds committed Dec 15, 2022
2 parents 785d21b + 39244cc commit ec9187e
Show file tree
Hide file tree
Showing 34 changed files with 623 additions and 327 deletions.
73 changes: 73 additions & 0 deletions Documentation/devicetree/bindings/i2c/hisilicon,ascend910-i2c.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/i2c/hisilicon,ascend910-i2c.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: HiSilicon common I2C controller

maintainers:
- Yicong Yang <yangyicong@hisilicon.com>

description:
The HiSilicon common I2C controller can be used for many different
types of SoC such as Huawei Ascend AI series chips.

allOf:
- $ref: /schemas/i2c/i2c-controller.yaml#

properties:
compatible:
const: hisilicon,ascend910-i2c

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:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
i2c@38b0000 {
compatible = "hisilicon,ascend910-i2c";
reg = <0x38b0000 0x10000>;
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
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>;
};
1 change: 1 addition & 0 deletions Documentation/devicetree/bindings/i2c/i2c-mt65xx.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ properties:
- const: mediatek,mt6577-i2c
- const: mediatek,mt6589-i2c
- const: mediatek,mt7622-i2c
- const: mediatek,mt7986-i2c
- const: mediatek,mt8168-i2c
- const: mediatek,mt8173-i2c
- const: mediatek,mt8183-i2c
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ properties:
- const: allwinner,sun6i-a31-i2c
- items:
- enum:
- allwinner,suniv-f1c100s-i2c
- allwinner,sun8i-a23-i2c
- allwinner,sun8i-a83t-i2c
- allwinner,sun8i-v536-i2c
Expand Down
64 changes: 54 additions & 10 deletions Documentation/devicetree/bindings/i2c/qcom,i2c-geni-qcom.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,19 @@ maintainers:
- Andy Gross <agross@kernel.org>
- Bjorn Andersson <bjorn.andersson@linaro.org>

allOf:
- $ref: /schemas/i2c/i2c-controller.yaml#

properties:
compatible:
const: qcom,geni-i2c
enum:
- qcom,geni-i2c
- qcom,geni-i2c-master-hub

clocks:
maxItems: 1
minItems: 1
maxItems: 2

clock-names:
const: se
minItems: 1
maxItems: 2

clock-frequency:
default: 100000
Expand All @@ -35,13 +36,12 @@ properties:
- const: rx

interconnects:
minItems: 2
maxItems: 3

interconnect-names:
items:
- const: qup-core
- const: qup-config
- const: qup-memory
minItems: 2
maxItems: 3

interrupts:
maxItems: 1
Expand Down Expand Up @@ -71,6 +71,50 @@ required:
- clock-names
- reg

allOf:
- $ref: /schemas/i2c/i2c-controller.yaml#
- if:
properties:
compatible:
contains:
const: qcom,geni-i2c-master-hub
then:
properties:
clocks:
minItems: 2

clock-names:
items:
- const: se
- const: core

dmas: false
dma-names: false

interconnects:
maxItems: 2

interconnect-names:
items:
- const: qup-core
- const: qup-config
else:
properties:
clocks:
maxItems: 1

clock-names:
const: se

interconnects:
minItems: 3

interconnect-names:
items:
- const: qup-core
- const: qup-config
- const: qup-memory

unevaluatedProperties: false

examples:
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/i2c/renesas,riic.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ properties:
- enum:
- renesas,riic-r7s72100 # RZ/A1H
- renesas,riic-r7s9210 # RZ/A2M
- renesas,riic-r9a07g043 # RZ/G2UL
- renesas,riic-r9a07g043 # RZ/G2UL and RZ/Five
- renesas,riic-r9a07g044 # RZ/G2{L,LC}
- renesas,riic-r9a07g054 # RZ/V2L
- const: renesas,riic-rz # RZ/A or RZ/G2L
Expand Down
44 changes: 38 additions & 6 deletions Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,19 @@ properties:
compatible:
enum:
- qcom,geni-se-qup
- qcom,geni-se-i2c-master-hub

reg:
description: QUP wrapper common register address and length.
maxItems: 1

clock-names:
items:
- const: m-ahb
- const: s-ahb
minItems: 1
maxItems: 2

clocks:
items:
- description: Master AHB Clock
- description: Slave AHB Clock
minItems: 1
maxItems: 2

"#address-cells":
const: 2
Expand Down Expand Up @@ -81,6 +80,39 @@ patternProperties:
description: GENI Serial Engine based UART Controller.
$ref: /schemas/serial/qcom,serial-geni-qcom.yaml#

allOf:
- if:
properties:
compatible:
contains:
const: qcom,geni-se-i2c-master-hub
then:
properties:
clock-names:
items:
- const: s-ahb

clocks:
items:
- description: Slave AHB Clock

iommus: false

patternProperties:
"spi@[0-9a-f]+$": false
"serial@[0-9a-f]+$": false
else:
properties:
clock-names:
items:
- const: m-ahb
- const: s-ahb

clocks:
items:
- description: Master AHB Clock
- description: Slave AHB Clock

additionalProperties: false

examples:
Expand Down
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -9290,6 +9290,7 @@ M: Yicong Yang <yangyicong@hisilicon.com>
L: linux-i2c@vger.kernel.org
S: Maintained
W: https://www.hisilicon.com
F: Documentation/devicetree/bindings/i2c/hisilicon,ascend910-i2c.yaml
F: drivers/i2c/busses/i2c-hisi.c

HISILICON LPC BUS DRIVER
Expand Down
2 changes: 1 addition & 1 deletion drivers/i2c/busses/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
30 changes: 21 additions & 9 deletions drivers/i2c/busses/i2c-amd-mp2-pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ static void amd_mp2_clear_reg(struct amd_mp2_dev *privdata)
static int amd_mp2_pci_init(struct amd_mp2_dev *privdata,
struct pci_dev *pci_dev)
{
int rc;
int irq_flag = 0, rc;

pci_set_drvdata(pci_dev, privdata);

Expand All @@ -311,17 +311,29 @@ static int amd_mp2_pci_init(struct amd_mp2_dev *privdata,
if (rc)
goto err_dma_mask;

/* Set up intx irq */
/* request and enable interrupt */
writel(0, privdata->mmio + AMD_P2C_MSG_INTEN);
pci_intx(pci_dev, 1);
rc = devm_request_irq(&pci_dev->dev, pci_dev->irq, amd_mp2_irq_isr,
IRQF_SHARED, dev_name(&pci_dev->dev), privdata);
if (rc)
pci_err(pci_dev, "Failure requesting irq %i: %d\n",
pci_dev->irq, rc);
rc = pci_alloc_irq_vectors(pci_dev, 1, 1, PCI_IRQ_ALL_TYPES);
if (rc < 0) {
dev_err(&pci_dev->dev, "Failed to allocate single IRQ err=%d\n", rc);
goto err_dma_mask;
}

privdata->dev_irq = pci_irq_vector(pci_dev, 0);
if (!pci_dev->msix_enabled && !pci_dev->msi_enabled)
irq_flag = IRQF_SHARED;

rc = devm_request_irq(&pci_dev->dev, privdata->dev_irq,
amd_mp2_irq_isr, irq_flag, dev_name(&pci_dev->dev), privdata);
if (rc) {
pci_err(pci_dev, "Failure requesting irq %i: %d\n", privdata->dev_irq, rc);
goto free_irq_vectors;
}

return rc;

free_irq_vectors:
free_irq(privdata->dev_irq, privdata);
err_dma_mask:
pci_clear_master(pci_dev);
err_pci_enable:
Expand Down Expand Up @@ -364,7 +376,7 @@ static void amd_mp2_pci_remove(struct pci_dev *pci_dev)
pm_runtime_forbid(&pci_dev->dev);
pm_runtime_get_noresume(&pci_dev->dev);

pci_intx(pci_dev, 0);
free_irq(privdata->dev_irq, privdata);
pci_clear_master(pci_dev);

amd_mp2_clear_reg(privdata);
Expand Down
1 change: 1 addition & 0 deletions drivers/i2c/busses/i2c-amd-mp2.h
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ struct amd_mp2_dev {
struct mutex c2p_lock;
u8 c2p_lock_busid;
unsigned int probed;
int dev_irq;
};

/* PCIe communication driver */
Expand Down
5 changes: 0 additions & 5 deletions drivers/i2c/busses/i2c-designware-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -625,10 +625,5 @@ void i2c_dw_disable(struct dw_i2c_dev *dev)
i2c_dw_release_lock(dev);
}

void i2c_dw_disable_int(struct dw_i2c_dev *dev)
{
regmap_write(dev->map, DW_IC_INTR_MASK, 0);
}

MODULE_DESCRIPTION("Synopsys DesignWare I2C bus adapter core");
MODULE_LICENSE("GPL");
Loading

0 comments on commit ec9187e

Please sign in to comment.