1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * board.c 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Board functions for Birdland Audio BAV335x Network Processor 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (c) 2012-2014, Birdland Audio - http://birdland.com/oem 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #ifndef _BOARD_H_ 13*4882a593Smuzhiyun #define _BOARD_H_ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* Serial MagicE: AA 55 BA BE */ 16*4882a593Smuzhiyun #define BOARD_MAGIC 0xBEBA55AA 17*4882a593Smuzhiyun enum board_type {UNKNOWN, BAV335A, BAV335B}; 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun /* 21*4882a593Smuzhiyun * The BAV335x may use a built-in read-only serial EEProm. 22*4882a593Smuzhiyun * The Evaluation board, disables the write-protect so the Serial-EE 23*4882a593Smuzhiyun * Can be programmed during manufacturing to store fields such as 24*4882a593Smuzhiyun * a board serial number, ethernet mac address and other user fields. 25*4882a593Smuzhiyun * Additionally, the Serial-EE can store the specific version of the 26*4882a593Smuzhiyun * board it runs on, and overwrite the defaults in _defconfig 27*4882a593Smuzhiyun */ 28*4882a593Smuzhiyun #define HDR_NO_OF_MAC_ADDR 3 29*4882a593Smuzhiyun #define HDR_ETH_ALEN 6 30*4882a593Smuzhiyun #define HDR_NAME_LEN 8 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun struct board_eeconfig { 33*4882a593Smuzhiyun unsigned int magic; 34*4882a593Smuzhiyun char name[HDR_NAME_LEN]; /* BAV3354 */ 35*4882a593Smuzhiyun char version[4]; /* 0B20 - Rev.B2 */ 36*4882a593Smuzhiyun char serial[16]; 37*4882a593Smuzhiyun char config[32]; 38*4882a593Smuzhiyun char mac_addr[HDR_NO_OF_MAC_ADDR][HDR_ETH_ALEN]; 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun enum board_type get_board_type(bool verbose_debug_output); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun /* 45*4882a593Smuzhiyun * We have three pin mux functions that must exist. We must be able to enable 46*4882a593Smuzhiyun * uart0, for initial output and i2c0 to read the main EEPROM. We then have a 47*4882a593Smuzhiyun * main pinmux function that can be overridden to enable all other pinmux that 48*4882a593Smuzhiyun * is required on the board. 49*4882a593Smuzhiyun */ 50*4882a593Smuzhiyun void enable_uart0_pin_mux(void); 51*4882a593Smuzhiyun void enable_uart1_pin_mux(void); 52*4882a593Smuzhiyun void enable_uart2_pin_mux(void); 53*4882a593Smuzhiyun void enable_uart3_pin_mux(void); 54*4882a593Smuzhiyun void enable_uart4_pin_mux(void); 55*4882a593Smuzhiyun void enable_uart5_pin_mux(void); 56*4882a593Smuzhiyun void enable_i2c0_pin_mux(void); 57*4882a593Smuzhiyun void enable_board_pin_mux(enum board_type board); 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #endif 60