hidl: usb: Remove overheat reporting

* Not supported

Change-Id: I6b6b6a1fd00a1e28a3b00cd721d885552a9bb865
tirimbino
Tim Zimmermann 3 years ago committed by Jan Altensen
parent d37c2ae350
commit dc71585783
  1. 12
      hidl/usb/Android.bp
  2. 79
      hidl/usb/Usb.cpp
  3. 10
      hidl/usb/Usb.h

@ -34,20 +34,8 @@ cc_binary {
"android.hardware.usb@1.1", "android.hardware.usb@1.1",
"android.hardware.usb@1.2", "android.hardware.usb@1.2",
"android.hardware.usb@1.3", "android.hardware.usb@1.3",
"android.hardware.thermal@1.0",
"android.hardware.thermal@2.0",
"libcutils", "libcutils",
"android.frameworks.stats-V1-ndk_platform",
"pixelatoms-cpp",
"libbinder_ndk", "libbinder_ndk",
], ],
static_libs: [
"libpixelusb",
"libpixelstats",
],
export_shared_lib_headers: [
"android.frameworks.stats-V1-ndk_platform",
"pixelatoms-cpp",
],
proprietary: true, proprietary: true,
} }

@ -37,14 +37,7 @@
#include "Usb.h" #include "Usb.h"
#include <aidl/android/frameworks/stats/IStats.h>
#include <pixelstats/StatsHelper.h>
using aidl::android::frameworks::stats::IStats;
using android::base::GetProperty; using android::base::GetProperty;
using android::hardware::google::pixel::getStatsService;
using android::hardware::google::pixel::PixelAtoms::VendorUsbPortOverheat;
using android::hardware::google::pixel::reportUsbPortOverheat;
namespace android { namespace android {
namespace hardware { namespace hardware {
@ -93,13 +86,6 @@ constexpr char kContaminantDetectionPath[] = "i2c-max77759tcpc/contaminant_detec
constexpr char kStatusPath[] = "i2c-max77759tcpc/contaminant_detection_status"; constexpr char kStatusPath[] = "i2c-max77759tcpc/contaminant_detection_status";
constexpr char kTypecPath[] = "/sys/class/typec"; constexpr char kTypecPath[] = "/sys/class/typec";
constexpr char kDisableContatminantDetection[] = "vendor.usb.contaminantdisable"; constexpr char kDisableContatminantDetection[] = "vendor.usb.contaminantdisable";
constexpr char kOverheatStatsPath[] = "/sys/devices/platform/google,usbc_port_cooling_dev/";
constexpr char kOverheatStatsDev[] = "DRIVER=google,usbc_port_cooling_dev";
constexpr char kThermalZoneForTrip[] = "VIRTUAL-USB-THROTTLING";
constexpr char kThermalZoneForTempReadPrimary[] = "usb_pwr_therm2";
constexpr char kThermalZoneForTempReadSecondary1[] = "usb_pwr_therm";
constexpr char kThermalZoneForTempReadSecondary2[] = "qi_therm";
constexpr int kSamplingIntervalSec = 5;
int32_t readFile(const std::string &filename, std::string *contents) { int32_t readFile(const std::string &filename, std::string *contents) {
FILE *fp; FILE *fp;
@ -331,15 +317,7 @@ Usb::Usb()
: mLock(PTHREAD_MUTEX_INITIALIZER), : mLock(PTHREAD_MUTEX_INITIALIZER),
mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER), mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER),
mPartnerLock(PTHREAD_MUTEX_INITIALIZER), mPartnerLock(PTHREAD_MUTEX_INITIALIZER),
mPartnerUp(false), mPartnerUp(false) {
mOverheat(ZoneInfo(TemperatureType::USB_PORT, kThermalZoneForTrip,
ThrottlingSeverity::CRITICAL),
{ZoneInfo(TemperatureType::UNKNOWN, kThermalZoneForTempReadPrimary,
ThrottlingSeverity::NONE),
ZoneInfo(TemperatureType::UNKNOWN, kThermalZoneForTempReadSecondary1,
ThrottlingSeverity::NONE),
ZoneInfo(TemperatureType::UNKNOWN, kThermalZoneForTempReadSecondary2,
ThrottlingSeverity::NONE)}, kSamplingIntervalSec) {
pthread_condattr_t attr; pthread_condattr_t attr;
if (pthread_condattr_init(&attr)) { if (pthread_condattr_init(&attr)) {
ALOGE("pthread_condattr_init failed: %s", strerror(errno)); ALOGE("pthread_condattr_init failed: %s", strerror(errno));
@ -537,8 +515,7 @@ bool canSwitchRoleHelper(const std::string &portName, PortRoleType /*type*/) {
* The caller of this method would reconstruct the V1_0::PortStatus * The caller of this method would reconstruct the V1_0::PortStatus
* object if required. * object if required.
*/ */
Status getPortStatusHelper(hidl_vec<PortStatus> *currentPortStatus_1_2, HALVersion version, Status getPortStatusHelper(hidl_vec<PortStatus> *currentPortStatus_1_2, HALVersion version) {
android::hardware::usb::V1_3::implementation::Usb *usb) {
std::unordered_map<std::string, bool> names; std::unordered_map<std::string, bool> names;
Status result = getTypeCPortNamesHelper(&names); Status result = getTypeCPortNamesHelper(&names);
int i = -1; int i = -1;
@ -599,12 +576,6 @@ Status getPortStatusHelper(hidl_vec<PortStatus> *currentPortStatus_1_2, HALVersi
(*currentPortStatus_1_2)[i].status_1_1.status.currentMode = V1_0::PortMode::NONE; (*currentPortStatus_1_2)[i].status_1_1.status.currentMode = V1_0::PortMode::NONE;
} }
// Query temperature for the first connect
if (port.second && !usb->mPluggedTemperatureCelsius) {
usb->mOverheat.getCurrentTemperature(kThermalZoneForTempReadPrimary,
&usb->mPluggedTemperatureCelsius);
ALOGV("USB Initial temperature: %f", usb->mPluggedTemperatureCelsius);
}
ALOGI( ALOGI(
"%d:%s connected:%d canChangeMode:%d canChagedata:%d canChangePower:%d " "%d:%s connected:%d canChangeMode:%d canChagedata:%d canChangePower:%d "
"supportedModes:%d", "supportedModes:%d",
@ -631,16 +602,16 @@ void queryVersionHelper(android::hardware::usb::V1_3::implementation::Usb *usb,
pthread_mutex_lock(&usb->mLock); pthread_mutex_lock(&usb->mLock);
if (usb->mCallback_1_0 != NULL) { if (usb->mCallback_1_0 != NULL) {
if (callback_V1_2 != NULL) { if (callback_V1_2 != NULL) {
status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_2, usb); status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_2);
if (status == Status::SUCCESS) if (status == Status::SUCCESS)
queryMoistureDetectionStatus(currentPortStatus_1_2); queryMoistureDetectionStatus(currentPortStatus_1_2);
} else if (callback_V1_1 != NULL) { } else if (callback_V1_1 != NULL) {
status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_1, usb); status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_1);
currentPortStatus_1_1.resize(currentPortStatus_1_2->size()); currentPortStatus_1_1.resize(currentPortStatus_1_2->size());
for (unsigned long i = 0; i < currentPortStatus_1_2->size(); i++) for (unsigned long i = 0; i < currentPortStatus_1_2->size(); i++)
currentPortStatus_1_1[i] = (*currentPortStatus_1_2)[i].status_1_1; currentPortStatus_1_1[i] = (*currentPortStatus_1_2)[i].status_1_1;
} else { } else {
status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_0, usb); status = getPortStatusHelper(currentPortStatus_1_2, HALVersion::V1_0);
currentPortStatus.resize(currentPortStatus_1_2->size()); currentPortStatus.resize(currentPortStatus_1_2->size());
for (unsigned long i = 0; i < currentPortStatus_1_2->size(); i++) for (unsigned long i = 0; i < currentPortStatus_1_2->size(); i++)
currentPortStatus[i] = (*currentPortStatus_1_2)[i].status_1_1.status; currentPortStatus[i] = (*currentPortStatus_1_2)[i].status_1_1.status;
@ -692,39 +663,6 @@ Return<void> Usb::enableContaminantPresenceProtection(const hidl_string & /*port
return Void(); return Void();
} }
void report_overheat_event(android::hardware::usb::V1_3::implementation::Usb *usb) {
VendorUsbPortOverheat overheat_info;
std::string contents;
overheat_info.set_plug_temperature_deci_c(usb->mPluggedTemperatureCelsius * 10);
overheat_info.set_max_temperature_deci_c(usb->mOverheat.getMaxOverheatTemperature() * 10);
if (ReadFileToString(std::string(kOverheatStatsPath) + "trip_time", &contents)) {
overheat_info.set_time_to_overheat_secs(stoi(contents));
} else {
ALOGE("Unable to read trip_time");
return;
}
if (ReadFileToString(std::string(kOverheatStatsPath) + "hysteresis_time", &contents)) {
overheat_info.set_time_to_hysteresis_secs(stoi(contents));
} else {
ALOGE("Unable to read hysteresis_time");
return;
}
if (ReadFileToString(std::string(kOverheatStatsPath) + "cleared_time", &contents)) {
overheat_info.set_time_to_inactive_secs(stoi(contents));
} else {
ALOGE("Unable to read cleared_time");
return;
}
const std::shared_ptr<IStats> stats_client = getStatsService();
if (!stats_client) {
ALOGE("Unable to get AIDL Stats service");
} else {
reportUsbPortOverheat(stats_client, overheat_info);
}
}
struct data { struct data {
int uevent_fd; int uevent_fd;
android::hardware::usb::V1_3::implementation::Usb *usb; android::hardware::usb::V1_3::implementation::Usb *usb;
@ -752,10 +690,6 @@ static void uevent_event(uint32_t /*epevents*/, struct data *payload) {
payload->usb->mPartnerUp = true; payload->usb->mPartnerUp = true;
pthread_cond_signal(&payload->usb->mPartnerCV); pthread_cond_signal(&payload->usb->mPartnerCV);
pthread_mutex_unlock(&payload->usb->mPartnerLock); pthread_mutex_unlock(&payload->usb->mPartnerLock);
// Update Plugged temperature
payload->usb->mOverheat.getCurrentTemperature(kThermalZoneForTempReadPrimary,
&payload->usb->mPluggedTemperatureCelsius);
ALOGI("Usb Plugged temp: %f", payload->usb->mPluggedTemperatureCelsius);
} else if (!strncmp(cp, "DEVTYPE=typec_", strlen("DEVTYPE=typec_")) || } else if (!strncmp(cp, "DEVTYPE=typec_", strlen("DEVTYPE=typec_")) ||
!strncmp(cp, "DRIVER=max77759tcpc", !strncmp(cp, "DRIVER=max77759tcpc",
strlen("DRIVER=max77759tcpc"))) { strlen("DRIVER=max77759tcpc"))) {
@ -781,9 +715,6 @@ static void uevent_event(uint32_t /*epevents*/, struct data *payload) {
pthread_mutex_unlock(&payload->usb->mRoleSwitchLock); pthread_mutex_unlock(&payload->usb->mRoleSwitchLock);
} }
break; break;
} else if (!strncmp(cp, kOverheatStatsDev, strlen(kOverheatStatsDev))) {
ALOGV("Overheat Cooling device suez update");
report_overheat_event(payload->usb);
} }
/* advance to after the next \0 */ /* advance to after the next \0 */
while (*cp++) { while (*cp++) {

@ -21,7 +21,6 @@
#include <android/hardware/usb/1.2/types.h> #include <android/hardware/usb/1.2/types.h>
#include <android/hardware/usb/1.2/IUsbCallback.h> #include <android/hardware/usb/1.2/IUsbCallback.h>
#include <hidl/Status.h> #include <hidl/Status.h>
#include <pixelusb/UsbOverheatEvent.h>
#include <utils/Log.h> #include <utils/Log.h>
#define UEVENT_MSG_LEN 2048 #define UEVENT_MSG_LEN 2048
@ -45,10 +44,6 @@ using ::android::hardware::hidl_string;
using ::android::hardware::hidl_vec; using ::android::hardware::hidl_vec;
using ::android::hardware::Return; using ::android::hardware::Return;
using ::android::hardware::Void; using ::android::hardware::Void;
using ::android::hardware::google::pixel::usb::UsbOverheatEvent;
using ::android::hardware::google::pixel::usb::ZoneInfo;
using ::android::hardware::thermal::V2_0::TemperatureType;
using ::android::hardware::thermal::V2_0::ThrottlingSeverity;
using ::android::hardware::usb::V1_0::PortRole; using ::android::hardware::usb::V1_0::PortRole;
using ::android::hardware::usb::V1_0::PortRoleType; using ::android::hardware::usb::V1_0::PortRoleType;
using ::android::hardware::usb::V1_0::PortDataRole; using ::android::hardware::usb::V1_0::PortDataRole;
@ -100,11 +95,6 @@ struct Usb : public IUsb {
// Variable to signal partner coming back online after type switch // Variable to signal partner coming back online after type switch
bool mPartnerUp; bool mPartnerUp;
// Usb Overheat object for push suez event
UsbOverheatEvent mOverheat;
// Temperature when connected
float mPluggedTemperatureCelsius;
private: private:
pthread_t mPoll; pthread_t mPoll;
}; };

Loading…
Cancel
Save