mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
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
6 changed files with 100 additions and 26 deletions
|
@ -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 */
|
||||
axp288_extcon_enable(info);
|
||||
|
||||
device_init_wakeup(dev, true);
|
||||
platform_set_drvdata(pdev, info);
|
||||
|
||||
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[] = {
|
||||
{ .name = "axp288_extcon" },
|
||||
{},
|
||||
|
@ -457,6 +488,7 @@ static struct platform_driver axp288_extcon_driver = {
|
|||
.id_table = axp288_extcon_table,
|
||||
.driver = {
|
||||
.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",
|
||||
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");
|
||||
return PTR_ERR(palmas_usb->id_gpiod);
|
||||
}
|
||||
|
||||
palmas_usb->vbus_gpiod = devm_gpiod_get_optional(&pdev->dev, "vbus",
|
||||
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");
|
||||
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;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(extcon_get_edev_name);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static inline const char *extcon_get_edev_name(struct extcon_dev *edev)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif /* CONFIG_EXTCON */
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue