You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
powerpc/5200: add LocalPlus bus FIFO device driver
This is a driver for the FIFO device on the LocalPlus bus on an mpc5200 system. The driver supports programmed I/O through the FIFO as well as setting up DMA via the BestComm engine through the FIFO. Signed-off-by: John Bonesio <bones@secretlab.ca> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
committed by
Grant Likely
parent
4f59ecfa9b
commit
3c9059d79f
@@ -283,6 +283,45 @@ extern int mpc52xx_gpt_start_timer(struct mpc52xx_gpt_priv *gpt, int period,
|
||||
int continuous);
|
||||
extern void mpc52xx_gpt_stop_timer(struct mpc52xx_gpt_priv *gpt);
|
||||
|
||||
/* mpc52xx_lpbfifo.c */
|
||||
#define MPC52XX_LPBFIFO_FLAG_READ (0)
|
||||
#define MPC52XX_LPBFIFO_FLAG_WRITE (1<<0)
|
||||
#define MPC52XX_LPBFIFO_FLAG_NO_INCREMENT (1<<1)
|
||||
#define MPC52XX_LPBFIFO_FLAG_NO_DMA (1<<2)
|
||||
#define MPC52XX_LPBFIFO_FLAG_POLL_DMA (1<<3)
|
||||
|
||||
struct mpc52xx_lpbfifo_request {
|
||||
struct list_head list;
|
||||
|
||||
/* localplus bus address */
|
||||
unsigned int cs;
|
||||
size_t offset;
|
||||
|
||||
/* Memory address */
|
||||
void *data;
|
||||
phys_addr_t data_phys;
|
||||
|
||||
/* Details of transfer */
|
||||
size_t size;
|
||||
size_t pos; /* current position of transfer */
|
||||
int flags;
|
||||
|
||||
/* What to do when finished */
|
||||
void (*callback)(struct mpc52xx_lpbfifo_request *);
|
||||
|
||||
void *priv; /* Driver private data */
|
||||
|
||||
/* statistics */
|
||||
int irq_count;
|
||||
int irq_ticks;
|
||||
u8 last_byte;
|
||||
int buffer_not_done_cnt;
|
||||
};
|
||||
|
||||
extern int mpc52xx_lpbfifo_submit(struct mpc52xx_lpbfifo_request *req);
|
||||
extern void mpc52xx_lpbfifo_abort(struct mpc52xx_lpbfifo_request *req);
|
||||
extern void mpc52xx_lpbfifo_poll(void);
|
||||
|
||||
/* mpc52xx_pic.c */
|
||||
extern void mpc52xx_init_irq(void);
|
||||
extern unsigned int mpc52xx_get_irq(void);
|
||||
|
||||
@@ -62,3 +62,8 @@ config PPC_MPC5200_GPIO
|
||||
select GENERIC_GPIO
|
||||
help
|
||||
Enable gpiolib support for mpc5200 based boards
|
||||
|
||||
config PPC_MPC5200_LPBFIFO
|
||||
tristate "MPC5200 LocalPlus bus FIFO driver"
|
||||
depends on PPC_MPC52xx
|
||||
select PPC_BESTCOMM_GEN_BD
|
||||
|
||||
@@ -15,3 +15,4 @@ ifeq ($(CONFIG_PPC_LITE5200),y)
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_PPC_MPC5200_GPIO) += mpc52xx_gpio.o
|
||||
obj-$(CONFIG_PPC_MPC5200_LPBFIFO) += mpc52xx_lpbfifo.o
|
||||
|
||||
560
arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c
Normal file
560
arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user