[PATCH] gpib: use assign_bit() where applicable
From: Peng Fan (OSS)
Date: Fri Sep 18 2026 - 10:41:10 EST
From: Peng Fan <peng.fan@xxxxxxx>
Convert open-coded if/else with set_bit/clear_bit and their
non-atomic __set_bit/__clear_bit variants to the assign_bit/__assign_bit
API.
Done with Coccinelle semantic patch and manual fixups.
Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
---
drivers/gpib/agilent_82357a/agilent_82357a.c | 35 ++++----------------
drivers/gpib/eastwood/fluke_gpib.c | 6 ++--
drivers/gpib/fmh_gpib/fmh_gpib.c | 30 ++++++-----------
drivers/gpib/gpio/gpib_bitbang.c | 24 ++++----------
drivers/gpib/nec7210/nec7210.c | 33 +++++-------------
drivers/gpib/tms9914/tms9914.c | 27 ++++-----------
drivers/gpib/tnt4882/tnt4882_gpib.c | 5 +--
7 files changed, 42 insertions(+), 118 deletions(-)
diff --git a/drivers/gpib/agilent_82357a/agilent_82357a.c b/drivers/gpib/agilent_82357a/agilent_82357a.c
index 2468a471d175..6346d98fcfb2 100644
--- a/drivers/gpib/agilent_82357a/agilent_82357a.c
+++ b/drivers/gpib/agilent_82357a/agilent_82357a.c
@@ -865,10 +865,7 @@ static unsigned int agilent_82357a_update_status(struct gpib_board *board,
return -ENODEV;
usb_dev = interface_to_usbdev(a_priv->bus_interface);
board->status &= ~clear_mask;
- if (a_priv->is_cic)
- set_bit(CIC_NUM, &board->status);
- else
- clear_bit(CIC_NUM, &board->status);
+ assign_bit(CIC_NUM, &board->status, a_priv->is_cic);
address_status.address = ADSR;
retval = agilent_82357a_read_registers(a_priv, &address_status, 1, 0);
if (retval) {
@@ -877,29 +874,14 @@ static unsigned int agilent_82357a_update_status(struct gpib_board *board,
return board->status;
}
// check for remote/local
- if (address_status.value & HR_REM)
- set_bit(REM_NUM, &board->status);
- else
- clear_bit(REM_NUM, &board->status);
+ assign_bit(REM_NUM, &board->status, address_status.value & HR_REM);
// check for lockout
- if (address_status.value & HR_LLO)
- set_bit(LOK_NUM, &board->status);
- else
- clear_bit(LOK_NUM, &board->status);
+ assign_bit(LOK_NUM, &board->status, address_status.value & HR_LLO);
// check for ATN
- if (address_status.value & HR_ATN)
- set_bit(ATN_NUM, &board->status);
- else
- clear_bit(ATN_NUM, &board->status);
+ assign_bit(ATN_NUM, &board->status, address_status.value & HR_ATN);
// check for talker/listener addressed
- if (address_status.value & HR_TA)
- set_bit(TACS_NUM, &board->status);
- else
- clear_bit(TACS_NUM, &board->status);
- if (address_status.value & HR_LA)
- set_bit(LACS_NUM, &board->status);
- else
- clear_bit(LACS_NUM, &board->status);
+ assign_bit(TACS_NUM, &board->status, address_status.value & HR_TA);
+ assign_bit(LACS_NUM, &board->status, address_status.value & HR_LA);
bus_status.address = BSR;
retval = agilent_82357a_read_registers(a_priv, &bus_status, 1, 0);
@@ -908,10 +890,7 @@ static unsigned int agilent_82357a_update_status(struct gpib_board *board,
dev_err(&usb_dev->dev, "read_registers() returned error\n");
return board->status;
}
- if (bus_status.value & BSR_SRQ_BIT)
- set_bit(SRQI_NUM, &board->status);
- else
- clear_bit(SRQI_NUM, &board->status);
+ assign_bit(SRQI_NUM, &board->status, bus_status.value & BSR_SRQ_BIT);
return board->status;
}
diff --git a/drivers/gpib/eastwood/fluke_gpib.c b/drivers/gpib/eastwood/fluke_gpib.c
index 1363f0a1f570..a868def73d5f 100644
--- a/drivers/gpib/eastwood/fluke_gpib.c
+++ b/drivers/gpib/eastwood/fluke_gpib.c
@@ -824,10 +824,8 @@ irqreturn_t fluke_gpib_internal_interrupt(struct gpib_board *board)
retval = IRQ_HANDLED;
if (read_byte(nec_priv, ADR0) & DATA_IN_STATUS) {
- if (test_bit(RFD_HOLDOFF_BN, &nec_priv->state))
- set_bit(READ_READY_BN, &nec_priv->state);
- else
- clear_bit(READ_READY_BN, &nec_priv->state);
+ assign_bit(READ_READY_BN, &nec_priv->state,
+ test_bit(RFD_HOLDOFF_BN, &nec_priv->state));
}
if (retval == IRQ_HANDLED)
diff --git a/drivers/gpib/fmh_gpib/fmh_gpib.c b/drivers/gpib/fmh_gpib/fmh_gpib.c
index 5e10e9353fed..640cfed84a40 100644
--- a/drivers/gpib/fmh_gpib/fmh_gpib.c
+++ b/drivers/gpib/fmh_gpib/fmh_gpib.c
@@ -1165,25 +1165,17 @@ irqreturn_t fmh_gpib_internal_interrupt(struct gpib_board *board)
ext_status_1 = read_byte(nec_priv, EXT_STATUS_1_REG);
- if (ext_status_1 & DATA_IN_STATUS_BIT)
- set_bit(READ_READY_BN, &nec_priv->state);
- else
- clear_bit(READ_READY_BN, &nec_priv->state);
-
- if (ext_status_1 & DATA_OUT_STATUS_BIT)
- set_bit(WRITE_READY_BN, &nec_priv->state);
- else
- clear_bit(WRITE_READY_BN, &nec_priv->state);
-
- if (ext_status_1 & COMMAND_OUT_STATUS_BIT)
- set_bit(COMMAND_READY_BN, &nec_priv->state);
- else
- clear_bit(COMMAND_READY_BN, &nec_priv->state);
-
- if (ext_status_1 & RFD_HOLDOFF_STATUS_BIT)
- set_bit(RFD_HOLDOFF_BN, &nec_priv->state);
- else
- clear_bit(RFD_HOLDOFF_BN, &nec_priv->state);
+ assign_bit(READ_READY_BN, &nec_priv->state,
+ ext_status_1 & DATA_IN_STATUS_BIT);
+
+ assign_bit(WRITE_READY_BN, &nec_priv->state,
+ ext_status_1 & DATA_OUT_STATUS_BIT);
+
+ assign_bit(COMMAND_READY_BN, &nec_priv->state,
+ ext_status_1 & COMMAND_OUT_STATUS_BIT);
+
+ assign_bit(RFD_HOLDOFF_BN, &nec_priv->state,
+ ext_status_1 & RFD_HOLDOFF_STATUS_BIT);
if (ext_status_1 & END_STATUS_BIT) {
/*
diff --git a/drivers/gpib/gpio/gpib_bitbang.c b/drivers/gpib/gpio/gpib_bitbang.c
index 34d14b94a0b8..933bf8dd7207 100644
--- a/drivers/gpib/gpio/gpib_bitbang.c
+++ b/drivers/gpib/gpio/gpib_bitbang.c
@@ -949,25 +949,13 @@ static unsigned int bb_update_status(struct gpib_board *board, unsigned int clea
board->status &= ~clear_mask;
- if (gpiod_get_value(SRQ)) /* SRQ asserted low */
- clear_bit(SRQI_NUM, &board->status);
- else
- set_bit(SRQI_NUM, &board->status);
- if (gpiod_get_value(_ATN)) /* ATN asserted low */
- clear_bit(ATN_NUM, &board->status);
- else
- set_bit(ATN_NUM, &board->status);
- if (priv->talker_state == talker_active ||
- priv->talker_state == talker_addressed)
- set_bit(TACS_NUM, &board->status);
- else
- clear_bit(TACS_NUM, &board->status);
+ assign_bit(SRQI_NUM, &board->status, !gpiod_get_value(SRQ));
+ assign_bit(ATN_NUM, &board->status, !gpiod_get_value(_ATN));
+ assign_bit(TACS_NUM, &board->status,
+ priv->talker_state == talker_active || priv->talker_state == talker_addressed);
- if (priv->listener_state == listener_active ||
- priv->listener_state == listener_addressed)
- set_bit(LACS_NUM, &board->status);
- else
- clear_bit(LACS_NUM, &board->status);
+ assign_bit(LACS_NUM, &board->status,
+ priv->listener_state == listener_active || priv->listener_state == listener_addressed);
dbg_printk(2, "0x%lx mask 0x%x\n", board->status, clear_mask);
diff --git a/drivers/gpib/nec7210/nec7210.c b/drivers/gpib/nec7210/nec7210.c
index f15d38dfa4cc..d9d99a2469a3 100644
--- a/drivers/gpib/nec7210/nec7210.c
+++ b/drivers/gpib/nec7210/nec7210.c
@@ -177,26 +177,15 @@ unsigned int nec7210_update_status_nolock(struct gpib_board *board, struct nec72
return 0;
address_status_bits = read_byte(priv, ADSR);
- if (address_status_bits & HR_CIC)
- set_bit(CIC_NUM, &board->status);
- else
- clear_bit(CIC_NUM, &board->status);
+ assign_bit(CIC_NUM, &board->status, address_status_bits & HR_CIC);
// check for talker/listener addressed
update_talker_state(priv, address_status_bits);
- if (priv->talker_state == talker_active || priv->talker_state == talker_addressed)
- set_bit(TACS_NUM, &board->status);
- else
- clear_bit(TACS_NUM, &board->status);
+ assign_bit(TACS_NUM, &board->status,
+ priv->talker_state == talker_active || priv->talker_state == talker_addressed);
update_listener_state(priv, address_status_bits);
- if (priv->listener_state == listener_active ||
- priv->listener_state == listener_addressed)
- set_bit(LACS_NUM, &board->status);
- else
- clear_bit(LACS_NUM, &board->status);
- if (address_status_bits & HR_NATN)
- clear_bit(ATN_NUM, &board->status);
- else
- set_bit(ATN_NUM, &board->status);
+ assign_bit(LACS_NUM, &board->status,
+ priv->listener_state == listener_active || priv->listener_state == listener_addressed);
+ assign_bit(ATN_NUM, &board->status, !(address_status_bits & HR_NATN));
spoll_status = nec7210_serial_poll_status(board, priv);
if (priv->srq_pending && (spoll_status & request_service_bit) == 0) {
priv->srq_pending = 0;
@@ -861,18 +850,12 @@ irqreturn_t nec7210_interrupt_have_status(struct gpib_board *board,
// change in lockout status
if (status2 & HR_LOKC) {
- if (status2 & HR_LOK)
- set_bit(LOK_NUM, &board->status);
- else
- clear_bit(LOK_NUM, &board->status);
+ assign_bit(LOK_NUM, &board->status, status2 & HR_LOK);
}
// change in remote status
if (status2 & HR_REMC) {
- if (status2 & HR_REM)
- set_bit(REM_NUM, &board->status);
- else
- clear_bit(REM_NUM, &board->status);
+ assign_bit(REM_NUM, &board->status, status2 & HR_REM);
}
// record reception of END
diff --git a/drivers/gpib/tms9914/tms9914.c b/drivers/gpib/tms9914/tms9914.c
index 1411297e6217..1e658e6f5e00 100644
--- a/drivers/gpib/tms9914/tms9914.c
+++ b/drivers/gpib/tms9914/tms9914.c
@@ -356,32 +356,19 @@ static unsigned int update_status_nolock(struct gpib_board *board, struct tms991
address_status = read_byte(priv, ADSR);
// check for remote/local
- if (address_status & HR_REM)
- set_bit(REM_NUM, &board->status);
- else
- clear_bit(REM_NUM, &board->status);
+ assign_bit(REM_NUM, &board->status, address_status & HR_REM);
// check for lockout
- if (address_status & HR_LLO)
- set_bit(LOK_NUM, &board->status);
- else
- clear_bit(LOK_NUM, &board->status);
+ assign_bit(LOK_NUM, &board->status, address_status & HR_LLO);
// check for ATN
- if (address_status & HR_ATN)
- set_bit(ATN_NUM, &board->status);
- else
- clear_bit(ATN_NUM, &board->status);
+ assign_bit(ATN_NUM, &board->status, address_status & HR_ATN);
// check for talker/listener addressed
update_talker_state(priv, address_status);
- if (priv->talker_state == talker_active || priv->talker_state == talker_addressed)
- set_bit(TACS_NUM, &board->status);
- else
- clear_bit(TACS_NUM, &board->status);
+ assign_bit(TACS_NUM, &board->status,
+ priv->talker_state == talker_active || priv->talker_state == talker_addressed);
update_listener_state(priv, address_status);
- if (priv->listener_state == listener_active || priv->listener_state == listener_addressed)
- set_bit(LACS_NUM, &board->status);
- else
- clear_bit(LACS_NUM, &board->status);
+ assign_bit(LACS_NUM, &board->status,
+ priv->listener_state == listener_active || priv->listener_state == listener_addressed);
// Check for SRQI - not reset elsewhere except in autospoll
if (board->status & SRQI) {
bsr_bits = read_byte(priv, BSR);
diff --git a/drivers/gpib/tnt4882/tnt4882_gpib.c b/drivers/gpib/tnt4882/tnt4882_gpib.c
index 3cd13f637ed4..f40a7977af1c 100644
--- a/drivers/gpib/tnt4882/tnt4882_gpib.c
+++ b/drivers/gpib/tnt4882/tnt4882_gpib.c
@@ -701,10 +701,7 @@ static unsigned int tnt4882_update_status(struct gpib_board *board, unsigned int
nec7210_update_status_nolock(board, &priv->nec7210_priv);
/* set / clear SRQ state since it is not cleared by interrupt */
line_status = tnt_readb(priv, BSR);
- if (line_status & BCSR_SRQ_BIT)
- set_bit(SRQI_NUM, &board->status);
- else
- clear_bit(SRQI_NUM, &board->status);
+ assign_bit(SRQI_NUM, &board->status, line_status & BCSR_SRQ_BIT);
spin_unlock_irqrestore(&board->spinlock, flags);
return board->status;
}
--
2.51.0