builtins.c (2880B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: builtins.c 8 * Purpose: board driver loader 9 */ 10 11 #include <sal/core/libc.h> 12 #include <bcm/error.h> 13 #include <board/board.h> 14 #include <board/driver.h> 15 16 /* Built in driver list */ 17 STATIC board_driver_t *_board_builtin_driver[] = { 18 #if defined(INCLUDE_BOARD_GENERIC) 19 &generic_board, 20 #endif /* INCLUDE_BOARD_GENERIC */ 21 #if defined(INCLUDE_BOARD_BCM956504R48) 22 &bcm956504r48_board, 23 #endif /* INCLUDE_BOARD_BCM956504R48 */ 24 #if defined(INCLUDE_BOARD_BCM956504R24) 25 &bcm956504r24_board, 26 #endif 27 #if defined(INCLUDE_BOARD_BCM988230) 28 &bcm988230_board, 29 #endif /* INCLUDE_BOARD_BCM988230 */ 30 /* keep as last */ 31 &default_board 32 }; 33 34 35 /* 36 * Function: 37 * board_driver_builtins_add 38 * Purpose: 39 * Registers all known SDK provided board drivers. 40 * Parameters: 41 * none 42 * Returns: 43 * BCM_E_NONE - success 44 * BCM_E_XXX - failed 45 */ 46 int 47 board_driver_builtins_add(void) 48 { 49 int i, rv = BCM_E_NOT_FOUND; 50 51 for (i=0; i<COUNTOF(_board_builtin_driver); i++) { 52 rv = board_driver_add(_board_builtin_driver[i]); 53 if (BCM_FAILURE(rv) && rv != BCM_E_EXISTS) { 54 break; 55 } 56 } 57 58 return rv; 59 } 60 61 /* 62 * Function: 63 * board_driver_builtins_delete 64 * Purpose: 65 * Unregisters all known SDK provided board drivers. 66 * Parameters: 67 * none 68 * Returns: 69 * BCM_E_NONE - success 70 * BCM_E_XXX - failed 71 */ 72 int 73 board_driver_builtins_delete(void) 74 { 75 int i, rv = BCM_E_NOT_FOUND; 76 77 for (i=0; i<COUNTOF(_board_builtin_driver); i++) { 78 rv = board_driver_delete(_board_builtin_driver[i]); 79 if (BCM_FAILURE(rv) && rv != BCM_E_NOT_FOUND) { 80 break; 81 } 82 } 83 84 return rv; 85 } 86 87 /* 88 * Function: 89 * board_driver_builtins_get 90 * Purpose: 91 * Returns an array of all built in board drivers. 92 * Parameters: 93 * max_num - (IN) length of board driver array 94 * driver - (OUT) array of pointers to board_driver_t 95 * actual - (OUT) actual board driver array length 96 * Returns: 97 * BCM_E_NONE - success 98 * BCM_E_XXX - failed 99 */ 100 int 101 board_driver_builtins_get(int max_num, 102 board_driver_t **driver, 103 int *actual) 104 { 105 if (!max_num) { 106 if (actual) { 107 *actual = COUNTOF(_board_builtin_driver); 108 } 109 return actual ? BCM_E_NONE : BCM_E_PARAM; 110 } else { 111 if (max_num < COUNTOF(_board_builtin_driver)) { 112 max_num = COUNTOF(_board_builtin_driver); 113 } 114 sal_memcpy(driver, _board_builtin_driver, 115 max_num * sizeof(_board_builtin_driver[0])); 116 } 117 118 if (actual) { 119 *actual = max_num; 120 } 121 122 return BCM_E_NONE; 123 }