1211201Stakawata/*- 2211204Stakawata * Copyright (c) 2012 Warner Losh. All rights reserved. 3211201Stakawata * 4211201Stakawata * Redistribution and use in source and binary forms, with or without 5211201Stakawata * modification, are permitted provided that the following conditions 6211201Stakawata * are met: 7211201Stakawata * 1. Redistributions of source code must retain the above copyright 8211201Stakawata * notice, this list of conditions and the following disclaimer. 9211201Stakawata * 2. Redistributions in binary form must reproduce the above copyright 10211201Stakawata * notice, this list of conditions and the following disclaimer in the 11211201Stakawata * documentation and/or other materials provided with the distribution. 12211201Stakawata * 13211201Stakawata * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14211201Stakawata * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15211201Stakawata * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16211201Stakawata * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 17211201Stakawata * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18211348Sbrueffer * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19211201Stakawata * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20211201Stakawata * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21211201Stakawata * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22211201Stakawata * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23211201Stakawata * SUCH DAMAGE. 24211201Stakawata */ 25211348Sbrueffer 26211348Sbrueffer/* $FreeBSD$ */ 27211348Sbrueffer 28211348Sbrueffer#ifndef _ARM_INCLUDE_BOARD_H_ 29211201Stakawata#define _ARM_INCLUDE_BOARD_H_ 30211348Sbrueffer 31211201Stakawata#include <sys/linker_set.h> 32211348Sbrueffer 33211348Sbrueffertypedef long (arm_board_init_fn)(void); 34211348Sbrueffer 35211348Sbruefferstruct arm_board { 36211348Sbrueffer int board_id; /* Board ID from the boot loader */ 37211348Sbrueffer const char *board_name; /* Human readable name */ 38211348Sbrueffer arm_board_init_fn *board_init; /* Board initialize code */ 39211201Stakawata}; 40211201Stakawata 41211201Stakawata#if defined(ARM_MANY_BOARD) 42211201Stakawata 43211201Stakawata#include "board_id.h" 44211201Stakawata 45211201Stakawata#define ARM_BOARD(id, name) \ 46211201Stakawata static struct arm_board this_board = { \ 47211201Stakawata .board_id = ARM_BOARD_ID_ ## id, \ 48211201Stakawata .board_name = name, \ 49211201Stakawata .board_init = board_init, \ 50211286Sjoel }; \ 51233648Seadler DATA_SET(arm_boards, this_board); 52211201Stakawata#define BOARD_INIT static 53211201Stakawata 54211201Stakawata#else /* !ARM_MANY_BOARD */ 55211201Stakawata 56211201Stakawata#define ARM_BOARD(id, name) 57211201Stakawataextern arm_board_init_fn board_init; 58211201Stakawata#define BOARD_INIT 59211201Stakawata 60211201Stakawata#endif /* ARM_MANY_BOARD */ 61211201Stakawata 62211201Stakawata#endif /* _ARM_INCLUDE_BOARD_H_ */ 63211201Stakawata