Patch "power: supply: axp288_charger: Use alt usb-id extcon on some x86 android tablets" has been added to the 6.3-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    power: supply: axp288_charger: Use alt usb-id extcon on some x86 android tablets

to the 6.3-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     power-supply-axp288_charger-use-alt-usb-id-extcon-on.patch
and it can be found in the queue-6.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit f7a513d7b198727d9deb439c0525738fb9fcfc94
Author: Hans de Goede <hdegoede@xxxxxxxxxx>
Date:   Sat Apr 1 17:06:51 2023 +0200

    power: supply: axp288_charger: Use alt usb-id extcon on some x86 android tablets
    
    [ Upstream commit ce38f3fc0f87a358a9560a3815265a94f1b38c37 ]
    
    x86 ACPI boards which ship with only Android as their factory image may
    have pretty broken ACPI tables. This includes broken _AEI ACPI GPIO event
    handlers, which are normally used to listen to the micro-USB ID pin and:
    
    1. Switch the USB-mux to the host / device USB controllers
    2. Disable Vbus path before enabling the 5V boost (AXP reg 0x30 bit 7)
    3. Turn 5V Vboost on / off
    
    On non broken systems where this is not done through an ACPI GPIO event
    handler, there is an ACPI INT3496 device describing the involved GPIOs
    which are handled by the extcon-intel-int3496 driver; and axp288-charger.ko
    listens to this extcon-device and disables the Vbus path when necessary.
    
    On x86 Android boards, with broken ACPI GPIO event handlers, these are
    disabled by acpi_quirk_skip_gpio_event_handlers() and an intel-int3496
    extcon device is manually instantiated by x86-android-tablets.ko .
    
    Add support to the axp288-charger code for this setup, so that it
    properly disables the Vbus path when necessary. Note this uses
    acpi_quirk_skip_gpio_event_handlers() to identify these systems,
    to avoid the need to add a separate DMI match table for this.
    
    Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/power/supply/axp288_charger.c b/drivers/power/supply/axp288_charger.c
index 15219ed43ce95..b5903193e2f96 100644
--- a/drivers/power/supply/axp288_charger.c
+++ b/drivers/power/supply/axp288_charger.c
@@ -836,6 +836,7 @@ static int axp288_charger_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
 	struct power_supply_config charger_cfg = {};
+	const char *extcon_name = NULL;
 	unsigned int val;
 
 	/*
@@ -872,8 +873,18 @@ static int axp288_charger_probe(struct platform_device *pdev)
 		return PTR_ERR(info->cable.edev);
 	}
 
-	if (acpi_dev_present(USB_HOST_EXTCON_HID, NULL, -1)) {
-		info->otg.cable = extcon_get_extcon_dev(USB_HOST_EXTCON_NAME);
+	/*
+	 * On devices with broken ACPI GPIO event handlers there also is no ACPI
+	 * "INT3496" (USB_HOST_EXTCON_HID) device. x86-android-tablets.ko
+	 * instantiates an "intel-int3496" extcon on these devs as a workaround.
+	 */
+	if (acpi_quirk_skip_gpio_event_handlers())
+		extcon_name = "intel-int3496";
+	else if (acpi_dev_present(USB_HOST_EXTCON_HID, NULL, -1))
+		extcon_name = USB_HOST_EXTCON_NAME;
+
+	if (extcon_name) {
+		info->otg.cable = extcon_get_extcon_dev(extcon_name);
 		if (IS_ERR(info->otg.cable)) {
 			dev_err_probe(dev, PTR_ERR(info->otg.cable),
 				      "extcon_get_extcon_dev(%s) failed\n",



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux