Files
TAIXIN/sdk/include/lib/bus/macbus/mac_bus.h

79 lines
2.9 KiB
C
Raw Normal View History

#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