Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -175,6 +175,10 @@
#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 */
+1 −1
Original line number Diff line number Diff line
@@ -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++) {