From a79fc340804358f1b951fa8ce0e309e54f151fca Mon Sep 17 00:00:00 2001 From: Kari Oikarinen Date: Wed, 5 Sep 2018 17:10:27 +0300 Subject: Disable USB gadget when shutting down This was previously done by the init script. Move it inside qdbd like the initialization was moved previously. Task-number: QTBUG-63029 Change-Id: I869138acd579f9f3f1f3af1ebf5583e7882296fa Reviewed-by: Samuli Piippo --- qdbd/usb-gadget/usbgadget.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'qdbd') diff --git a/qdbd/usb-gadget/usbgadget.cpp b/qdbd/usb-gadget/usbgadget.cpp index 599de48..265527e 100644 --- a/qdbd/usb-gadget/usbgadget.cpp +++ b/qdbd/usb-gadget/usbgadget.cpp @@ -120,6 +120,11 @@ const struct { }, }; +QString gadgetConfigPath() +{ + return Configuration::gadgetConfigFsDir() + QLatin1String("/UDC"); +} + UsbGadget::UsbGadget() : m_controlEndpoint(Configuration::functionFsDir() + "/ep0"), m_outEndpoint(Configuration::functionFsDir() + "/ep1"), @@ -149,6 +154,19 @@ UsbGadget::~UsbGadget() m_writeThread->terminate(); m_readThread->wait(); } + + // Disable USB gadget configuration + QFile gadgetConfigFile{gadgetConfigPath()}; + if (gadgetConfigFile.open(QIODevice::WriteOnly | QIODevice::Unbuffered)) { + if (gadgetConfigFile.write("") != -1) + qCDebug(usbC) << "Disabled USB gadget UDC driver"; + else + qCWarning(usbC) << "Could not disable USB gadget UDC driver when quitting"; + } else { + qCWarning(usbC) << "Could not open USB gadget UDC file for writing to disable"; + } + gadgetConfigFile.close(); + m_inEndpoint.close(); m_outEndpoint.close(); m_controlEndpoint.close(); @@ -295,20 +313,19 @@ void UsbGadget::initializeGadgetWithUdc() return; } - const QString gadgetConfigPath = Configuration::gadgetConfigFsDir() + QLatin1String("/UDC"); - QFile gadgetConfigFile{gadgetConfigPath}; + QFile gadgetConfigFile{gadgetConfigPath()}; if (!gadgetConfigFile.exists()) { qCCritical(usbC) << "Failed to initialize USB gadget, no gadget file found in" - << gadgetConfigPath; + << gadgetConfigPath(); return; } if (!gadgetConfigFile.open(QIODevice::ReadWrite | QIODevice::Unbuffered)) { - qCCritical(usbC) << "Failed to initialize USB gadget, can't open" << gadgetConfigPath; + qCCritical(usbC) << "Failed to initialize USB gadget, can't open" << gadgetConfigPath(); return; } if (gadgetConfigFile.write(driverName.toUtf8()) == -1) { qCCritical(usbC) << "Failed to initialize USB gadget, can't write to" - << gadgetConfigPath; + << gadgetConfigPath(); return; } gadgetConfigFile.close(); -- cgit v1.2.3