Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
c63ad410
Commit
c63ad410
authored
Sep 06, 2016
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'qed-get_regs'
parents
736c4c1d
4102426f
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
131 additions
and
0 deletions
+131
-0
drivers/net/ethernet/qlogic/qed/qed_hsi.h
drivers/net/ethernet/qlogic/qed/qed_hsi.h
+3
-0
drivers/net/ethernet/qlogic/qed/qed_mcp.c
drivers/net/ethernet/qlogic/qed/qed_mcp.c
+76
-0
drivers/net/ethernet/qlogic/qed/qed_mcp.h
drivers/net/ethernet/qlogic/qed/qed_mcp.h
+46
-0
drivers/net/ethernet/qlogic/qed/qed_reg_addr.h
drivers/net/ethernet/qlogic/qed/qed_reg_addr.h
+6
-0
No files found.
drivers/net/ethernet/qlogic/qed/qed_hsi.h
View file @
c63ad410
...
...
@@ -7638,6 +7638,7 @@ struct public_drv_mb {
#define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000
#define DRV_MSG_CODE_MCP_RESET 0x00090000
#define DRV_MSG_CODE_SET_VERSION 0x000f0000
#define DRV_MSG_CODE_MCP_HALT 0x00100000
#define DRV_MSG_CODE_GET_STATS 0x00130000
#define DRV_MSG_CODE_STATS_TYPE_LAN 1
...
...
@@ -7645,6 +7646,8 @@ struct public_drv_mb {
#define DRV_MSG_CODE_STATS_TYPE_ISCSI 3
#define DRV_MSG_CODE_STATS_TYPE_RDMA 4
#define DRV_MSG_CODE_MASK_PARITIES 0x001a0000
#define DRV_MSG_CODE_BIST_TEST 0x001e0000
#define DRV_MSG_CODE_SET_LED_MODE 0x00200000
...
...
drivers/net/ethernet/qlogic/qed/qed_mcp.c
View file @
c63ad410
...
...
@@ -389,6 +389,34 @@ int qed_mcp_cmd(struct qed_hwfn *p_hwfn,
return
0
;
}
int
qed_mcp_nvm_rd_cmd
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
,
u32
cmd
,
u32
param
,
u32
*
o_mcp_resp
,
u32
*
o_mcp_param
,
u32
*
o_txn_size
,
u32
*
o_buf
)
{
struct
qed_mcp_mb_params
mb_params
;
union
drv_union_data
union_data
;
int
rc
;
memset
(
&
mb_params
,
0
,
sizeof
(
mb_params
));
mb_params
.
cmd
=
cmd
;
mb_params
.
param
=
param
;
mb_params
.
p_data_dst
=
&
union_data
;
rc
=
qed_mcp_cmd_and_union
(
p_hwfn
,
p_ptt
,
&
mb_params
);
if
(
rc
)
return
rc
;
*
o_mcp_resp
=
mb_params
.
mcp_resp
;
*
o_mcp_param
=
mb_params
.
mcp_param
;
*
o_txn_size
=
*
o_mcp_param
;
memcpy
(
o_buf
,
&
union_data
.
raw_data
,
*
o_txn_size
);
return
0
;
}
int
qed_mcp_load_req
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
,
u32
*
p_load_code
)
{
...
...
@@ -1168,6 +1196,33 @@ qed_mcp_send_drv_version(struct qed_hwfn *p_hwfn,
return
rc
;
}
int
qed_mcp_halt
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
)
{
u32
resp
=
0
,
param
=
0
;
int
rc
;
rc
=
qed_mcp_cmd
(
p_hwfn
,
p_ptt
,
DRV_MSG_CODE_MCP_HALT
,
0
,
&
resp
,
&
param
);
if
(
rc
)
DP_ERR
(
p_hwfn
,
"MCP response failure, aborting
\n
"
);
return
rc
;
}
int
qed_mcp_resume
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
)
{
u32
value
,
cpu_mode
;
qed_wr
(
p_hwfn
,
p_ptt
,
MCP_REG_CPU_STATE
,
0xffffffff
);
value
=
qed_rd
(
p_hwfn
,
p_ptt
,
MCP_REG_CPU_MODE
);
value
&=
~
MCP_REG_CPU_MODE_SOFT_HALT
;
qed_wr
(
p_hwfn
,
p_ptt
,
MCP_REG_CPU_MODE
,
value
);
cpu_mode
=
qed_rd
(
p_hwfn
,
p_ptt
,
MCP_REG_CPU_MODE
);
return
(
cpu_mode
&
MCP_REG_CPU_MODE_SOFT_HALT
)
?
-
EAGAIN
:
0
;
}
int
qed_mcp_set_led
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
,
enum
qed_led_mode
mode
)
{
...
...
@@ -1195,6 +1250,27 @@ int qed_mcp_set_led(struct qed_hwfn *p_hwfn,
return
rc
;
}
int
qed_mcp_mask_parities
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
,
u32
mask_parities
)
{
u32
resp
=
0
,
param
=
0
;
int
rc
;
rc
=
qed_mcp_cmd
(
p_hwfn
,
p_ptt
,
DRV_MSG_CODE_MASK_PARITIES
,
mask_parities
,
&
resp
,
&
param
);
if
(
rc
)
{
DP_ERR
(
p_hwfn
,
"MCP response failure for mask parities, aborting
\n
"
);
}
else
if
(
resp
!=
FW_MSG_CODE_OK
)
{
DP_ERR
(
p_hwfn
,
"MCP did not acknowledge mask parity request. Old MFW?
\n
"
);
rc
=
-
EINVAL
;
}
return
rc
;
}
int
qed_mcp_bist_register_test
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
)
{
u32
drv_mb_param
=
0
,
rsp
,
param
;
...
...
drivers/net/ethernet/qlogic/qed/qed_mcp.h
View file @
c63ad410
...
...
@@ -467,6 +467,29 @@ int qed_mcp_fill_shmem_func_info(struct qed_hwfn *p_hwfn,
int
qed_mcp_reset
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
);
/**
* @brief - Sends an NVM read command request to the MFW to get
* a buffer.
*
* @param p_hwfn
* @param p_ptt
* @param cmd - Command: DRV_MSG_CODE_NVM_GET_FILE_DATA or
* DRV_MSG_CODE_NVM_READ_NVRAM commands
* @param param - [0:23] - Offset [24:31] - Size
* @param o_mcp_resp - MCP response
* @param o_mcp_param - MCP response param
* @param o_txn_size - Buffer size output
* @param o_buf - Pointer to the buffer returned by the MFW.
*
* @param return 0 upon success.
*/
int
qed_mcp_nvm_rd_cmd
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
,
u32
cmd
,
u32
param
,
u32
*
o_mcp_resp
,
u32
*
o_mcp_param
,
u32
*
o_txn_size
,
u32
*
o_buf
);
/**
* @brief indicates whether the MFW objects [under mcp_info] are accessible
*
...
...
@@ -489,6 +512,26 @@ bool qed_mcp_is_init(struct qed_hwfn *p_hwfn);
int
qed_mcp_config_vf_msix
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
,
u8
vf_id
,
u8
num
);
/**
* @brief - Halt the MCP.
*
* @param p_hwfn
* @param p_ptt
*
* @param return 0 upon success.
*/
int
qed_mcp_halt
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
);
/**
* @brief - Wake up the MCP.
*
* @param p_hwfn
* @param p_ptt
*
* @param return 0 upon success.
*/
int
qed_mcp_resume
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
);
int
qed_configure_pf_min_bandwidth
(
struct
qed_dev
*
cdev
,
u8
min_bw
);
int
qed_configure_pf_max_bandwidth
(
struct
qed_dev
*
cdev
,
u8
max_bw
);
int
__qed_configure_pf_max_bandwidth
(
struct
qed_hwfn
*
p_hwfn
,
...
...
@@ -500,4 +543,7 @@ int __qed_configure_pf_min_bandwidth(struct qed_hwfn *p_hwfn,
struct
qed_mcp_link_state
*
p_link
,
u8
min_bw
);
int
qed_mcp_mask_parities
(
struct
qed_hwfn
*
p_hwfn
,
struct
qed_ptt
*
p_ptt
,
u32
mask_parities
);
#endif
drivers/net/ethernet/qlogic/qed/qed_reg_addr.h
View file @
c63ad410
...
...
@@ -527,4 +527,10 @@
#define QM_REG_WFQPFWEIGHT 0x2f4e80UL
#define QM_REG_WFQVPWEIGHT 0x2fa000UL
#define MCP_REG_CPU_MODE \
0xe05000UL
#define MCP_REG_CPU_MODE_SOFT_HALT \
(0x1 << 10)
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment