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