dxd - dynax driver framework 2.1.0d73
cross platform open source driver development framework
|
PPC device. More...
#include <dxd_pci_ppc.h>
Public Types | |
enum | eumb { omisr = 0x030 , omimr = 0x034 , ifpqr = 0x040 , ofpqr = 0x044 , odbr = 0x060 , idbr = 0x068 , itwr = 0x310 } |
embedded utility memory block More... | |
enum | i2o { om0i = LE32(0x01) , om1i = LE32(0x02) , odi = LE32(0x08) , opqi = LE32(0x20) } |
Public Member Functions | |
template<class client_t = ::IOService, typename return_t = os_result, typename exec_arg_t , typename exec_t > | |
return_t | each_child (exec_arg_t exec_arg, exec_t exec) |
apply executor functor for each child | |
template<class client_t = ::IOUserClient, typename return_t = os_result, typename exec_arg_t , typename exec_t > | |
return_t | each_client (exec_arg_t exec_arg, exec_t exec) |
apply executor functor for each user client | |
volatile unsigned int * | eumb (eumb offset) |
pointer to eumb register | |
template<endian endian_t> | |
void | fill32 (unsigned int pattern, unsigned int inbound, size_t size32) |
fill ppc inbound range with 32bit pattern | |
os_result | i2o (const unsigned int *msg, size_t size) |
i2o message send | |
template<typename tx_t , typename rx_t > | |
os_result | ioctl (unsigned int ioctl, const tx_t &tx, rx_t &rx) |
convenience ioctl accessor for direct inter-kext IOCTL | |
virtual os_result | ioctl (unsigned int ioctl, const void *in, size_t size_in, void *out, size_t size_out, size_t &size) |
device IOCTL handler | |
os_result | notify_clients () |
operator::IOPCIDevice * () const | |
IOKit IOPCIDevice* implicit cast. | |
template<typename type_t > | |
os_result | property (const char *key, type_t &value) const |
provider property request | |
template<typename type_t > | |
os_result | query (const char *key, type_t &value) |
device property request | |
template<> | |
os_result | query (const char *key, unsigned int &value) |
(defined(doxygen)||defined(DXD_EXTERN)) | |
template<endian endian_t> | |
void | read32 (unsigned int *dst, unsigned int inbound, size_t size32) |
read endian corrected 32bit values from ppc | |
template<endian endian_t> | |
unsigned int | read32 (unsigned int inbound) |
read the endian corrected 32bit value from ppc | |
os_result | set (const char *key, unsigned int value) |
template<endian endian_t> | |
void | write32 (const unsigned int *src, unsigned int inbound, size_t size32) |
write endian corrected 32bit values to ppc | |
template<endian endian_t> | |
void | write32 (unsigned int src, unsigned int inbound) |
write endian corrected 32bit value to ppc | |
Protected Member Functions | |
void | conclude () override |
IOKit: Main driver finalization. | |
virtual os_result | irq_disable () |
IOKit: disable hardware irq handler. | |
virtual os_result | irq_enable () |
IOKit: enable hardware irq handler. | |
virtual os_result | isr_odi (unsigned int dbr) |
outbound doorbell interrupt handler | |
virtual os_result | isr_opqi (unsigned int fpqr) |
outbound messsage interrupt handler | |
os_result | launch () override |
IOKit: Main driver entry. | |
Protected Attributes | |
resources | hw |
PPC device.
This class provides embedded PPC PCI device driver functionality.
enum dxd::ppc::eumb |
embedded utility memory block
Register set for use in eumb function to retrieve pointer of device register.
enum dxd::ppc::i2o |
|
inlineoverrideprotectedvirtualinherited |
IOKit: Main driver finalization.
conclude() is one of the driver-supplied routines that is called before a driver is to be removed. It is responsible for freeing all resource the driver acquired during launch().
Reimplemented from dxd::device.
|
inlineinherited |
apply executor functor for each child
|
inlineinherited |
apply executor functor for each user client
|
inline |
pointer to eumb register
Use with eumb register set for use in eumb function to retrieve pointer of device register.
|
inline |
fill ppc inbound range with 32bit pattern
Fill the ppc inbound range with a 32bit pattern. Since this function needs to access the inbound translation window this call blocks.
pattern | 32bit pattern to be written to inbound ppc range |
inbound | ppc inbound range start address to be filled |
size32 | amount of 32bit values written to inbound range |
|
inline |
i2o message send
Copies the message contents to PCI window and
writes inbound queue to post the message.
|
inlineinherited |
convenience ioctl accessor for direct inter-kext IOCTL
|
inlinevirtualinherited |
device IOCTL handler
virtual ioctl() gets called by the dynax driver framework for device IOCTL handling.
remark: this is rarely done. usually IOCTLs are handled in the user client derivate.
ioctl | IOCTL |
in | buffer pointer containing data from user mode |
size_in | size of the buffer containing data from user mode |
out | buffer pointer accepting data to be returned to user mode |
size_out | size of the buffer accepting data to be returned to user mode |
size | actual size of data to be returned to user mode |
Reimplemented in dxd::usb_stream_device.
|
inlineprotectedvirtualinherited |
IOKit: disable hardware irq handler.
|
inlineprotectedvirtualinherited |
IOKit: enable hardware irq handler.
|
inlineprotectedvirtual |
outbound doorbell interrupt handler
dbr | doorbell register |
|
inlineprotectedvirtual |
outbound messsage interrupt handler
fpqr | FIFO pointer queue register |
|
inlineoverrideprotectedvirtual |
IOKit: Main driver entry.
launch() is one of the dynax driver frameword-supplied routines that is called after this driver is loaded. It is responsible for initializing the driver.
Checks if there are exactly two PCI memory windows.
Reimplemented from dxd::pci.
|
inlineinherited |
|
inlineinherited |
IOKit IOPCIDevice* implicit cast.
|
inlineinherited |
provider property request
try if property is an OSString
or, try to get it as OSData
|
inherited |
device property request
device string property request
try if property is an OSString
get it as OSData
|
inherited |
(defined(doxygen)||defined(DXD_EXTERN))
device integer property request
|
inline |
read endian corrected 32bit values from ppc
Return the endian corrected 32bit values from ppc device. Since this function needs to access the inbound translation window this call blocks.
dst | buffer to accept read data |
inbound | ppc inbound address to read from |
size32 | amount of 32bit words to read |
|
inline |
read the endian corrected 32bit value from ppc
Return the endian corrected 32bit value from ppc device. Since this function needs to access the inbound translation window this call blocks.
inbound | ppc inbound address to read from |
|
inlineinherited |
|
inline |
write endian corrected 32bit values to ppc
Writes the endian corrected 32bit values to ppc device. Since this function needs to access the inbound translation window this call blocks.
src | 32bit buffer containing data to be written to ppc |
inbound | ppc inbound destination address |
size32 | number of 32bit values to be written to ppc |
|
inline |
write endian corrected 32bit value to ppc
Writes the endian corrected 32bit value to ppc device. Since this function needs to access the inbound translation window this call blocks.
src | 32bit value containing data to be written to ppc |
inbound | ppc inbound destination address |
volatile unsigned int dxd::ppc::dbr |
doorbell register
|
protectedinherited |
volatile unsigned int dxd::ppc::sr |
status register
(c) copyright 2009 dynamic acoustics e.U. | generated on Fri Nov 15 2024 |