]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - drivers/net/irda/bfin_sir.h
Merge tag 'powerpc-4.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[mirror_ubuntu-jammy-kernel.git] / drivers / net / irda / bfin_sir.h
1 /*
2 * Blackfin Infra-red Driver
3 *
4 * Copyright 2006-2009 Analog Devices Inc.
5 *
6 * Enter bugs at http://blackfin.uclinux.org/
7 *
8 * Licensed under the GPL-2 or later.
9 *
10 */
11
12 #include <linux/serial.h>
13 #include <linux/module.h>
14 #include <linux/netdevice.h>
15 #include <linux/interrupt.h>
16 #include <linux/delay.h>
17 #include <linux/platform_device.h>
18 #include <linux/dma-mapping.h>
19 #include <linux/slab.h>
20
21 #include <net/irda/irda.h>
22 #include <net/irda/wrapper.h>
23 #include <net/irda/irda_device.h>
24
25 #include <asm/irq.h>
26 #include <asm/cacheflush.h>
27 #include <asm/dma.h>
28 #include <asm/portmux.h>
29 #undef DRIVER_NAME
30
31 #ifdef CONFIG_SIR_BFIN_DMA
32 struct dma_rx_buf {
33 char *buf;
34 int head;
35 int tail;
36 };
37 #endif
38
39 struct bfin_sir_port {
40 unsigned char __iomem *membase;
41 unsigned int irq;
42 unsigned int lsr;
43 unsigned long clk;
44 struct net_device *dev;
45 #ifdef CONFIG_SIR_BFIN_DMA
46 int tx_done;
47 struct dma_rx_buf rx_dma_buf;
48 struct timer_list rx_dma_timer;
49 int rx_dma_nrows;
50 #endif
51 unsigned int tx_dma_channel;
52 unsigned int rx_dma_channel;
53 };
54
55 struct bfin_sir_port_res {
56 unsigned long base_addr;
57 int irq;
58 unsigned int rx_dma_channel;
59 unsigned int tx_dma_channel;
60 };
61
62 struct bfin_sir_self {
63 struct bfin_sir_port *sir_port;
64 spinlock_t lock;
65 unsigned int open;
66 int speed;
67 int newspeed;
68
69 struct sk_buff *txskb;
70 struct sk_buff *rxskb;
71 struct net_device_stats stats;
72 struct device *dev;
73 struct irlap_cb *irlap;
74 struct qos_info qos;
75
76 iobuff_t tx_buff;
77 iobuff_t rx_buff;
78
79 struct work_struct work;
80 int mtt;
81 };
82
83 #define DRIVER_NAME "bfin_sir"
84
85 #include <asm/bfin_serial.h>
86
87 static const unsigned short per[][4] = {
88 /* rx pin tx pin NULL uart_number */
89 {P_UART0_RX, P_UART0_TX, 0, 0},
90 {P_UART1_RX, P_UART1_TX, 0, 1},
91 {P_UART2_RX, P_UART2_TX, 0, 2},
92 {P_UART3_RX, P_UART3_TX, 0, 3},
93 };