xref: /linux/drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c (revision 53e7d6feb949b4df542897ab13a33fe484a45c72)
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