00001
00002
00003
00004
00005
00006
00007
00008
00009 #pragma once
00010 #include <sdioemb/sdio_api.h>
00011
00020 struct sdioemb_wdf_interface {
00021 INTERFACE header;
00022 struct sdioemb_dev *fdev;
00023
00024 int (*driver_probe)(struct sdioemb_func_driver *fdriver, struct sdioemb_dev *fdev);
00025 void (*driver_remove)(struct sdioemb_func_driver *fdriver, struct sdioemb_dev *fdev);
00026
00027 int (*set_block_size)(struct sdioemb_dev *fdev, uint16_t blksz);
00028 void (*set_max_bus_freq)(struct sdioemb_dev *fdev, int max_freq);
00029
00030 int (*enable_function)(struct sdioemb_dev *fdev);
00031 int (*disable_function)(struct sdioemb_dev *fdev);
00032 int (*reenable_csr_function)(struct sdioemb_dev *fdev);
00033 void (*idle_function)(struct sdioemb_dev *fdev);
00034
00035 int (*read8)(struct sdioemb_dev *fdev, uint32_t addr, uint8_t *val);
00036 int (*read16)(struct sdioemb_dev *fdev, uint32_t addr, uint16_t *val);
00037 int (*write8)(struct sdioemb_dev *fdev, uint32_t addr, uint8_t val);
00038 int (*write16)(struct sdioemb_dev *fdev, uint32_t addr, uint16_t val);
00039 int (*f0_read8)(struct sdioemb_dev *fdev, uint32_t addr, uint8_t *val);
00040 int (*f0_write8)(struct sdioemb_dev *fdev, uint32_t addr, uint8_t val);
00041 int (*read)(struct sdioemb_dev *fdev, uint32_t addr, void *data, size_t len);
00042 int (*write)(struct sdioemb_dev *fdev, uint32_t addr, const void *data, size_t len);
00043
00044 int (*hard_reset)(struct sdioemb_dev *fdev);
00045
00046 void (*power_on)(struct sdioemb_dev *fdev);
00047 void (*power_off)(struct sdioemb_dev *fdev);
00048
00049 int (*interrupt_enable)(struct sdioemb_dev *fdev);
00050 int (*interrupt_disable)(struct sdioemb_dev *fdev);
00051 void (*interrupt_acknowledge)(struct sdioemb_dev *fdev);
00052
00053 void (*suspend_function)(struct sdioemb_dev *fdev);
00054 void (*resume_function)(struct sdioemb_dev *fdev);
00055 };