Skip to content

Commit

Permalink
use DRV_NAME macro instead of getName to compat with 10.15 below macO…
Browse files Browse the repository at this point in the history
…S versions of system since the API will return NULL and caused KP.
  • Loading branch information
zxystd committed Apr 5, 2021
1 parent 1b126d6 commit 126fd23
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 46 deletions.
92 changes: 46 additions & 46 deletions Ath3kBT/Ath3kBT.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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;
}
Expand All @@ -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;
}
Expand All @@ -110,22 +110,22 @@ 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;
}

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;
Expand All @@ -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();
Expand All @@ -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:

Expand All @@ -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;

Expand All @@ -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);
}

Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand All @@ -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) {
Expand All @@ -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;
}

Expand All @@ -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() +
Expand All @@ -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);
Expand Down Expand Up @@ -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();
Expand All @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions Ath3kBT/Ath3kBT.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ struct ath3k_version {
__u8 reserved[7];
} __packed;

#define DRV_NAME "Ath3kBT"

class Ath3kBT : public AtherosFWService {
OSDeclareDefaultStructors(Ath3kBT)

Expand Down

0 comments on commit 126fd23

Please sign in to comment.