Commit d4e14066 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'extcon-next-for-5.14' of...

Merge tag 'extcon-next-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon into char-misc-next

Chanwoo writes:

Update extcon next for v5.14

Detailed description for this pull request:
1. Update extcon-sm5502 provider driver
- Convert devicetree binding document sytle with yaml
  for extcon-sm5502.c and add support for SM5504 chip to extcon-sm5502.c.
- Use devm_regmap_add_irq_chip and probe_new for extcon-sm5502.c

2. Add missing modalias string for extcon-max8997.c.

3. Initialize the status data of extcon-intel-mrfld.c on probe time
in order to prevent the mismatch issue.

* tag 'extcon-next-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon:
  extcon: sm5502: Add support for SM5504
  extcon: sm5502: Refactor driver to use chip-specific struct
  dt-bindings: extcon: sm5502: Document siliconmitus,sm5504-muic
  dt-bindings: extcon: sm5502: Convert to DT schema
  extcon: sm5502: Implement i2c_driver->probe_new()
  extcon: sm5502: Use devm_regmap_add_irq_chip()
  extcon: max8997: Add missing modalias string
  extcon: sm5502: Drop invalid register write in sm5502_reg_data
  extcon: intel-mrfld: Sync hardware and software state on init
parents 5471a812 d97c0ff5
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line

* SM5502 MUIC (Micro-USB Interface Controller) device

The Silicon Mitus SM5502 is a MUIC (Micro-USB Interface Controller) device
which can detect the state of external accessory when external accessory is
attached or detached and button is pressed or released. It is interfaced to
the host controller using an I2C interface.

Required properties:
- compatible: Should be "siliconmitus,sm5502-muic"
- reg: Specifies the I2C slave address of the MUIC block. It should be 0x25
- interrupts: Interrupt specifiers for detection interrupt sources.

Example:

	sm5502@25 {
		compatible = "siliconmitus,sm5502-muic";
		interrupt-parent = <&gpx1>;
		interrupts = <5 0>;
		reg = <0x25>;
	};
+52 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/extcon/siliconmitus,sm5502-muic.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: SM5502/SM5504 MUIC (Micro-USB Interface Controller) device

maintainers:
  - Chanwoo Choi <cw00.choi@samsung.com>

description:
  The Silicon Mitus SM5502 is a MUIC (Micro-USB Interface Controller) device
  which can detect the state of external accessory when external accessory is
  attached or detached and button is pressed or released. It is interfaced to
  the host controller using an I2C interface.

properties:
  compatible:
    enum:
      - siliconmitus,sm5502-muic
      - siliconmitus,sm5504-muic

  reg:
    maxItems: 1
    description: I2C slave address of the device. Usually 0x25 for SM5502,
      0x14 for SM5504.

  interrupts:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        extcon@25 {
                compatible = "siliconmitus,sm5502-muic";
                reg = <0x25>;
                interrupt-parent = <&msmgpio>;
                interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
        };
    };
+1 −1
Original line number Diff line number Diff line
@@ -154,7 +154,7 @@ config EXTCON_RT8973A
	  from abnormal high input voltage (up to 28V).

config EXTCON_SM5502
	tristate "Silicon Mitus SM5502 EXTCON support"
	tristate "Silicon Mitus SM5502/SM5504 EXTCON support"
	depends on I2C
	select IRQ_DOMAIN
	select REGMAP_I2C
+9 −0
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ static int mrfld_extcon_probe(struct platform_device *pdev)
	struct intel_soc_pmic *pmic = dev_get_drvdata(dev->parent);
	struct regmap *regmap = pmic->regmap;
	struct mrfld_extcon_data *data;
	unsigned int status;
	unsigned int id;
	int irq, ret;

@@ -244,6 +245,14 @@ static int mrfld_extcon_probe(struct platform_device *pdev)
	/* Get initial state */
	mrfld_extcon_role_detect(data);

	/*
	 * Cached status value is used for cable detection, see comments
	 * in mrfld_extcon_cable_detect(), we need to sync cached value
	 * with a real state of the hardware.
	 */
	regmap_read(regmap, BCOVE_SCHGRIRQ1, &status);
	data->status = status;

	mrfld_extcon_clear(data, BCOVE_MIRQLVL1, BCOVE_LVL1_CHGR);
	mrfld_extcon_clear(data, BCOVE_MCHGRIRQ1, BCOVE_CHGRIRQ_ALL);

+1 −0
Original line number Diff line number Diff line
@@ -788,3 +788,4 @@ module_platform_driver(max8997_muic_driver);
MODULE_DESCRIPTION("Maxim MAX8997 Extcon driver");
MODULE_AUTHOR("Donggeun Kim <dg77.kim@samsung.com>");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:max8997-muic");
Loading