1210284Sjmallett/***********************license start*************** 2232812Sjmallett * Copyright (c) 2003-2010 Cavium Inc. (support@cavium.com). All rights 3215990Sjmallett * reserved. 4210284Sjmallett * 5210284Sjmallett * 6215990Sjmallett * Redistribution and use in source and binary forms, with or without 7215990Sjmallett * modification, are permitted provided that the following conditions are 8215990Sjmallett * met: 9210284Sjmallett * 10215990Sjmallett * * Redistributions of source code must retain the above copyright 11215990Sjmallett * notice, this list of conditions and the following disclaimer. 12210284Sjmallett * 13215990Sjmallett * * Redistributions in binary form must reproduce the above 14215990Sjmallett * copyright notice, this list of conditions and the following 15215990Sjmallett * disclaimer in the documentation and/or other materials provided 16215990Sjmallett * with the distribution. 17215990Sjmallett 18232812Sjmallett * * Neither the name of Cavium Inc. nor the names of 19215990Sjmallett * its contributors may be used to endorse or promote products 20215990Sjmallett * derived from this software without specific prior written 21215990Sjmallett * permission. 22215990Sjmallett 23215990Sjmallett * This Software, including technical data, may be subject to U.S. export control 24215990Sjmallett * laws, including the U.S. Export Administration Act and its associated 25215990Sjmallett * regulations, and may be subject to export or import regulations in other 26215990Sjmallett * countries. 27215990Sjmallett 28215990Sjmallett * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" 29232812Sjmallett * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR 30215990Sjmallett * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO 31215990Sjmallett * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR 32215990Sjmallett * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM 33215990Sjmallett * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE, 34215990Sjmallett * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF 35215990Sjmallett * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR 36215990Sjmallett * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR 37215990Sjmallett * PERFORMANCE OF THE SOFTWARE LIES WITH YOU. 38210284Sjmallett ***********************license end**************************************/ 39210284Sjmallett 40210284Sjmallett 41210284Sjmallett 42210284Sjmallett 43210284Sjmallett 44210284Sjmallett 45215990Sjmallett 46210284Sjmallett#ifndef __CVMX_THUNDER_H__ 47210284Sjmallett#define __CVMX_THUNDER_H__ 48210284Sjmallett 49210284Sjmallett/** 50210284Sjmallett * @file 51210284Sjmallett * 52210284Sjmallett * Interface to the Thunder specific devices 53210284Sjmallett * 54232812Sjmallett * <hr>$Revision: 70030 $<hr> 55210284Sjmallett * 56210284Sjmallett */ 57210284Sjmallett 58210284Sjmallett#ifdef __cplusplus 59210284Sjmallettextern "C" { 60210284Sjmallett#endif 61210284Sjmallett 62210284Sjmallett#define CVMX_RTC_DS1374_ADDR (0x68) 63210284Sjmallett 64210284Sjmallett/* 65210284Sjmallett * Read time-of-day counter. 66210284Sjmallett * This function is called internally by cvmx-rtc functions. 67210284Sjmallett */ 68210284Sjmallettuint32_t cvmx_rtc_ds1374_read(void); 69210284Sjmallett 70210284Sjmallett/* 71210284Sjmallett * Write time-of-day counter. 72210284Sjmallett * This function is called internally by cvmx-rtc functions. 73210284Sjmallett */ 74210284Sjmallettint cvmx_rtc_ds1374_write(uint32_t time); 75210284Sjmallett 76210284Sjmallett 77210284Sjmallett/** 78210284Sjmallett * LAN bypass modes. 79210284Sjmallett */ 80210284Sjmalletttypedef enum { 81210284Sjmallett CVMX_LAN_BYPASS_OFF = 0, /**< LAN bypass is disabled, port 0 and port 1 82210284Sjmallett are always connected to Octeon */ 83210284Sjmallett CVMX_LAN_BYPASS_GPIO, /**< LAN bypass controlled by GPIO only */ 84210284Sjmallett CVMX_LAN_BYPASS_WATCHDOG, /**< LAN bypass controlled by watchdog (and GPIO) */ 85210284Sjmallett CVMX_LAN_BYPASS_LAST /* Keep as last entry */ 86210284Sjmallett} cvmx_lan_bypass_mode_t; 87210284Sjmallett 88210284Sjmallett 89210284Sjmallett/** 90210284Sjmallett * Set LAN bypass mode. 91210284Sjmallett * 92210284Sjmallett * Supported modes are: 93210284Sjmallett * - CVMX_LAN_BYPASS_OFF 94210284Sjmallett * <br>LAN ports are connected ( port 0 <--> Octeon <--> port 1 ) 95210284Sjmallett * 96210284Sjmallett * - CVMX_LAN_BYPASS_GPIO 97210284Sjmallett * <br>LAN bypass is controlled by software using cvmx_lan_bypass_force() function. 98210284Sjmallett * When transitioning to this mode, default is LAN bypass enabled 99210284Sjmallett * ( port 0 <--> port 1, disconnected from Octeon ). 100210284Sjmallett * 101210284Sjmallett * - CVMX_LAN_BYPASS_WATCHDOG 102210284Sjmallett * <br>LAN bypass is inactive as long as the watchdog is kept alive. 103210284Sjmallett * The default expiration time is 1 second and the function to 104210284Sjmallett * call periodically to prevent watchdog expiration is 105210284Sjmallett * cvmx_lan_bypass_keep_alive(). 106210284Sjmallett * 107210284Sjmallett * @param mode LAN bypass mode 108210284Sjmallett * 109210284Sjmallett * @return Error code, or 0 in case of success 110210284Sjmallett */ 111210284Sjmallettint cvmx_lan_bypass_mode_set(cvmx_lan_bypass_mode_t mode); 112210284Sjmallett 113210284Sjmallett/** 114210284Sjmallett * Return status of LAN bypass circuit. 115210284Sjmallett * 116210284Sjmallett * @return 1 if ports are in LAN bypass, or 0 if normally connected 117210284Sjmallett */ 118210284Sjmallettint cvmx_lan_bypass_is_active(void); 119210284Sjmallett 120210284Sjmallett/** 121210284Sjmallett * Refresh watchdog timer. 122210284Sjmallett * 123210284Sjmallett * Call periodically (less than 1 second) to prevent triggering LAN bypass. 124210284Sjmallett * The alternative cvmx_lan_bypass_keep_alive_ms() is provided for cases 125210284Sjmallett * where a variable interval is required. 126210284Sjmallett */ 127210284Sjmallettvoid cvmx_lan_bypass_keep_alive(void); 128210284Sjmallett 129210284Sjmallett/** 130210284Sjmallett * Refresh watchdog timer, setting a specific expiration interval. 131210284Sjmallett * 132210284Sjmallett * @param interval_ms Interval, in milliseconds, to next watchdog expiration. 133210284Sjmallett */ 134210284Sjmallettvoid cvmx_lan_bypass_keep_alive_ms(uint32_t interval_ms); 135210284Sjmallett 136210284Sjmallett/** 137210284Sjmallett * Control LAN bypass via software. 138210284Sjmallett * 139210284Sjmallett * @param force_bypass Force LAN bypass to active (1) or inactive (0) 140210284Sjmallett * 141210284Sjmallett * @return Error code, or 0 in case of success 142210284Sjmallett */ 143210284Sjmallettint cvmx_lan_bypass_force(int force_bypass); 144210284Sjmallett 145210284Sjmallett 146210284Sjmallett#ifdef __cplusplus 147210284Sjmallett} 148210284Sjmallett#endif 149210284Sjmallett 150210284Sjmallett#endif /* __CVMX_THUNDER_H__ */ 151