|
RetroArch
|
#include <stdlib.h>#include <string.h>#include <stdio.h>#include "asm.h"#include "irq.h"#include "processor.h"#include "spinlock.h"#include "exi.h"Classes | |
| struct | _lck_dev |
| struct | _exibus_priv |
Macros | |
| #define | EXI_LOCK_DEVS 32 |
| #define | EXI_MAX_CHANNELS 3 |
| #define | EXI_MAX_DEVICES 3 |
| #define | EXI_DEVICE0 0x0080 |
| #define | EXI_DEVICE1 0x0100 |
| #define | EXI_DEVICE2 0x0200 |
| #define | EXI_EXI_IRQ 0x0002 |
| #define | EXI_TC_IRQ 0x0008 |
| #define | EXI_EXT_IRQ 0x0800 |
| #define | EXI_EXT_BIT 0x1000 |
| #define | _SHIFTL(v, s, w) ((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s))) |
| #define | _SHIFTR(v, s, w) ((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1))) |
Typedefs | |
| typedef struct _exibus_priv | exibus_priv |
Functions | |
| static void | __exi_irq_handler (u32, void *) |
| static void | __tc_irq_handler (u32, void *) |
| static void | __ext_irq_handler (u32, void *) |
| static __inline__ void | __exi_clearirqs (s32 nChn, u32 nEXIIrq, u32 nTCIrq, u32 nEXTIrq) |
| static __inline__ void | __exi_setinterrupts (s32 nChn, exibus_priv *exi) |
| static void | __exi_initmap (exibus_priv *exim) |
| static s32 | __exi_probe (s32 nChn) |
| static s32 | __exi_attach (s32 nChn, EXICallback ext_cb) |
| s32 | EXI_Lock (s32 nChn, s32 nDev, EXICallback unlockCB) |
| Try to lock the desired EXI channel on the given device. More... | |
| s32 | EXI_Unlock (s32 nChn) |
| Unlock the desired EXI channel. More... | |
| s32 | EXI_Select (s32 nChn, s32 nDev, s32 nFrq) |
| Selects the spedified EXI channel on the given device with the given frequency. More... | |
| s32 | EXI_SelectSD (s32 nChn, s32 nDev, s32 nFrq) |
| Performs a special select, for SD cards or adapters respectively, on the given device with the given frequence. More... | |
| s32 | EXI_Deselect (s32 nChn) |
| Deselects the EXI channel. More... | |
| s32 | EXI_Sync (s32 nChn) |
| Synchronize or finish respectively the last EXI transfer. More... | |
| s32 | EXI_Imm (s32 nChn, void *pData, u32 nLen, u32 nMode, EXICallback tc_cb) |
| Initializes an immediate mode EXI transfer. More... | |
| s32 | EXI_ImmEx (s32 nChn, void *pData, u32 nLen, u32 nMode) |
| Initializes an extended immediate mode EXI transfer. More... | |
| s32 | EXI_Dma (s32 nChn, void *pData, u32 nLen, u32 nMode, EXICallback tc_cb) |
| Initializes a DMA mode EXI transfer. More... | |
| s32 | EXI_GetState (s32 nChn) |
| Get the EXI state. More... | |
| static s32 | __unlocked_handler (s32 nChn, s32 nDev) |
| s32 | EXI_GetID (s32 nChn, s32 nDev, u32 *nId) |
| Get the ID of the connected EXI device on the given channel. More... | |
| s32 | EXI_Attach (s32 nChn, EXICallback ext_cb) |
| Attach the device on the given channel. More... | |
| s32 | EXI_Detach (s32 nChn) |
| Detach the device on the given channel. More... | |
| EXICallback | EXI_RegisterEXICallback (s32 nChn, EXICallback exi_cb) |
| Register a callback function in the EXI driver for the EXI interrupt. More... | |
| s32 | EXI_Probe (s32 nChn) |
| Probes the EXI channel. More... | |
| s32 | EXI_ProbeEx (s32 nChn) |
| Performs an extended probe of the EXI channel. More... | |
| void | EXI_ProbeReset () |
| Resets certain internal flags and counters and performs a probe on all 3 channels. More... | |
| void | __exi_init () |
| static s32 | __probebarnacle (s32 chn, u32 dev, u32 *rev) |
| static s32 | __queuelength () |
| void | __SYS_EnableBarnacle (s32 chn, u32 dev) |
| s32 | InitializeUART () |
| s32 | WriteUARTN (void *buf, u32 len) |
Variables | |
| static lwp_queue | _lckdev_queue |
| static struct _lck_dev | lckdevs [EXI_LOCK_DEVS] |
| static exibus_priv | eximap [EXI_MAX_CHANNELS] |
| static u64 | last_exi_idtime [EXI_MAX_CHANNELS] |
| static u32 | exi_id_serport1 = 0 |
| static u32 | exi_uart_chan = EXI_CHANNEL_0 |
| static u32 | exi_uart_dev = EXI_DEVICE_0 |
| static u32 | exi_uart_barnacle_enabled = 0 |
| static u32 | exi_uart_enabled = 0 |
| #define EXI_DEVICE0 0x0080 |
| #define EXI_DEVICE1 0x0100 |
| #define EXI_DEVICE2 0x0200 |
| #define EXI_EXI_IRQ 0x0002 |
| #define EXI_EXT_BIT 0x1000 |
| #define EXI_EXT_IRQ 0x0800 |
| #define EXI_LOCK_DEVS 32 |
| #define EXI_MAX_CHANNELS 3 |
| #define EXI_MAX_DEVICES 3 |
| #define EXI_TC_IRQ 0x0008 |
| typedef struct _exibus_priv exibus_priv |
|
static |
|
static |
|
static |
|
static |
| s32 EXI_Attach | ( | s32 | nChn, |
| EXICallback | ext_cb | ||
| ) |
Attach the device on the given channel.
| [in] | nChn | EXI channel to select |
| [in] | ext_cb | pointer to callback to call when device is physically removed. |
Deselects the EXI channel.
| [in] | nChn | EXI channel to deselect |
Detach the device on the given channel.
| [in] | nChn | EXI channel to select |
Initializes a DMA mode EXI transfer.
| [in] | nChn | EXI channel to select |
| [in,out] | pData | pointer to a buffer to read/copy from/to data. |
| [in] | nLen | lenght of data to transfer. |
| [in] | nMode | direction of transferoperation(EXI_READ,EXI_WRITE,EXI_READWRITE) |
| [in] | tc_cb | pointer to a callback to call when transfer has completed. May be NULL. |
Get the ID of the connected EXI device on the given channel.
| [in] | nChn | EXI channel to select |
| [in] | nDev | EXI device to select |
| [out] | nId | EXI device ID to return. |
Get the EXI state.
| [in] | nChn | EXI channel to select |
Initializes an immediate mode EXI transfer.
| [in] | nChn | EXI channel to select |
| [in,out] | pData | pointer to a buffer to read/copy from/to data. |
| [in] | nLen | lenght of data to transfer <=4. |
| [in] | nMode | direction of transferoperation(EXI_READ,EXI_WRITE,EXI_READWRITE) |
| [in] | tc_cb | pointer to a callback to call when transfer has completed. May be NULL. |
Initializes an extended immediate mode EXI transfer.
| [in] | nChn | EXI channel to select |
| [in,out] | pData | pointer to a buffer to read/copy from/to data. |
| [in] | nLen | lenght of data to transfer. |
| [in] | nMode | direction of transferoperation(EXI_READ,EXI_WRITE,EXI_READWRITE) |
| s32 EXI_Lock | ( | s32 | nChn, |
| s32 | nDev, | ||
| EXICallback | unlockCB | ||
| ) |
Try to lock the desired EXI channel on the given device.
| [in] | nChn | EXI channel to lock |
| [in] | nDev | EXI device to lock |
| [in] | unlockCB | pointer to callback to call when EXI_Unlock() is called. Thus allowing us a small way of mutual exclusion. |
Probes the EXI channel.
| [in] | nChn | EXI channel to probe |
Performs an extended probe of the EXI channel.
| [in] | nChn | EXI channel to probe |
| void EXI_ProbeReset | ( | ) |
Resets certain internal flags and counters and performs a probe on all 3 channels.
| EXICallback EXI_RegisterEXICallback | ( | s32 | nChn, |
| EXICallback | exi_cb | ||
| ) |
Register a callback function in the EXI driver for the EXI interrupt.
| [in] | nChn | EXI channel to select |
| [in] | exi_cb | pointer to the function which to call when EXI interrupt has triggered. |
Selects the spedified EXI channel on the given device with the given frequency.
| [in] | nChn | EXI channel to select |
| [in] | nDev | EXI device to select |
| [in] | nFrq | EXI frequency to select |
Performs a special select, for SD cards or adapters respectively, on the given device with the given frequence.
| [in] | nChn | EXI channel to select |
| [in] | nDev | EXI device to select |
| [in] | nFrq | EXI frequency to select |
Synchronize or finish respectively the last EXI transfer.
| [in] | nChn | EXI channel to select |
Unlock the desired EXI channel.
| [in] | nChn | EXI channel to unlock |
| s32 InitializeUART | ( | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
1.8.15