1 /* $OpenBSD: omap.c,v 1.9 2016/05/02 15:27:24 patrick Exp $ */
3 * Copyright (c) 2005,2008 Dale Rahn <drahn@openbsd.com>
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 #include <sys/param.h>
19 #include <sys/systm.h>
21 #include <machine/bus.h>
23 #include <arm/mainbus/mainbus.h>
24 #include <armv7/armv7/armv7var.h>
26 int omap_match(struct device
*, void *, void *);
31 struct cfattach omap_ca
= {
32 sizeof(struct armv7_softc
), omap_match
, armv7_attach
35 struct cfdriver omap_cd
= {
39 struct board_dev beagleboard_devs
[] = {
51 { "ommmc", 0 }, /* HSMMC1 */
52 { "com", 2 }, /* UART3 */
56 struct board_dev beaglebone_devs
[] = {
71 { "ommmc", 0 }, /* HSMMC0 */
72 { "ommmc", 1 }, /* HSMMC1 */
73 { "com", 0 }, /* UART0 */
78 struct board_dev overo_devs
[] = {
90 { "ommmc", 0 }, /* HSMMC1 */
91 { "com", 2 }, /* UART3 */
95 struct board_dev pandaboard_devs
[] = {
105 { "ommmc", 0 }, /* HSMMC1 */
106 { "com", 2 }, /* UART3 */
111 struct armv7_board omap_boards
[] = {
113 BOARD_ID_OMAP3_BEAGLE
,
114 "TI OMAP3 BeagleBoard",
119 BOARD_ID_AM335X_BEAGLEBONE
,
120 "TI AM335x BeagleBone",
125 BOARD_ID_OMAP3_OVERO
,
126 "Gumstix OMAP3 Overo",
131 BOARD_ID_OMAP4_PANDA
,
132 "TI OMAP4 PandaBoard",
136 { 0, NULL
, NULL
, NULL
},
140 omap_board_devs(void)
144 for (i
= 0; omap_boards
[i
].name
!= NULL
; i
++) {
145 if (omap_boards
[i
].board_id
== board_id
)
146 return (omap_boards
[i
].devs
);
152 omap_board_init(void)
156 for (i
= 0; omap_boards
[i
].name
!= NULL
; i
++) {
157 if (omap_boards
[i
].board_id
== board_id
) {
158 omap_boards
[i
].init();
165 omap_board_name(void)
169 for (i
= 0; omap_boards
[i
].name
!= NULL
; i
++) {
170 if (omap_boards
[i
].board_id
== board_id
)
171 return (omap_boards
[i
].name
);
177 omap_match(struct device
*parent
, void *cfdata
, void *aux
)
179 union mainbus_attach_args
*ma
= (union mainbus_attach_args
*)aux
;
180 struct cfdata
*cf
= (struct cfdata
*)cfdata
;
182 if (ma
->ma_name
== NULL
)
185 if (strcmp(cf
->cf_driver
->cd_name
, ma
->ma_name
) != 0)
188 return (omap_board_devs() != NULL
);