| @@ -21,27 +21,27 @@ | | | @@ -21,27 +21,27 @@ |
21 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | | 21 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | | 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | | 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
27 | * POSSIBILITY OF SUCH DAMAGE. | | 27 | * POSSIBILITY OF SUCH DAMAGE. |
28 | */ | | 28 | */ |
29 | | | 29 | |
30 | #include "locators.h" | | 30 | #include "locators.h" |
31 | | | 31 | |
32 | #include <sys/cdefs.h> | | 32 | #include <sys/cdefs.h> |
33 | | | 33 | |
34 | __KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.24 2014/11/02 23:55:48 jmcneill Exp $"); | | 34 | __KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.25 2014/11/05 07:56:48 martin Exp $"); |
35 | | | 35 | |
36 | #include <sys/param.h> | | 36 | #include <sys/param.h> |
37 | #include <sys/bus.h> | | 37 | #include <sys/bus.h> |
38 | #include <sys/cpu.h> | | 38 | #include <sys/cpu.h> |
39 | #include <sys/device.h> | | 39 | #include <sys/device.h> |
40 | #include <sys/intr.h> | | 40 | #include <sys/intr.h> |
41 | #include <sys/systm.h> | | 41 | #include <sys/systm.h> |
42 | | | 42 | |
43 | #include <arm/locore.h> | | 43 | #include <arm/locore.h> |
44 | #include <arm/mainbus/mainbus.h> | | 44 | #include <arm/mainbus/mainbus.h> |
45 | | | 45 | |
46 | #include <arm/allwinner/awin_reg.h> | | 46 | #include <arm/allwinner/awin_reg.h> |
47 | #include <arm/allwinner/awin_var.h> | | 47 | #include <arm/allwinner/awin_var.h> |
| @@ -137,26 +137,27 @@ static const struct awin_locators awin_l | | | @@ -137,26 +137,27 @@ static const struct awin_locators awin_l |
137 | { "awiniic", OFFANDSIZE(TWI2), 2, AWIN_A31_IRQ_TWI2, A31 }, | | 137 | { "awiniic", OFFANDSIZE(TWI2), 2, AWIN_A31_IRQ_TWI2, A31 }, |
138 | { "awiniic", OFFANDSIZE(TWI3), 3, AWIN_A31_IRQ_TWI3, A31 }, | | 138 | { "awiniic", OFFANDSIZE(TWI3), 3, AWIN_A31_IRQ_TWI3, A31 }, |
139 | { "awinp2wi", OFFANDSIZE(A31_P2WI), NOPORT, AWIN_A31_IRQ_P2WI, A31 }, | | 139 | { "awinp2wi", OFFANDSIZE(A31_P2WI), NOPORT, AWIN_A31_IRQ_P2WI, A31 }, |
140 | { "spi", OFFANDSIZE(SPI0), 0, AWIN_IRQ_SPI0, AANY }, | | 140 | { "spi", OFFANDSIZE(SPI0), 0, AWIN_IRQ_SPI0, AANY }, |
141 | { "spi", OFFANDSIZE(SPI1), 1, AWIN_IRQ_SPI1, AANY }, | | 141 | { "spi", OFFANDSIZE(SPI1), 1, AWIN_IRQ_SPI1, AANY }, |
142 | { "spi", OFFANDSIZE(SPI2), 1, AWIN_IRQ_SPI2, AANY }, | | 142 | { "spi", OFFANDSIZE(SPI2), 1, AWIN_IRQ_SPI2, AANY }, |
143 | { "spi", OFFANDSIZE(SPI3), 3, AWIN_IRQ_SPI3, AANY }, | | 143 | { "spi", OFFANDSIZE(SPI3), 3, AWIN_IRQ_SPI3, AANY }, |
144 | { "awe", OFFANDSIZE(EMAC), NOPORT, AWIN_IRQ_EMAC, A10|A20 }, | | 144 | { "awe", OFFANDSIZE(EMAC), NOPORT, AWIN_IRQ_EMAC, A10|A20 }, |
145 | { "awge", OFFANDSIZE(GMAC), NOPORT, AWIN_IRQ_GMAC, A20 }, | | 145 | { "awge", OFFANDSIZE(GMAC), NOPORT, AWIN_IRQ_GMAC, A20 }, |
146 | { "awge", OFFANDSIZE(A31_GMAC), NOPORT, AWIN_A31_IRQ_GMAC, A31 }, | | 146 | { "awge", OFFANDSIZE(A31_GMAC), NOPORT, AWIN_A31_IRQ_GMAC, A31 }, |
147 | { "awincrypto", OFFANDSIZE(SS), NOPORT, AWIN_IRQ_SS, AANY }, | | 147 | { "awincrypto", OFFANDSIZE(SS), NOPORT, AWIN_IRQ_SS, AANY }, |
148 | { "awinac", OFFANDSIZE(AC), NOPORT, AWIN_IRQ_AC, A10|A20 }, | | 148 | { "awinac", OFFANDSIZE(AC), NOPORT, AWIN_IRQ_AC, A10|A20 }, |
149 | { "awinac", OFFANDSIZE(AC), NOPORT, AWIN_A31_IRQ_AC, A31 }, | | 149 | { "awinac", OFFANDSIZE(AC), NOPORT, AWIN_A31_IRQ_AC, A31 }, |
| | | 150 | { "awinnand", OFFANDSIZE(NFC), NOPORT, AWIN_IRQ_NAND, A10|A20 }, |
150 | { "awinir", OFFANDSIZE(IR0), 0, AWIN_IRQ_IR0, A10|A20 }, | | 151 | { "awinir", OFFANDSIZE(IR0), 0, AWIN_IRQ_IR0, A10|A20 }, |
151 | { "awinir", OFFANDSIZE(IR1), 1, AWIN_IRQ_IR1, A10|A20 }, | | 152 | { "awinir", OFFANDSIZE(IR1), 1, AWIN_IRQ_IR1, A10|A20 }, |
152 | { "awinir", OFFANDSIZE(A31_CIR), NOPORT, AWIN_A31_IRQ_CIR, A31 }, | | 153 | { "awinir", OFFANDSIZE(A31_CIR), NOPORT, AWIN_A31_IRQ_CIR, A31 }, |
153 | }; | | 154 | }; |
154 | | | 155 | |
155 | static int | | 156 | static int |
156 | awinio_find(device_t parent, cfdata_t cf, const int *ldesc, void *aux) | | 157 | awinio_find(device_t parent, cfdata_t cf, const int *ldesc, void *aux) |
157 | { | | 158 | { |
158 | const struct awinio_attach_args * const aio = aux; | | 159 | const struct awinio_attach_args * const aio = aux; |
159 | const struct awin_locators * const loc = &aio->aio_loc; | | 160 | const struct awin_locators * const loc = &aio->aio_loc; |
160 | const int port = cf->cf_loc[AWINIOCF_PORT]; | | 161 | const int port = cf->cf_loc[AWINIOCF_PORT]; |
161 | | | 162 | |
162 | if (strcmp(cf->cf_name, loc->loc_name) | | 163 | if (strcmp(cf->cf_name, loc->loc_name) |