1*53e7d6feSAviad Krawczyk /* 2*53e7d6feSAviad Krawczyk * Huawei HiNIC PCI Express Linux driver 3*53e7d6feSAviad Krawczyk * Copyright(c) 2017 Huawei Technologies Co., Ltd 4*53e7d6feSAviad Krawczyk * 5*53e7d6feSAviad Krawczyk * This program is free software; you can redistribute it and/or modify it 6*53e7d6feSAviad Krawczyk * under the terms and conditions of the GNU General Public License, 7*53e7d6feSAviad Krawczyk * version 2, as published by the Free Software Foundation. 8*53e7d6feSAviad Krawczyk * 9*53e7d6feSAviad Krawczyk * This program is distributed in the hope it will be useful, but WITHOUT 10*53e7d6feSAviad Krawczyk * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*53e7d6feSAviad Krawczyk * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12*53e7d6feSAviad Krawczyk * for more details. 13*53e7d6feSAviad Krawczyk * 14*53e7d6feSAviad Krawczyk */ 15*53e7d6feSAviad Krawczyk 16*53e7d6feSAviad Krawczyk #include <linux/types.h> 17*53e7d6feSAviad Krawczyk #include <linux/errno.h> 18*53e7d6feSAviad Krawczyk 19*53e7d6feSAviad Krawczyk #include "hinic_hw_if.h" 20*53e7d6feSAviad Krawczyk #include "hinic_hw_cmdq.h" 21*53e7d6feSAviad Krawczyk 22*53e7d6feSAviad Krawczyk /** 23*53e7d6feSAviad Krawczyk * hinic_alloc_cmdq_buf - alloc buffer for sending command 24*53e7d6feSAviad Krawczyk * @cmdqs: the cmdqs 25*53e7d6feSAviad Krawczyk * @cmdq_buf: the buffer returned in this struct 26*53e7d6feSAviad Krawczyk * 27*53e7d6feSAviad Krawczyk * Return 0 - Success, negative - Failure 28*53e7d6feSAviad Krawczyk **/ 29*53e7d6feSAviad Krawczyk int hinic_alloc_cmdq_buf(struct hinic_cmdqs *cmdqs, 30*53e7d6feSAviad Krawczyk struct hinic_cmdq_buf *cmdq_buf) 31*53e7d6feSAviad Krawczyk { 32*53e7d6feSAviad Krawczyk /* should be implemented */ 33*53e7d6feSAviad Krawczyk return -ENOMEM; 34*53e7d6feSAviad Krawczyk } 35*53e7d6feSAviad Krawczyk 36*53e7d6feSAviad Krawczyk /** 37*53e7d6feSAviad Krawczyk * hinic_free_cmdq_buf - free buffer 38*53e7d6feSAviad Krawczyk * @cmdqs: the cmdqs 39*53e7d6feSAviad Krawczyk * @cmdq_buf: the buffer to free that is in this struct 40*53e7d6feSAviad Krawczyk **/ 41*53e7d6feSAviad Krawczyk void hinic_free_cmdq_buf(struct hinic_cmdqs *cmdqs, 42*53e7d6feSAviad Krawczyk struct hinic_cmdq_buf *cmdq_buf) 43*53e7d6feSAviad Krawczyk { 44*53e7d6feSAviad Krawczyk /* should be implemented */ 45*53e7d6feSAviad Krawczyk } 46*53e7d6feSAviad Krawczyk 47*53e7d6feSAviad Krawczyk /** 48*53e7d6feSAviad Krawczyk * hinic_cmdq_direct_resp - send command with direct data as resp 49*53e7d6feSAviad Krawczyk * @cmdqs: the cmdqs 50*53e7d6feSAviad Krawczyk * @mod: module on the card that will handle the command 51*53e7d6feSAviad Krawczyk * @cmd: the command 52*53e7d6feSAviad Krawczyk * @buf_in: the buffer for the command 53*53e7d6feSAviad Krawczyk * @resp: the response to return 54*53e7d6feSAviad Krawczyk * 55*53e7d6feSAviad Krawczyk * Return 0 - Success, negative - Failure 56*53e7d6feSAviad Krawczyk **/ 57*53e7d6feSAviad Krawczyk int hinic_cmdq_direct_resp(struct hinic_cmdqs *cmdqs, 58*53e7d6feSAviad Krawczyk enum hinic_mod_type mod, u8 cmd, 59*53e7d6feSAviad Krawczyk struct hinic_cmdq_buf *buf_in, u64 *resp) 60*53e7d6feSAviad Krawczyk { 61*53e7d6feSAviad Krawczyk /* should be implemented */ 62*53e7d6feSAviad Krawczyk return -EINVAL; 63*53e7d6feSAviad Krawczyk } 64*53e7d6feSAviad Krawczyk 65*53e7d6feSAviad Krawczyk /** 66*53e7d6feSAviad Krawczyk * hinic_init_cmdqs - init all cmdqs 67*53e7d6feSAviad Krawczyk * @cmdqs: cmdqs to init 68*53e7d6feSAviad Krawczyk * @hwif: HW interface for accessing cmdqs 69*53e7d6feSAviad Krawczyk * @db_area: doorbell areas for all the cmdqs 70*53e7d6feSAviad Krawczyk * 71*53e7d6feSAviad Krawczyk * Return 0 - Success, negative - Failure 72*53e7d6feSAviad Krawczyk **/ 73*53e7d6feSAviad Krawczyk int hinic_init_cmdqs(struct hinic_cmdqs *cmdqs, struct hinic_hwif *hwif, 74*53e7d6feSAviad Krawczyk void __iomem **db_area) 75*53e7d6feSAviad Krawczyk { 76*53e7d6feSAviad Krawczyk /* should be implemented */ 77*53e7d6feSAviad Krawczyk return -EINVAL; 78*53e7d6feSAviad Krawczyk } 79*53e7d6feSAviad Krawczyk 80*53e7d6feSAviad Krawczyk /** 81*53e7d6feSAviad Krawczyk * hinic_free_cmdqs - free all cmdqs 82*53e7d6feSAviad Krawczyk * @cmdqs: cmdqs to free 83*53e7d6feSAviad Krawczyk **/ 84*53e7d6feSAviad Krawczyk void hinic_free_cmdqs(struct hinic_cmdqs *cmdqs) 85*53e7d6feSAviad Krawczyk { 86*53e7d6feSAviad Krawczyk /* should be implemented */ 87*53e7d6feSAviad Krawczyk } 88