mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 16:16:15 -04:00
typeC: add iio interface for typeC mode
typec mode add typeC mode iio interface to charge module Change-Id: I73ed231e93588606c9dd34755759ae6e31e5af57 Signed-off-by: chailu1 <chailu1@lenovo.com> Reviewed-on: https://gerrit.mot.com/2107389 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Haijian Ma <mahj8@motorola.com> Reviewed-by: Huosheng Liao <liaohs@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
1972d6de66
commit
0222c9e9e7
2 changed files with 67 additions and 1 deletions
|
|
@ -23,6 +23,7 @@
|
|||
#include <linux/version.h>
|
||||
#include <linux/iio/consumer.h>
|
||||
#include "inc/tcpci_typec.h"
|
||||
#include <linux/usb/mmi_discrete_typec.h>
|
||||
|
||||
#define RT_PD_MANAGER_VERSION "0.0.8_G"
|
||||
|
||||
|
|
@ -74,11 +75,12 @@ static const unsigned int rpm_extcon_cable[] = {
|
|||
enum iio_psy_property {
|
||||
POWER_SUPPLY_IIO_USB_REAL_TYPE = 0,
|
||||
POWER_SUPPLY_IIO_OTG_ENABLE,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE,
|
||||
POWER_SUPPLY_IIO_PROP_MAX,
|
||||
};
|
||||
|
||||
static const char * const iio_channel_map[] = {
|
||||
"usb_real_type", "otg_enable",
|
||||
"usb_real_type", "otg_enable", "typec_mode",
|
||||
};
|
||||
|
||||
static int mmi_get_psy_iio_property(struct rt_pd_manager_data *rpmd,
|
||||
|
|
@ -350,6 +352,9 @@ static int pd_tcp_notifier_call(struct notifier_block *nb,
|
|||
cancel_delayed_work_sync(&rpmd->usb_dwork);
|
||||
rpmd->usb_dr = DR_IDLE;
|
||||
schedule_delayed_work(&rpmd->usb_dwork, 0);
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_NONE;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
} else if (old_state == TYPEC_UNATTACHED &&
|
||||
(new_state == TYPEC_ATTACHED_SRC ||
|
||||
new_state == TYPEC_ATTACHED_DEBUG)) {
|
||||
|
|
@ -385,14 +390,23 @@ static int pd_tcp_notifier_call(struct notifier_block *nb,
|
|||
cancel_delayed_work_sync(&rpmd->usb_dwork);
|
||||
rpmd->usb_dr = DR_IDLE;
|
||||
schedule_delayed_work(&rpmd->usb_dwork, 0);
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_NONE;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
} else if (old_state == TYPEC_UNATTACHED &&
|
||||
new_state == TYPEC_ATTACHED_AUDIO) {
|
||||
dev_info(rpmd->dev, "%s Audio plug in\n", __func__);
|
||||
/* enable AudioAccessory connection */
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_SINK_AUDIO_ADAPTER;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
} else if (old_state == TYPEC_ATTACHED_AUDIO &&
|
||||
new_state == TYPEC_UNATTACHED) {
|
||||
dev_info(rpmd->dev, "%s Audio plug out\n", __func__);
|
||||
/* disable AudioAccessory connection */
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_NONE;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
}
|
||||
|
||||
if (new_state == TYPEC_UNATTACHED) {
|
||||
|
|
@ -451,13 +465,22 @@ static int pd_tcp_notifier_call(struct notifier_block *nb,
|
|||
switch (noti->typec_state.rp_level) {
|
||||
/* SNK_RP_3P0 */
|
||||
case TYPEC_CC_VOLT_SNK_3_0:
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_SOURCE_HIGH;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
break;
|
||||
/* SNK_RP_1P5 */
|
||||
case TYPEC_CC_VOLT_SNK_1_5:
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_SOURCE_MEDIUM;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
break;
|
||||
/* SNK_RP_STD */
|
||||
case TYPEC_CC_VOLT_SNK_DFT:
|
||||
default:
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_SOURCE_DEFAULT;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
break;
|
||||
}
|
||||
} else if (new_state == TYPEC_ATTACHED_CUSTOM_SRC ||
|
||||
|
|
@ -465,13 +488,22 @@ static int pd_tcp_notifier_call(struct notifier_block *nb,
|
|||
switch (noti->typec_state.rp_level) {
|
||||
/* DAM_3000 */
|
||||
case TYPEC_CC_VOLT_SNK_3_0:
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_SOURCE_HIGH;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
break;
|
||||
/* DAM_1500 */
|
||||
case TYPEC_CC_VOLT_SNK_1_5:
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_SOURCE_MEDIUM;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
break;
|
||||
/* DAM_500 */
|
||||
case TYPEC_CC_VOLT_SNK_DFT:
|
||||
default:
|
||||
val.intval = MMI_POWER_SUPPLY_TYPEC_SOURCE_DEFAULT;
|
||||
mmi_set_psy_iio_property(rpmd,
|
||||
POWER_SUPPLY_IIO_TYPEC_MODE, &val);
|
||||
break;
|
||||
}
|
||||
} else if (new_state == TYPEC_ATTACHED_NORP_SRC) {
|
||||
|
|
|
|||
34
include/linux/usb/mmi_discrete_typec.h
Normal file
34
include/linux/usb/mmi_discrete_typec.h
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
/* Copyright (c) 2020, 2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
* only version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef MMI_DISCRETE_TYPE_C_H
|
||||
#define MMI_DISCRETE_TYPE_C_H
|
||||
|
||||
/* Indicates USB Type-C CC connection status */
|
||||
enum power_supply_typec_mode {
|
||||
MMI_POWER_SUPPLY_TYPEC_NONE,
|
||||
|
||||
/* Acting as source */
|
||||
MMI_POWER_SUPPLY_TYPEC_SINK, /* Rd only */
|
||||
MMI_POWER_SUPPLY_TYPEC_SINK_POWERED_CABLE, /* Rd/Ra */
|
||||
MMI_POWER_SUPPLY_TYPEC_SINK_DEBUG_ACCESSORY,/* Rd/Rd */
|
||||
MMI_POWER_SUPPLY_TYPEC_SINK_AUDIO_ADAPTER, /* Ra/Ra */
|
||||
MMI_POWER_SUPPLY_TYPEC_POWERED_CABLE_ONLY, /* Ra only */
|
||||
|
||||
/* Acting as sink */
|
||||
MMI_POWER_SUPPLY_TYPEC_SOURCE_DEFAULT, /* Rp default */
|
||||
MMI_POWER_SUPPLY_TYPEC_SOURCE_MEDIUM, /* Rp 1.5A */
|
||||
MMI_POWER_SUPPLY_TYPEC_SOURCE_HIGH, /* Rp 3A */
|
||||
MMI_POWER_SUPPLY_TYPEC_NON_COMPLIANT,
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Reference in a new issue