mirror of https://gitee.com/openkylin/linux.git
Update extcon for 5.7
Detailed description for this pull request: 1. Update the extcon provider driver as following: - Add wakeup support for extcon-axp288.c - Clean-up code of -EPROBE_DEFER error case for extcon-palmas.c - Covert extcon-usbc-cros-ec.txt to yaml format 2. Export symbol of extcon_get_edev_name() -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEEsSpuqBtbWtRe4rLGnM3fLN7rz1MFAl56lX8WHGN3MDAuY2hv aUBzYW1zdW5nLmNvbQAKCRCczd8s3uvPU8qYD/96o/Uh7PSvPCawwOwxex4Zot+J c4h9xXNSSe/Pm7NUlQL5et4l+xQkCc/6dWWf9S0WhSoTxfh8aJ7zJkuuzR3K37tk /lMNQHBlRvgf2eb09TPAHjVwZP/aj4j+CFqdlicfcE9ajB4z5HLNQ6K9PgGNRazE RfwY0o14ySCm96M+90ntEAi4Izpa8PD+6f3CoWOA1guI3meyOmLhtZHoNk3P6Wg7 Yo+T8zSoqJCLOklmUEUeBS4H8kr5mTjvbF94ElRqhJhqOHgZ3n2FiMhMWnsEeQlf KwCVk0Jh4NAG/d8XOdz9UxKI8FHCwEsa/YLJD1ezD/GgWgns6loPBC3e5pFwbUYf 4se9urGA5jpQp5pSrvysh1qcg+P3b59el8ymTigONWiicZVPNRKiyCHp3ngRp8sa shJFENKIEfhtfTxY0dWegfM0EEgq2xLLJa7IG21xnGzO/xQ84iiW0sUdlCAgJpTN GJtkgRY3iRz5TG2sjoBaaxVffossg/GG0GUqruK38u4Q7trwPI4sTQgk2c4boXA3 4KD+eBboivaqDftUuAbR+umwvZ20HFg0yAB+Q6WAO+d8OfQDv5raGs2svapvvppB xJj4FqPmVbINC/jDPDNBzzE7AfhKPqHOoiyuS6f1SXEnnGe9Uu5Ms1TXN6AcIKcH JbqhwN8+mz9XnN/dTQ== =X0Vk -----END PGP SIGNATURE----- Merge tag 'extcon-next-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon into char-misc-next Chanwoo writes: Update extcon for 5.7 Detailed description for this pull request: 1. Update the extcon provider driver as following: - Add wakeup support for extcon-axp288.c - Clean-up code of -EPROBE_DEFER error case for extcon-palmas.c - Covert extcon-usbc-cros-ec.txt to yaml format 2. Export symbol of extcon_get_edev_name() * tag 'extcon-next-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon: extcon: axp288: Add wakeup support extcon: Mark extcon_get_edev_name() function as exported symbol extcon: palmas: Hide error messages if gpio returns -EPROBE_DEFER dt-bindings: extcon: usbc-cros-ec: convert extcon-usbc-cros-ec.txt to yaml format
This commit is contained in:
commit
b83f68776b
|
@ -1,24 +0,0 @@
|
||||||
ChromeOS EC USB Type-C cable and accessories detection
|
|
||||||
|
|
||||||
On ChromeOS systems with USB Type C ports, the ChromeOS Embedded Controller is
|
|
||||||
able to detect the state of external accessories such as display adapters
|
|
||||||
or USB devices when said accessories are attached or detached.
|
|
||||||
|
|
||||||
The node for this device must be under a cros-ec node like google,cros-ec-spi
|
|
||||||
or google,cros-ec-i2c.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Should be "google,extcon-usbc-cros-ec".
|
|
||||||
- google,usb-port-id: Specifies the USB port ID to use.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
cros-ec@0 {
|
|
||||||
compatible = "google,cros-ec-i2c";
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
extcon {
|
|
||||||
compatible = "google,extcon-usbc-cros-ec";
|
|
||||||
google,usb-port-id = <0>;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/extcon/extcon-usbc-cros-ec.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: ChromeOS EC USB Type-C cable and accessories detection
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Benson Leung <bleung@chromium.org>
|
||||||
|
- Enric Balletbo i Serra <enric.balletbo@collabora.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
On ChromeOS systems with USB Type C ports, the ChromeOS Embedded Controller is
|
||||||
|
able to detect the state of external accessories such as display adapters
|
||||||
|
or USB devices when said accessories are attached or detached.
|
||||||
|
The node for this device must be under a cros-ec node like google,cros-ec-spi
|
||||||
|
or google,cros-ec-i2c.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: google,extcon-usbc-cros-ec
|
||||||
|
|
||||||
|
google,usb-port-id:
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description: the port id
|
||||||
|
minimum: 0
|
||||||
|
maximum: 255
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- google,usb-port-id
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
spi0 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
cros-ec@0 {
|
||||||
|
compatible = "google,cros-ec-spi";
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
usbc_extcon0: extcon0 {
|
||||||
|
compatible = "google,extcon-usbc-cros-ec";
|
||||||
|
google,usb-port-id = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usbc_extcon1: extcon1 {
|
||||||
|
compatible = "google,extcon-usbc-cros-ec";
|
||||||
|
google,usb-port-id = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -443,9 +443,40 @@ static int axp288_extcon_probe(struct platform_device *pdev)
|
||||||
/* Start charger cable type detection */
|
/* Start charger cable type detection */
|
||||||
axp288_extcon_enable(info);
|
axp288_extcon_enable(info);
|
||||||
|
|
||||||
|
device_init_wakeup(dev, true);
|
||||||
|
platform_set_drvdata(pdev, info);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __maybe_unused axp288_extcon_suspend(struct device *dev)
|
||||||
|
{
|
||||||
|
struct axp288_extcon_info *info = dev_get_drvdata(dev);
|
||||||
|
|
||||||
|
if (device_may_wakeup(dev))
|
||||||
|
enable_irq_wake(info->irq[VBUS_RISING_IRQ]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __maybe_unused axp288_extcon_resume(struct device *dev)
|
||||||
|
{
|
||||||
|
struct axp288_extcon_info *info = dev_get_drvdata(dev);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wakeup when a charger is connected to do charger-type
|
||||||
|
* connection and generate an extcon event which makes the
|
||||||
|
* axp288 charger driver set the input current limit.
|
||||||
|
*/
|
||||||
|
if (device_may_wakeup(dev))
|
||||||
|
disable_irq_wake(info->irq[VBUS_RISING_IRQ]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static SIMPLE_DEV_PM_OPS(axp288_extcon_pm_ops, axp288_extcon_suspend,
|
||||||
|
axp288_extcon_resume);
|
||||||
|
|
||||||
static const struct platform_device_id axp288_extcon_table[] = {
|
static const struct platform_device_id axp288_extcon_table[] = {
|
||||||
{ .name = "axp288_extcon" },
|
{ .name = "axp288_extcon" },
|
||||||
{},
|
{},
|
||||||
|
@ -457,6 +488,7 @@ static struct platform_driver axp288_extcon_driver = {
|
||||||
.id_table = axp288_extcon_table,
|
.id_table = axp288_extcon_table,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "axp288_extcon",
|
.name = "axp288_extcon",
|
||||||
|
.pm = &axp288_extcon_pm_ops,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -205,14 +205,18 @@ static int palmas_usb_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
palmas_usb->id_gpiod = devm_gpiod_get_optional(&pdev->dev, "id",
|
palmas_usb->id_gpiod = devm_gpiod_get_optional(&pdev->dev, "id",
|
||||||
GPIOD_IN);
|
GPIOD_IN);
|
||||||
if (IS_ERR(palmas_usb->id_gpiod)) {
|
if (PTR_ERR(palmas_usb->id_gpiod) == -EPROBE_DEFER) {
|
||||||
|
return -EPROBE_DEFER;
|
||||||
|
} else if (IS_ERR(palmas_usb->id_gpiod)) {
|
||||||
dev_err(&pdev->dev, "failed to get id gpio\n");
|
dev_err(&pdev->dev, "failed to get id gpio\n");
|
||||||
return PTR_ERR(palmas_usb->id_gpiod);
|
return PTR_ERR(palmas_usb->id_gpiod);
|
||||||
}
|
}
|
||||||
|
|
||||||
palmas_usb->vbus_gpiod = devm_gpiod_get_optional(&pdev->dev, "vbus",
|
palmas_usb->vbus_gpiod = devm_gpiod_get_optional(&pdev->dev, "vbus",
|
||||||
GPIOD_IN);
|
GPIOD_IN);
|
||||||
if (IS_ERR(palmas_usb->vbus_gpiod)) {
|
if (PTR_ERR(palmas_usb->vbus_gpiod) == -EPROBE_DEFER) {
|
||||||
|
return -EPROBE_DEFER;
|
||||||
|
} else if (IS_ERR(palmas_usb->vbus_gpiod)) {
|
||||||
dev_err(&pdev->dev, "failed to get vbus gpio\n");
|
dev_err(&pdev->dev, "failed to get vbus gpio\n");
|
||||||
return PTR_ERR(palmas_usb->vbus_gpiod);
|
return PTR_ERR(palmas_usb->vbus_gpiod);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1406,6 +1406,7 @@ const char *extcon_get_edev_name(struct extcon_dev *edev)
|
||||||
{
|
{
|
||||||
return !edev ? NULL : edev->name;
|
return !edev ? NULL : edev->name;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(extcon_get_edev_name);
|
||||||
|
|
||||||
static int __init extcon_class_init(void)
|
static int __init extcon_class_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -286,6 +286,11 @@ static inline struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev,
|
||||||
{
|
{
|
||||||
return ERR_PTR(-ENODEV);
|
return ERR_PTR(-ENODEV);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline const char *extcon_get_edev_name(struct extcon_dev *edev)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
#endif /* CONFIG_EXTCON */
|
#endif /* CONFIG_EXTCON */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue