diff options
author | Ray Chi <raychi@google.com> | 2022-04-12 16:47:17 +0800 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-04-14 03:59:15 +0000 |
commit | ee5795e8503186e4eb76a3f5483f58faebe77965 (patch) | |
tree | 8bd2845ad1a669f08527ae2ea6d8d2e8628b0bbf | |
parent | 465c48ad2582b5bf5da8632cdbed2351da01a596 (diff) | |
download | gs201-ee5795e8503186e4eb76a3f5483f58faebe77965.tar.gz |
usb: change function sequence if debug functions are enabled
On Windows platforms, wrong function sequnce will cause usb
driver installing not working. This patch will modify the
function sequence when debug functions are enabled.
Bug: 228800277
Test: tethering is working when debug functions are enabled.
Change-Id: I9f8b02354617b08a34fb4641ac710f32dabc643e
-rw-r--r-- | usb/gadget/UsbGadget.cpp | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/usb/gadget/UsbGadget.cpp b/usb/gadget/UsbGadget.cpp index 2a1e16c..8fe6992 100644 --- a/usb/gadget/UsbGadget.cpp +++ b/usb/gadget/UsbGadget.cpp @@ -165,7 +165,6 @@ static V1_0::Status validateAndSetVidPid(uint64_t functions) { } break; case static_cast<uint64_t>(GadgetFunction::RNDIS): - case GadgetFunction::RNDIS | GadgetFunction::NCM: if (!(vendorFunctions == "user" || vendorFunctions == "")) { ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str()); ret = Status::CONFIGURATION_NOT_SUPPORTED; @@ -174,7 +173,6 @@ static V1_0::Status validateAndSetVidPid(uint64_t functions) { } break; case GadgetFunction::ADB | GadgetFunction::RNDIS: - case GadgetFunction::ADB | GadgetFunction::RNDIS | GadgetFunction::NCM: if (vendorFunctions == "dm") { ret = setVidPid("0x04e8", "0x6862"); } else { @@ -309,30 +307,20 @@ V1_0::Status UsbGadget::setupFunctions(uint64_t functions, bool ffsEnabled = false; int i = 0; - // Use the NCM support hack because the gadget function has no NCM definition. - // TODO: add formal NCM function setup once gadget function supports NCM. - uint64_t usbFunctions = functions; - bool ncmEnabled = false; - const std::string vendorRndisConfig = GetProperty(google::pixel::usb::kVendorRndisConfig, ""); - if ((functions & GadgetFunction::RNDIS) && (vendorRndisConfig.find("ncm.gs", 0) == 0)) { - ncmEnabled = true; - usbFunctions &= ~static_cast<uint64_t>(GadgetFunction::RNDIS); - } - - if (addGenericAndroidFunctions(&monitorFfs, usbFunctions, &ffsEnabled, &i) != + if (addGenericAndroidFunctions(&monitorFfs, functions, &ffsEnabled, &i) != Status::SUCCESS) return Status::ERROR; - if ((functions & GadgetFunction::NCM) != 0) { + std::string vendorFunctions = getVendorFunctions(); + + if (((functions & GadgetFunction::NCM) != 0) && (vendorFunctions != "dm")) { if (linkFunction("ncm.gs9", i++)) return Status::ERROR; } - std::string vendorFunctions = getVendorFunctions(); - if (vendorFunctions == "dm") { ALOGI("enable usbradio debug functions"); - if ((usbFunctions & GadgetFunction::RNDIS) != 0) { + if ((functions & GadgetFunction::RNDIS) != 0) { if (linkFunction("acm.gs6", i++)) return Status::ERROR; if (linkFunction("dm.gs7", i++)) @@ -353,17 +341,14 @@ V1_0::Status UsbGadget::setupFunctions(uint64_t functions, return Status::ERROR; } - if ((usbFunctions & GadgetFunction::ADB) != 0) { + if ((functions & GadgetFunction::ADB) != 0) { ffsEnabled = true; if (addAdb(&monitorFfs, &i) != Status::SUCCESS) return Status::ERROR; } - // Reordering NCM function makes Windows generic NCM driver work when vendor funcs are enabled. - // TODO: possibly remove the reordering once vendor function Windows driver supports NCM. - if (ncmEnabled) { - ALOGI("set ncm function"); - if (linkFunction(vendorRndisConfig.c_str(), i++)) + if (((functions & GadgetFunction::NCM) != 0) && (vendorFunctions == "dm")) { + if (linkFunction("ncm.gs9", i++)) return Status::ERROR; } |