1316485Sdavidcs/* 2316485Sdavidcs * Copyright (c) 2017-2018 Cavium, Inc. 3316485Sdavidcs * All rights reserved. 4316485Sdavidcs * 5316485Sdavidcs * Redistribution and use in source and binary forms, with or without 6316485Sdavidcs * modification, are permitted provided that the following conditions 7316485Sdavidcs * are met: 8316485Sdavidcs * 9316485Sdavidcs * 1. Redistributions of source code must retain the above copyright 10316485Sdavidcs * notice, this list of conditions and the following disclaimer. 11316485Sdavidcs * 2. Redistributions in binary form must reproduce the above copyright 12316485Sdavidcs * notice, this list of conditions and the following disclaimer in the 13316485Sdavidcs * documentation and/or other materials provided with the distribution. 14316485Sdavidcs * 15316485Sdavidcs * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16316485Sdavidcs * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17316485Sdavidcs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18316485Sdavidcs * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19316485Sdavidcs * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20316485Sdavidcs * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21316485Sdavidcs * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22316485Sdavidcs * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23316485Sdavidcs * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24316485Sdavidcs * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25316485Sdavidcs * POSSIBILITY OF SUCH DAMAGE. 26316485Sdavidcs * 27316485Sdavidcs * $FreeBSD: stable/11/sys/dev/qlnx/qlnxe/ecore_init_ops.h 320164 2017-06-20 19:16:06Z davidcs $ 28316485Sdavidcs * 29316485Sdavidcs */ 30316485Sdavidcs 31316485Sdavidcs#ifndef __ECORE_INIT_OPS__ 32316485Sdavidcs#define __ECORE_INIT_OPS__ 33316485Sdavidcs 34316485Sdavidcs#include "ecore.h" 35316485Sdavidcs 36316485Sdavidcs/** 37316485Sdavidcs * @brief ecore_init_iro_array - init iro_arr. 38316485Sdavidcs * 39316485Sdavidcs * 40316485Sdavidcs * @param p_dev 41316485Sdavidcs */ 42316485Sdavidcsvoid ecore_init_iro_array(struct ecore_dev *p_dev); 43316485Sdavidcs 44316485Sdavidcs/** 45316485Sdavidcs * @brief ecore_init_run - Run the init-sequence. 46316485Sdavidcs * 47316485Sdavidcs * 48316485Sdavidcs * @param p_hwfn 49316485Sdavidcs * @param p_ptt 50316485Sdavidcs * @param phase 51316485Sdavidcs * @param phase_id 52316485Sdavidcs * @param modes 53316485Sdavidcs * @return _ecore_status_t 54316485Sdavidcs */ 55316485Sdavidcsenum _ecore_status_t ecore_init_run(struct ecore_hwfn *p_hwfn, 56316485Sdavidcs struct ecore_ptt *p_ptt, 57316485Sdavidcs int phase, 58316485Sdavidcs int phase_id, 59316485Sdavidcs int modes); 60316485Sdavidcs 61316485Sdavidcs/** 62316485Sdavidcs * @brief ecore_init_hwfn_allocate - Allocate RT array, Store 'values' ptrs. 63316485Sdavidcs * 64316485Sdavidcs * 65316485Sdavidcs * @param p_hwfn 66316485Sdavidcs * 67316485Sdavidcs * @return _ecore_status_t 68316485Sdavidcs */ 69316485Sdavidcsenum _ecore_status_t ecore_init_alloc(struct ecore_hwfn *p_hwfn); 70316485Sdavidcs 71316485Sdavidcs/** 72316485Sdavidcs * @brief ecore_init_hwfn_deallocate 73316485Sdavidcs * 74316485Sdavidcs * 75316485Sdavidcs * @param p_hwfn 76316485Sdavidcs */ 77316485Sdavidcsvoid ecore_init_free(struct ecore_hwfn *p_hwfn); 78316485Sdavidcs 79316485Sdavidcs 80316485Sdavidcs/** 81316485Sdavidcs * @brief ecore_init_clear_rt_data - Clears the runtime init array. 82316485Sdavidcs * 83316485Sdavidcs * 84316485Sdavidcs * @param p_hwfn 85316485Sdavidcs */ 86316485Sdavidcsvoid ecore_init_clear_rt_data(struct ecore_hwfn *p_hwfn); 87316485Sdavidcs 88316485Sdavidcs/** 89316485Sdavidcs * @brief ecore_init_store_rt_reg - Store a configuration value in the RT array. 90316485Sdavidcs * 91316485Sdavidcs * 92316485Sdavidcs * @param p_hwfn 93316485Sdavidcs * @param rt_offset 94316485Sdavidcs * @param val 95316485Sdavidcs */ 96316485Sdavidcsvoid ecore_init_store_rt_reg(struct ecore_hwfn *p_hwfn, 97316485Sdavidcs u32 rt_offset, 98316485Sdavidcs u32 val); 99316485Sdavidcs 100316485Sdavidcs#define STORE_RT_REG(hwfn, offset, val) \ 101316485Sdavidcs ecore_init_store_rt_reg(hwfn, offset, val) 102316485Sdavidcs 103316485Sdavidcs#define OVERWRITE_RT_REG(hwfn, offset, val) \ 104316485Sdavidcs ecore_init_store_rt_reg(hwfn, offset, val) 105316485Sdavidcs 106316485Sdavidcs/** 107316485Sdavidcs* @brief 108316485Sdavidcs* 109316485Sdavidcs* 110316485Sdavidcs* @param p_hwfn 111316485Sdavidcs* @param rt_offset 112316485Sdavidcs* @param val 113316485Sdavidcs* @param size 114316485Sdavidcs*/ 115316485Sdavidcs 116316485Sdavidcsvoid ecore_init_store_rt_agg(struct ecore_hwfn *p_hwfn, 117316485Sdavidcs u32 rt_offset, 118316485Sdavidcs u32 *val, 119316485Sdavidcs osal_size_t size); 120316485Sdavidcs 121316485Sdavidcs#define STORE_RT_REG_AGG(hwfn, offset, val) \ 122316485Sdavidcs ecore_init_store_rt_agg(hwfn, offset, (u32*)&val, sizeof(val)) 123316485Sdavidcs 124316485Sdavidcs 125316485Sdavidcs/** 126316485Sdavidcs * @brief 127316485Sdavidcs * Initialize GTT global windows and set admin window 128316485Sdavidcs * related params of GTT/PTT to default values. 129316485Sdavidcs * 130316485Sdavidcs * @param p_hwfn 131316485Sdavidcs */ 132320164Sdavidcsvoid ecore_gtt_init(struct ecore_hwfn *p_hwfn, 133320164Sdavidcs struct ecore_ptt *p_ptt); 134316485Sdavidcs#endif /* __ECORE_INIT_OPS__ */ 135