1 /* 2 * Copyright 2008 Extreme Engineering Solutions, Inc. 3 * 4 * See file CREDITS for list of people who contributed to this 5 * project. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License as 9 * published by the Free Software Foundation; either version 2 of 10 * the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 20 * MA 02111-1307 USA 21 */ 22 23 #include <common.h> 24 #include <asm/mmu.h> 25 #ifdef CONFIG_PCA953X 26 #include <pca953x.h> 27 28 /* 29 * Determine if a board's flashes are write protected 30 */ 31 int board_flash_wp_on(void) 32 { 33 if (pca953x_get_val(CONFIG_SYS_I2C_PCA953X_ADDR0) & 34 CONFIG_SYS_PCA953X_NVM_WP) 35 return 1; 36 37 return 0; 38 } 39 #endif 40 41 /* 42 * Return a board's derivative model number. For example: 43 * return 2 for the XPedite5372 and return 1 for the XPedite5201. 44 */ 45 uint get_board_derivative(void) 46 { 47 #if defined(CONFIG_MPC85xx) 48 volatile ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR; 49 #elif defined(CONFIG_MPC86xx) 50 volatile immap_t *immap = (immap_t *)CONFIG_SYS_CCSRBAR; 51 volatile ccsr_gur_t *gur = &immap->im_gur; 52 #endif 53 54 /* 55 * The top 4 lines of the local bus address are pulled low/high and 56 * can be read to determine the least significant digit of a board's 57 * model number. 58 */ 59 return gur->gpporcr >> 28; 60 } 61