support both rndis and ncm, but not rndis + ncm am: 49a13bff74
Original change: https://googleplex-android-review.googlesource.com/c/device/google/gs101/+/15057012 Change-Id: I70616d47d2b41c1d8d1cf926d6a0bb7e5c872987
This commit is contained in:
commit
d5e6f7beab
2 changed files with 11 additions and 28 deletions
|
@ -44,8 +44,9 @@ on early-boot
|
|||
write /config/usb_gadget/g1/functions/rndis.gs4/class e0
|
||||
write /config/usb_gadget/g1/functions/rndis.gs4/subclass 01
|
||||
write /config/usb_gadget/g1/functions/rndis.gs4/protocol 03
|
||||
write /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.ncm/compatible_id RNDIS
|
||||
write /config/usb_gadget/g1/functions/rndis.gs4/ifname rndis%d
|
||||
setprop vendor.usb.rndis.config ncm.gs9
|
||||
setprop vendor.usb.rndis.config rndis.gs4
|
||||
|
||||
# midi function
|
||||
mkdir /config/usb_gadget/g1/functions/midi.gs5
|
||||
|
@ -62,6 +63,7 @@ on early-boot
|
|||
# ncm function
|
||||
mkdir /config/usb_gadget/g1/functions/ncm.gs9
|
||||
write /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id WINNCM
|
||||
write /config/usb_gadget/g1/functions/ncm.gs9/ifname ncm%d
|
||||
|
||||
# etr_miu function
|
||||
mkdir /config/usb_gadget/g1/functions/etr_miu.gs11
|
||||
|
|
|
@ -223,14 +223,12 @@ static V1_0::Status validateAndSetVidPid(uint64_t functions) {
|
|||
case static_cast<uint64_t>(GadgetFunction::NCM):
|
||||
if (!(vendorFunctions == "user" || vendorFunctions == ""))
|
||||
ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
|
||||
// TODO(b/170953147): need to request a new PID. Sharing PID of rndis now.
|
||||
ret = setVidPid("0x18d1", "0x4ee3");
|
||||
ret = setVidPid("0x18d1", "0x4eeb");
|
||||
break;
|
||||
case GadgetFunction::ADB | GadgetFunction::NCM:
|
||||
if (!(vendorFunctions == "user" || vendorFunctions == ""))
|
||||
ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
|
||||
// TODO(b/170953147): need to request a new PID. Sharing PID of rndis+adb now.
|
||||
ret = setVidPid("0x18d1", "0x4ee4");
|
||||
ret = setVidPid("0x18d1", "0x4eec");
|
||||
break;
|
||||
default:
|
||||
ALOGE("Combination not supported");
|
||||
|
@ -263,30 +261,15 @@ 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) {
|
||||
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++))
|
||||
|
@ -303,17 +286,15 @@ 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) {
|
||||
ALOGI("setCurrentUsbFunctions ncm");
|
||||
if (linkFunction("ncm.gs9", i++))
|
||||
return Status::ERROR;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue