Commit 1c146cd4 authored by Jayachandran C's avatar Jayachandran C Committed by Ralf Baechle

MIPS: Netlogic: Fix nlm_read_c2_status() definition

The sel argument os nlm_read_c2_status() was not used and the macro
returned the sel 0 in all cases. Fix this by defining two macros:
nlm_read_c2_status0() and nlm_read_c2_status1() to return the two
status registers.

Add functions to write to the status registers as well.
Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
Cc: linux-mips@linux-mips.org
Cc: ddaney.cavm@gmail.com
Patchwork: https://patchwork.linux-mips.org/patch/5414/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 83bee792
...@@ -175,6 +175,10 @@ ...@@ -175,6 +175,10 @@
#define nlm_write_c2_cc14(s, v) __write_32bit_c2_register($30, s, v) #define nlm_write_c2_cc14(s, v) __write_32bit_c2_register($30, s, v)
#define nlm_write_c2_cc15(s, v) __write_32bit_c2_register($31, s, v) #define nlm_write_c2_cc15(s, v) __write_32bit_c2_register($31, s, v)
#define nlm_read_c2_status0() __read_32bit_c2_register($2, 0)
#define nlm_write_c2_status0(v) __write_32bit_c2_register($2, 0, v)
#define nlm_read_c2_status1() __read_32bit_c2_register($2, 1)
#define nlm_write_c2_status1(v) __write_32bit_c2_register($2, 1, v)
#define nlm_read_c2_status(sel) __read_32bit_c2_register($2, 0) #define nlm_read_c2_status(sel) __read_32bit_c2_register($2, 0)
#define nlm_read_c2_config() __read_32bit_c2_register($3, 0) #define nlm_read_c2_config() __read_32bit_c2_register($3, 0)
#define nlm_write_c2_config(v) __write_32bit_c2_register($3, 0, v) #define nlm_write_c2_config(v) __write_32bit_c2_register($3, 0, v)
...@@ -296,7 +300,7 @@ static inline int nlm_fmn_send(unsigned int size, unsigned int code, ...@@ -296,7 +300,7 @@ static inline int nlm_fmn_send(unsigned int size, unsigned int code,
*/ */
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
nlm_msgsnd(dest); nlm_msgsnd(dest);
status = nlm_read_c2_status(0); status = nlm_read_c2_status0();
if ((status & 0x2) == 1) if ((status & 0x2) == 1)
pr_info("Send pending fail!\n"); pr_info("Send pending fail!\n");
if ((status & 0x4) == 0) if ((status & 0x4) == 0)
...@@ -316,7 +320,7 @@ static inline int nlm_fmn_receive(int bucket, int *size, int *code, int *stid, ...@@ -316,7 +320,7 @@ static inline int nlm_fmn_receive(int bucket, int *size, int *code, int *stid,
/* wait for load pending to clear */ /* wait for load pending to clear */
do { do {
status = nlm_read_c2_status(1); status = nlm_read_c2_status0();
} while ((status & 0x08) != 0); } while ((status & 0x08) != 0);
/* receive error bits */ /* receive error bits */
......
...@@ -80,7 +80,7 @@ static irqreturn_t fmn_message_handler(int irq, void *data) ...@@ -80,7 +80,7 @@ static irqreturn_t fmn_message_handler(int irq, void *data)
while (1) { while (1) {
/* 8 bkts per core, [24:31] each bit represents one bucket /* 8 bkts per core, [24:31] each bit represents one bucket
* Bit is Zero if bucket is not empty */ * Bit is Zero if bucket is not empty */
bkt_status = (nlm_read_c2_status() >> 24) & 0xff; bkt_status = (nlm_read_c2_status0() >> 24) & 0xff;
if (bkt_status == 0xff) if (bkt_status == 0xff)
break; break;
for (bucket = 0; bucket < 8; bucket++) { for (bucket = 0; bucket < 8; bucket++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment