79 lines
2.9 KiB
C
79 lines
2.9 KiB
C
|
|
#ifndef _MAC_BUS_H_
|
|
#define _MAC_BUS_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define DATA_AREA_SIZE (1700)
|
|
|
|
enum mac_bus_type {
|
|
MAC_BUS_TYPE_NONE,
|
|
MAC_BUS_TYPE_SDIO,
|
|
MAC_BUS_TYPE_USB,
|
|
MAC_BUS_TYPE_EMAC,
|
|
MAC_BUS_TYPE_UART,
|
|
MAC_BUS_TYPE_NDEV,
|
|
MAC_BUS_TYPE_QC,
|
|
MAC_BUS_TYPE_COMBI,
|
|
MAC_BUS_TYPE_SPI,
|
|
MAC_BUS_TYPE_MMC,
|
|
MAC_BUS_TYPE_GDUART,
|
|
};
|
|
|
|
enum MAC_BUS_IOCTL{
|
|
MACBUS_IOCTL_IS_BUSY = 1,
|
|
MACBUS_IOCTL_REINIT_BUS,
|
|
MACBUS_IOCTL_BOOTDL_FLAG,
|
|
MACBUS_IOCTL_BUFFER_IDLE,
|
|
};
|
|
|
|
struct macbus_param{
|
|
uint16 drv_aggsize;
|
|
uint16 sdio_clk;
|
|
};
|
|
|
|
|
|
struct mac_bus {
|
|
int type;
|
|
void *priv;
|
|
uint32 rxerr, txerr;
|
|
int (*write)(struct mac_bus *bus, unsigned char *data, int len);
|
|
int (*write_scatter)(struct mac_bus *bus, scatter_data *data, int count);
|
|
int (*recv)(struct mac_bus *bus, unsigned char *data, int len);
|
|
int (*ioctl)(struct mac_bus *bus, uint32 cmd, uint32 param1, uint32 param2);
|
|
};
|
|
|
|
typedef int (*mac_bus_recv)(struct mac_bus *bus, unsigned char *data, int len);
|
|
extern struct mac_bus *mac_bus_attach(int bus_type, mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_sdio_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_usb_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_uart_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_gmac_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_qa_gmac_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_qc_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_ndev_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_combi_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_sdspi_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_spi_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_mmc_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
extern struct mac_bus *mac_bus_gduart_attach(mac_bus_recv recv, void *priv, struct macbus_param *param);
|
|
|
|
extern void mac_bus_sdio_detach(struct mac_bus *bus);
|
|
extern void mac_bus_usb_detach(struct mac_bus *bus);
|
|
extern void mac_bus_gmac_detach(struct mac_bus *bus);
|
|
extern void mac_bus_spi_detach(struct mac_bus *bus);
|
|
|
|
#define MACBUS_IS_BUSY(bus) (bus)->ioctl(bus, MACBUS_IOCTL_IS_BUSY, 0, 0)
|
|
#define MACBUS_BOOTDL(bus, bootdl) (bus)->ioctl(bus, MACBUS_IOCTL_BOOTDL_FLAG, bootdl, 0)
|
|
#define MACBUS_BUFFER_IDLE(bus) (bus)->ioctl(bus, MACBUS_IOCTL_BUFFER_IDLE, 0, 0)
|
|
#define MACBUS_REINIT(bus) (bus)->ioctl(bus, MACBUS_IOCTL_REINIT_BUS, 0, 0)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|