18 Mar, 2020

4 commits

  • Read the PD host even status from the EC and send that to the notifier
    listeners, for more fine-grained event information.

    Signed-off-by: Prashant Malani
    Signed-off-by: Enric Balletbo i Serra
    Signed-off-by: Benson Leung

    Prashant Malani
     
  • Convert the ACPI driver into the equivalent platform driver, with the
    same ACPI match table as before. This allows the device driver to access
    the parent platform EC device and its cros_ec_device struct, which will
    be required to communicate with the EC to pull PD Host event information
    from it.

    Also change the ACPI driver name to "cros-usbpd-notify-acpi" so that
    there is no confusion between it and the "regular" platform driver on
    platforms that have both CONFIG_ACPI and CONFIG_OF enabled.

    Signed-off-by: Prashant Malani
    Signed-off-by: Enric Balletbo i Serra
    Signed-off-by: Benson Leung

    Prashant Malani
     
  • Introduce a device driver data structure, cros_usbpd_notify_data, in
    which we can store the notifier block object and pointers to the struct
    cros_ec_device and struct device objects.

    This will make it more convenient to access these pointers when
    executing both platform and ACPI callbacks.

    Signed-off-by: Prashant Malani
    Signed-off-by: Enric Balletbo i Serra
    Signed-off-by: Benson Leung

    Prashant Malani
     
  • cros-usbpd-notify notifier was returning NOTIFY_BAD when no host event
    was available in the MKBP message.
    But MKBP messages are used to transmit other information, so return
    NOTIFY_DONE instead, to allow other notifier to be called.

    Fixes: ec2daf6e33f9f ("platform: chrome: Add cros-usbpd-notify driver")
    Signed-off-by: Gwendal Grignou
    Signed-off-by: Benson Leung
    Signed-off-by: Enric Balletbo i Serra

    Gwendal Grignou
     

11 Feb, 2020

1 commit

  • ChromiumOS uses ACPI device with HID "GOOG0003" for power delivery
    related events. The existing cros-usbpd-charger driver relies on these
    events without ever actually receiving them on ACPI platforms. This is
    because in the ChromeOS kernel trees, the GOOG0003 device is owned by an
    ACPI driver that offers firmware updates to USB-C chargers.

    Introduce a new platform driver under cros-ec, the ChromeOS embedded
    controller, that handles these PD events and dispatches them
    appropriately over a notifier chain to all drivers that use them.

    On platforms that don't have the ACPI device defined, the driver gets
    instantiated for ECs which support the EC_FEATURE_USB_PD feature bit,
    and the notification events will get delivered using the MKBP event
    handling mechanism.

    Co-Developed-by: Prashant Malani
    Reviewed-by: Gwendal Grignou
    Reviewed-by: Benson Leung
    Signed-off-by: Jon Flatley
    Signed-off-by: Prashant Malani
    Acked-By: Enric Balletbo i Serra
    Signed-off-by: Benson Leung

    Jon Flatley