diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/device.h | 4 | ||||
-rw-r--r-- | include/linux/serial_sci.h | 4 | ||||
-rw-r--r-- | include/linux/sh_dma.h | 101 | ||||
-rw-r--r-- | include/linux/sh_intc.h | 6 |
4 files changed, 112 insertions, 3 deletions
diff --git a/include/linux/device.h b/include/linux/device.h index 182192892d45..241b96bcd7ad 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -451,6 +451,10 @@ struct device { | |||
451 | 451 | ||
452 | static inline const char *dev_name(const struct device *dev) | 452 | static inline const char *dev_name(const struct device *dev) |
453 | { | 453 | { |
454 | /* Use the init name until the kobject becomes available */ | ||
455 | if (dev->init_name) | ||
456 | return dev->init_name; | ||
457 | |||
454 | return kobject_name(&dev->kobj); | 458 | return kobject_name(&dev->kobj); |
455 | } | 459 | } |
456 | 460 | ||
diff --git a/include/linux/serial_sci.h b/include/linux/serial_sci.h index 193d4bfe42ff..f5364a1de68b 100644 --- a/include/linux/serial_sci.h +++ b/include/linux/serial_sci.h | |||
@@ -33,8 +33,8 @@ struct plat_sci_port { | |||
33 | char *clk; /* clock string */ | 33 | char *clk; /* clock string */ |
34 | struct device *dma_dev; | 34 | struct device *dma_dev; |
35 | #ifdef CONFIG_SERIAL_SH_SCI_DMA | 35 | #ifdef CONFIG_SERIAL_SH_SCI_DMA |
36 | enum sh_dmae_slave_chan_id dma_slave_tx; | 36 | unsigned int dma_slave_tx; |
37 | enum sh_dmae_slave_chan_id dma_slave_rx; | 37 | unsigned int dma_slave_rx; |
38 | #endif | 38 | #endif |
39 | }; | 39 | }; |
40 | 40 | ||
diff --git a/include/linux/sh_dma.h b/include/linux/sh_dma.h new file mode 100644 index 000000000000..cdaaff424211 --- /dev/null +++ b/include/linux/sh_dma.h | |||
@@ -0,0 +1,101 @@ | |||
1 | /* | ||
2 | * Header for the new SH dmaengine driver | ||
3 | * | ||
4 | * Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef SH_DMA_H | ||
11 | #define SH_DMA_H | ||
12 | |||
13 | #include <linux/list.h> | ||
14 | #include <linux/dmaengine.h> | ||
15 | |||
16 | /* Used by slave DMA clients to request DMA to/from a specific peripheral */ | ||
17 | struct sh_dmae_slave { | ||
18 | unsigned int slave_id; /* Set by the platform */ | ||
19 | struct device *dma_dev; /* Set by the platform */ | ||
20 | struct sh_dmae_slave_config *config; /* Set by the driver */ | ||
21 | }; | ||
22 | |||
23 | struct sh_dmae_regs { | ||
24 | u32 sar; /* SAR / source address */ | ||
25 | u32 dar; /* DAR / destination address */ | ||
26 | u32 tcr; /* TCR / transfer count */ | ||
27 | }; | ||
28 | |||
29 | struct sh_desc { | ||
30 | struct sh_dmae_regs hw; | ||
31 | struct list_head node; | ||
32 | struct dma_async_tx_descriptor async_tx; | ||
33 | enum dma_data_direction direction; | ||
34 | dma_cookie_t cookie; | ||
35 | size_t partial; | ||
36 | int chunks; | ||
37 | int mark; | ||
38 | }; | ||
39 | struct sh_dmae_slave_config { | ||
40 | unsigned int slave_id; | ||
41 | dma_addr_t addr; | ||
42 | u32 chcr; | ||
43 | char mid_rid; | ||
44 | }; | ||
45 | |||
46 | struct sh_dmae_channel { | ||
47 | unsigned int offset; | ||
48 | unsigned int dmars; | ||
49 | unsigned int dmars_bit; | ||
50 | }; | ||
51 | |||
52 | struct sh_dmae_pdata { | ||
53 | struct sh_dmae_slave_config *slave; | ||
54 | int slave_num; | ||
55 | struct sh_dmae_channel *channel; | ||
56 | int channel_num; | ||
57 | unsigned int ts_low_shift; | ||
58 | unsigned int ts_low_mask; | ||
59 | unsigned int ts_high_shift; | ||
60 | unsigned int ts_high_mask; | ||
61 | unsigned int *ts_shift; | ||
62 | int ts_shift_num; | ||
63 | u16 dmaor_init; | ||
64 | }; | ||
65 | |||
66 | /* DMA register */ | ||
67 | #define SAR 0x00 | ||
68 | #define DAR 0x04 | ||
69 | #define TCR 0x08 | ||
70 | #define CHCR 0x0C | ||
71 | #define DMAOR 0x40 | ||
72 | |||
73 | /* DMAOR definitions */ | ||
74 | #define DMAOR_AE 0x00000004 | ||
75 | #define DMAOR_NMIF 0x00000002 | ||
76 | #define DMAOR_DME 0x00000001 | ||
77 | |||
78 | /* Definitions for the SuperH DMAC */ | ||
79 | #define REQ_L 0x00000000 | ||
80 | #define REQ_E 0x00080000 | ||
81 | #define RACK_H 0x00000000 | ||
82 | #define RACK_L 0x00040000 | ||
83 | #define ACK_R 0x00000000 | ||
84 | #define ACK_W 0x00020000 | ||
85 | #define ACK_H 0x00000000 | ||
86 | #define ACK_L 0x00010000 | ||
87 | #define DM_INC 0x00004000 | ||
88 | #define DM_DEC 0x00008000 | ||
89 | #define DM_FIX 0x0000c000 | ||
90 | #define SM_INC 0x00001000 | ||
91 | #define SM_DEC 0x00002000 | ||
92 | #define SM_FIX 0x00003000 | ||
93 | #define RS_IN 0x00000200 | ||
94 | #define RS_OUT 0x00000300 | ||
95 | #define TS_BLK 0x00000040 | ||
96 | #define TM_BUR 0x00000020 | ||
97 | #define CHCR_DE 0x00000001 | ||
98 | #define CHCR_TE 0x00000002 | ||
99 | #define CHCR_IE 0x00000004 | ||
100 | |||
101 | #endif | ||
diff --git a/include/linux/sh_intc.h b/include/linux/sh_intc.h index 51d288d8ac88..01d8168c5a1b 100644 --- a/include/linux/sh_intc.h +++ b/include/linux/sh_intc.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __SH_INTC_H | 1 | #ifndef __SH_INTC_H |
2 | #define __SH_INTC_H | 2 | #define __SH_INTC_H |
3 | 3 | ||
4 | #include <linux/ioport.h> | ||
5 | |||
4 | typedef unsigned char intc_enum; | 6 | typedef unsigned char intc_enum; |
5 | 7 | ||
6 | struct intc_vect { | 8 | struct intc_vect { |
@@ -71,6 +73,8 @@ struct intc_hw_desc { | |||
71 | 73 | ||
72 | struct intc_desc { | 74 | struct intc_desc { |
73 | char *name; | 75 | char *name; |
76 | struct resource *resource; | ||
77 | unsigned int num_resources; | ||
74 | intc_enum force_enable; | 78 | intc_enum force_enable; |
75 | intc_enum force_disable; | 79 | intc_enum force_disable; |
76 | struct intc_hw_desc hw; | 80 | struct intc_hw_desc hw; |
@@ -92,7 +96,7 @@ struct intc_desc symbol __initdata = { \ | |||
92 | prio_regs, sense_regs, ack_regs), \ | 96 | prio_regs, sense_regs, ack_regs), \ |
93 | } | 97 | } |
94 | 98 | ||
95 | void __init register_intc_controller(struct intc_desc *desc); | 99 | int __init register_intc_controller(struct intc_desc *desc); |
96 | int intc_set_priority(unsigned int irq, unsigned int prio); | 100 | int intc_set_priority(unsigned int irq, unsigned int prio); |
97 | 101 | ||
98 | int reserve_irq_vector(unsigned int irq); | 102 | int reserve_irq_vector(unsigned int irq); |