1 /***********************license start*********************************** 2 * Copyright (c) 2003-2017 Cavium Inc. ([email protected]). All rights 3 * reserved. 4 * 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: 9 * 10 * * Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * * Redistributions in binary form must reproduce the above 14 * copyright notice, this list of conditions and the following 15 * disclaimer in the documentation and/or other materials provided 16 * with the distribution. 17 * 18 * * Neither the name of Cavium Inc. nor the names of 19 * its contributors may be used to endorse or promote products 20 * derived from this software without specific prior written 21 * permission. 22 * 23 * This Software, including technical data, may be subject to U.S. export 24 * control laws, including the U.S. Export Administration Act and its 25 * associated regulations, and may be subject to export or import 26 * regulations in other countries. 27 * 28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" 29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR 30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT 31 * TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY 32 * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT 33 * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES 34 * OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR 35 * PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, 36 * QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK 37 * ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES WITH YOU. 38 ***********************license end**************************************/ 39 40 #include <libbdk-hal/device/bdk-device.h> 41 42 /** 43 * @file 44 * 45 * Interface to the ECAMs. 46 * 47 * @addtogroup hal 48 * @{ 49 */ 50 51 /** 52 * Read from an ECAM 53 * 54 * @param device Device to read from 55 * @param reg Register to read 56 * 57 * @return Result of the read of -1 on failure 58 */ 59 extern uint32_t bdk_ecam_read32(const bdk_device_t *device, int reg); 60 61 /** 62 * Write to an ECAM register 63 * 64 * @param device Device to write to 65 * @param reg Register to write 66 * @param value Value to write 67 */ 68 extern void bdk_ecam_write32(const bdk_device_t *device, int reg, uint32_t value); 69 70 /** 71 * Build an ECAM config space request address for a device 72 * 73 * @param device Device being accessed 74 * @param reg Register to access 75 * 76 * @return 64bit IO address 77 */ 78 extern uint64_t __bdk_ecam_build_address(const bdk_device_t *device, int reg); 79 80 /** 81 * Return the number of internal ECAMS on a node. 82 * 83 * @param node Node to query 84 * 85 * @return Number of ECAMs available 86 */ 87 extern int bdk_ecam_get_num(bdk_node_t node); 88 89 /** 90 * Scan all ECAMs for devices and add them to bdk-device 91 * 92 * @param node Node to scan 93 * 94 * @return Zero on success, negative on failure 95 */ 96 extern int bdk_ecam_scan_all(bdk_node_t node) BDK_WEAK; 97 98 /** @} */ 99 100