From 126fd237b2d280ac95889f8499d6a00135c08f6c Mon Sep 17 00:00:00 2001 From: zxystd <1051244836@qq.com> Date: Mon, 5 Apr 2021 10:30:57 +0800 Subject: [PATCH] use DRV_NAME macro instead of getName to compat with 10.15 below macOS versions of system since the API will return NULL and caused KP. --- Ath3kBT/Ath3kBT.cpp | 92 ++++++++++++++++++++++----------------------- Ath3kBT/Ath3kBT.hpp | 2 + 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/Ath3kBT/Ath3kBT.cpp b/Ath3kBT/Ath3kBT.cpp index b70236a..513cd77 100644 --- a/Ath3kBT/Ath3kBT.cpp +++ b/Ath3kBT/Ath3kBT.cpp @@ -20,13 +20,13 @@ OSDefineMetaClassAndStructors(Ath3kBT, AtherosFWService) bool Ath3kBT::init(OSDictionary *propTable) { - IOLog("%s::probe\n", getName()); + IOLog("%s::probe\n", DRV_NAME); return (super::init(propTable)); } IOService* Ath3kBT::probe(IOService *provider, SInt32 *score) { - IOLog("%s::probe\n", getName()); + IOLog("%s::probe\n", DRV_NAME); super::probe(provider, score); return this; } @@ -36,48 +36,48 @@ bool Ath3kBT::start(IOService *provider) IOReturn err; const StandardUSB::ConfigurationDescriptor* cd; - IOLog("%s::start!\n", getName()); + IOLog("%s::start!\n", DRV_NAME); m_pUsbDevice = OSDynamicCast(IOUSBHostDevice, provider); if(!m_pUsbDevice) { - IOLog("%s::start - Provider isn't a USB device!!!\n", getName()); + IOLog("%s::start - Provider isn't a USB device!!!\n", DRV_NAME); return false; } err = m_pUsbDevice->setConfiguration(0); if (err) { - IOLog("%s::start - failed to reset the device\n", getName()); + IOLog("%s::start - failed to reset the device\n", DRV_NAME); return false; } else { - IOLog("%s::start: device reset\n", getName()); + IOLog("%s::start: device reset\n", DRV_NAME); } int numconf = 0; if ((numconf = m_pUsbDevice->getDeviceDescriptor()->bNumConfigurations) < 1) { - IOLog("%s::start - no composite configurations\n", getName()); + IOLog("%s::start - no composite configurations\n", DRV_NAME); return false; } - IOLog("%s::start: num configurations %d\n", getName(), numconf); + IOLog("%s::start: num configurations %d\n", DRV_NAME, numconf); cd = m_pUsbDevice->getConfigurationDescriptor(0); if (!cd) { - IOLog("%s::start - no config descriptor\n", getName()); + IOLog("%s::start - no config descriptor\n", DRV_NAME); return false; } if (!m_pUsbDevice->open(this)) { - IOLog("%s::start - unable to open device for configuration\n", getName()); + IOLog("%s::start - unable to open device for configuration\n", DRV_NAME); return false; } err = m_pUsbDevice->setConfiguration(cd->bConfigurationValue, true); if (err) { - IOLog("%s::start - unable to set the configuration\n", getName()); + IOLog("%s::start - unable to set the configuration\n", DRV_NAME); m_pUsbDevice->close(this); return false; } @@ -86,7 +86,7 @@ bool Ath3kBT::start(IOService *provider) err = getDeviceStatus(this, &status); if (err) { - IOLog("%s::start - unable to get device status\n", getName()); + IOLog("%s::start - unable to get device status\n", DRV_NAME); m_pUsbDevice->close(this); return false; } @@ -110,14 +110,14 @@ bool Ath3kBT::start(IOService *provider) iterator->release(); if (!intf) { - IOLog("%s::start - unable to find interface\n", getName()); + IOLog("%s::start - unable to find interface\n", DRV_NAME); m_pUsbDevice->close(this); return false; } if (!intf->open(this)) { - IOLog("%s::start - unable to open interface\n", getName()); + IOLog("%s::start - unable to open interface\n", DRV_NAME); m_pUsbDevice->close(this); return false; } @@ -125,7 +125,7 @@ bool Ath3kBT::start(IOService *provider) const StandardUSB::ConfigurationDescriptor *configDescriptor = intf->getConfigurationDescriptor(); const StandardUSB::InterfaceDescriptor *interfaceDescriptor = intf->getInterfaceDescriptor(); if (configDescriptor == NULL || interfaceDescriptor == NULL) { - IOLog("%s::start find descriptor NULL\n", getName()); + IOLog("%s::start find descriptor NULL\n", DRV_NAME); return false; } const EndpointDescriptor *endpointDescriptor = NULL; @@ -134,10 +134,10 @@ bool Ath3kBT::start(IOService *provider) uint8_t epType = StandardUSB::getEndpointType(endpointDescriptor); uint8_t epNum = StandardUSB::getEndpointNumber(endpointDescriptor); if (epDirection == kUSBOut && epType == kUSBBulk && epNum == 2) { - IOLog("%s::start Found Bulk out endpoint!\n", getName()); + IOLog("%s::start Found Bulk out endpoint!\n", DRV_NAME); m_pBulkWritePipe = intf->copyPipe(StandardUSB::getEndpointAddress(endpointDescriptor)); if (m_pBulkWritePipe == NULL) { - IOLog("%s::start copy Bulk pipe fail\n", getName()); + IOLog("%s::start copy Bulk pipe fail\n", DRV_NAME); return false; } m_pBulkWritePipe->retain(); @@ -151,26 +151,26 @@ bool Ath3kBT::start(IOService *provider) makeUsable(); if (!loadPatch()) { - IOLog("%s::start Loading patch file failed\n", getName()); + IOLog("%s::start Loading patch file failed\n", DRV_NAME); goto done; } if (!loadSysCfg()) { - IOLog("%s::start Loading sysconfig file failed\n", getName()); + IOLog("%s::start Loading sysconfig file failed\n", DRV_NAME); goto done; } if (!setNormalMode()) { - IOLog("%s::start Set normal mode failed\n", getName()); + IOLog("%s::start Set normal mode failed\n", DRV_NAME); goto done; } // switchPID(this); - IOLog("%s: firmware loaded successfully!\n", getName()); + IOLog("%s: firmware loaded successfully!\n", DRV_NAME); err = getDeviceStatus(this, &status); - IOLog("%s::start: device status %d\n", getName(), (int)status); + IOLog("%s::start: device status %d\n", DRV_NAME, (int)status); done: @@ -182,46 +182,46 @@ bool Ath3kBT::start(IOService *provider) void Ath3kBT::stop(IOService *provider) { - IOLog("%s::stop\n", getName()); + IOLog("%s::stop\n", DRV_NAME); PMstop(); super::stop(provider); } void Ath3kBT::free() { - IOLog("%s::free\n", getName()); + IOLog("%s::free\n", DRV_NAME); PMstop(); super::free(); } IOReturn Ath3kBT::setPowerState(unsigned long powerStateOrdinal, IOService *whatDevice) { -// IOLog("%s::setPowerState powerStateOrdinal=%lu\n", powerStateOrdinal, getName()); +// IOLog("%s::setPowerState powerStateOrdinal=%lu\n", powerStateOrdinal, DRV_NAME); return IOPMAckImplied; } bool Ath3kBT::handleOpen(IOService *forClient, IOOptionBits options, void *arg ) { - IOLog("%s::handleOpen\n", getName()); + IOLog("%s::handleOpen\n", DRV_NAME); return super::handleOpen(forClient, options, arg); } void Ath3kBT::handleClose(IOService *forClient, IOOptionBits options ) { - IOLog("%s::handleClose\n", getName()); + IOLog("%s::handleClose\n", DRV_NAME); super::handleClose(forClient, options); } IOReturn Ath3kBT::message(UInt32 type, IOService *provider, void *argument) { - IOLog("%s::message\n", getName()); + IOLog("%s::message\n", DRV_NAME); switch ( type ) { case kIOMessageServiceIsTerminated: if (m_pUsbDevice != NULL && m_pUsbDevice->isOpen(this)) { - IOLog("%s::message - service is terminated - closing device\n", getName()); + IOLog("%s::message - service is terminated - closing device\n", DRV_NAME); } break; @@ -239,13 +239,13 @@ IOReturn Ath3kBT::message(UInt32 type, IOService *provider, void *argument) bool Ath3kBT::terminate(IOOptionBits options) { - IOLog("%s::terminate\n", getName()); + IOLog("%s::terminate\n", DRV_NAME); return super::terminate(options); } bool Ath3kBT::finalize(IOOptionBits options) { - IOLog("%s::finalize\n", getName()); + IOLog("%s::finalize\n", DRV_NAME); return super::finalize(options); } @@ -311,11 +311,11 @@ bool Ath3kBT::setNormalMode() bool ret = false; StandardUSB::DeviceRequest request; if (getVendorState(this, &fw_state) != kIOReturnSuccess) { - IOLog("%s Can't get state to change to normal mode err\n", getName()); + IOLog("%s Can't get state to change to normal mode err\n", DRV_NAME); return ret; } if ((fw_state & ATH3K_MODE_MASK) == ATH3K_NORMAL_MODE) { - IOLog("%s firmware was already in normal mode\n", getName()); + IOLog("%s firmware was already in normal mode\n", DRV_NAME); return true; } request.bmRequestType = makeDeviceRequestbmRequestType(kRequestDirectionIn, kRequestTypeVendor, kRequestRecipientDevice); @@ -326,7 +326,7 @@ bool Ath3kBT::setNormalMode() uint32_t bytesTransferred = 0; IOReturn result = m_pUsbDevice->deviceRequest(this, request, (void *)NULL, bytesTransferred, kUSBHostStandardRequestCompletionTimeout); if (result != kIOReturnSuccess) { - IOLog("%s set normal mode fail\n", getName()); + IOLog("%s set normal mode fail\n", DRV_NAME); return false; } return true; @@ -341,11 +341,11 @@ bool Ath3kBT::loadSysCfg() bool ret = false; if (getVendorState(this, &fw_state) != kIOReturnSuccess) { - IOLog("%s Can't get state to change to load configuration err\n", getName()); + IOLog("%s Can't get state to change to load configuration err\n", DRV_NAME); return ret; } if (getVendorVersion(this, &fw_version) != kIOReturnSuccess) { - IOLog("Can't get version to change to load ram patch err"); + IOLog("%s Can't get version to change to load ram patch err", DRV_NAME); return ret; } switch (fw_version.ref_clock) { @@ -367,12 +367,12 @@ bool Ath3kBT::loadSysCfg() snprintf(filename, ATH3K_NAME_LEN, "ramps_0x%08x_%d%s", __le32_to_cpu(fw_version.rom_version), clk_value, ".dfu"); - IOLog("%s try to load syscfg file %s\n", getName(), filename); + IOLog("%s try to load syscfg file %s\n", DRV_NAME, filename); OSData *fwData = getFWDescByName(filename); if (fwData == NULL) { - IOLog("%s can not find syscfg file\n", getName()); + IOLog("%s can not find syscfg file\n", DRV_NAME); return false; } @@ -388,29 +388,29 @@ bool Ath3kBT::loadPatch() bool ret = false; if (getVendorState(this, &fw_state) != kIOReturnSuccess) { - IOLog("%s Can't get state to change to load ram patch err\n", getName()); + IOLog("%s Can't get state to change to load ram patch err\n", DRV_NAME); return ret; } if (fw_state & ATH3K_PATCH_UPDATE) { - IOLog("%s Patch was already downloaded", getName()); + IOLog("%s Patch was already downloaded", DRV_NAME); return true; } if (getVendorVersion(this, &fw_version) != kIOReturnSuccess) { - IOLog("Can't get version to change to load ram patch err"); + IOLog("%s Can't get version to change to load ram patch err", DRV_NAME); return ret; } snprintf(filename, ATH3K_NAME_LEN, "AthrBT_0x%08x.dfu", __le32_to_cpu(fw_version.rom_version)); - IOLog("%s try to load patch rom file %s\n", getName(), filename); + IOLog("%s try to load patch rom file %s\n", DRV_NAME, filename); OSData *fwData = getFWDescByName(filename); if (fwData == NULL) { - IOLog("%s can not find patch rom file\n", getName()); + IOLog("%s can not find patch rom file\n", DRV_NAME); return false; } pt_rom_version = get_unaligned_le32((char *)fwData->getBytesNoCopy() + @@ -420,7 +420,7 @@ bool Ath3kBT::loadPatch() if (pt_rom_version != __le32_to_cpu(fw_version.rom_version) || pt_build_version <= __le32_to_cpu(fw_version.build_version)) { - IOLog("%s Patch file version did not match with firmware\n", getName()); + IOLog("%s Patch file version did not match with firmware\n", DRV_NAME); return false; } return loadFwFile(fwData); @@ -454,7 +454,7 @@ bool Ath3kBT::loadFwFile(OSData *fwData) char buftmp[BULK_SIZE]; IOMemoryDescriptor * membuf = IOMemoryDescriptor::withAddress(&buftmp, BULK_SIZE, kIODirectionOut); if (!membuf) { - IOLog("%s failed to map memory descriptor\n", getName()); + IOLog("%s failed to map memory descriptor\n", DRV_NAME); return false; } err = membuf->prepare(); @@ -463,7 +463,7 @@ bool Ath3kBT::loadFwFile(OSData *fwData) membuf->complete(); membuf->release(); if (err) { - IOLog("%s failed to write firmware to bulk pipe (err:%d, block:%d, to_send:%d)\n", getName(), err, ii, to_send); + IOLog("%s failed to write firmware to bulk pipe (err:%d, block:%d, to_send:%d)\n", DRV_NAME, err, ii, to_send); return false; } buf += to_send; diff --git a/Ath3kBT/Ath3kBT.hpp b/Ath3kBT/Ath3kBT.hpp index e93809e..9db4244 100644 --- a/Ath3kBT/Ath3kBT.hpp +++ b/Ath3kBT/Ath3kBT.hpp @@ -33,6 +33,8 @@ struct ath3k_version { __u8 reserved[7]; } __packed; +#define DRV_NAME "Ath3kBT" + class Ath3kBT : public AtherosFWService { OSDeclareDefaultStructors(Ath3kBT)