MIPS: Netlogic: Fix nlm_read_c2_status() definition
authorJayachandran C <jchandra@broadcom.com>
Mon, 10 Jun 2013 06:30:02 +0000 (06:30 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 13 Jun 2013 15:46:41 +0000 (17:46 +0200)
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: Jayachandran 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: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/netlogic/xlr/fmn.h
arch/mips/netlogic/xlr/fmn.c

index 2a78929cef7385cbe4686689de05d4f1191ad249..56c7b85ea7ddad47e2d7ecde06cd38aad85923da 100644 (file)
 #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_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_config()           __read_32bit_c2_register($3, 0)
 #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,
         */
        for (i = 0; i < 8; i++) {
                nlm_msgsnd(dest);
-               status = nlm_read_c2_status(0);
+               status = nlm_read_c2_status0();
                if ((status & 0x2) == 1)
                        pr_info("Send pending fail!\n");
                if ((status & 0x4) == 0)
@@ -316,7 +320,7 @@ static inline int nlm_fmn_receive(int bucket, int *size, int *code, int *stid,
 
        /* wait for load pending to clear */
        do {
-               status = nlm_read_c2_status(1);
+               status = nlm_read_c2_status0();
        } while ((status & 0x08) != 0);
 
        /* receive error bits */
index 4d74f03de506800bf21716b3debdd1323f5f17e5..0fdce61857cd5b5970016641c8ad9a501445d556 100644 (file)
@@ -80,7 +80,7 @@ static irqreturn_t fmn_message_handler(int irq, void *data)
        while (1) {
                /* 8 bkts per core, [24:31] each bit represents one bucket
                 * 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)
                        break;
                for (bucket = 0; bucket < 8; bucket++) {