From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7CCCC43219 for ; Thu, 21 Apr 2022 08:58:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387069AbiDUJBF (ORCPT ); Thu, 21 Apr 2022 05:01:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343846AbiDUJA7 (ORCPT ); Thu, 21 Apr 2022 05:00:59 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1584820F74; Thu, 21 Apr 2022 01:58:11 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id BE77F1F753; Thu, 21 Apr 2022 08:58:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531489; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+wzZUTuBtyPsQ+iclIg/UNt2jl8gZkTXcVgn1Y308ks=; b=3A3ZCOPCDr74vNou9vHHYNcqZGH62bqcXd1iPFqFqcsirSMRzElsxN3Ekra1vnKBuTG6zZ R3cNr4zBo4s8ycmTp4YRtNUOLxpSY91SKyqX2z72e5NXFaq++eLbOg094SfcBdnFXd5jgf WitM4Jznzca3I/ge2u0E2iUdA0Ik0LI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531489; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+wzZUTuBtyPsQ+iclIg/UNt2jl8gZkTXcVgn1Y308ks=; b=QzGP14PUO9QGpwpgeESvqJCUEGXMekIuGmgoMjyE0EgRrC+M391ZpmOPCjlnWOqDETGes7 5ehuLeq8S9zbv7Dg== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 8B9582C145; Thu, 21 Apr 2022 08:58:09 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 01/10] serial: icom: remove ICOM_VERSION_STR macro Date: Thu, 21 Apr 2022 10:57:59 +0200 Message-Id: <20220421085808.24152-2-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It's unused, so remove the macro. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 02b375ba2f07..142257809e37 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -46,7 +46,6 @@ /*#define ICOM_TRACE enable port trace capabilities */ =20 #define ICOM_DRIVER_NAME "icom" -#define ICOM_VERSION_STR "1.3.1" #define NR_PORTS 128 #define ICOM_PORT ((struct icom_port *)port) #define to_icom_adapter(d) container_of(d, struct icom_adapter, kref) --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2FF5CC43217 for ; Thu, 21 Apr 2022 08:58:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387082AbiDUJBL (ORCPT ); Thu, 21 Apr 2022 05:01:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387050AbiDUJBB (ORCPT ); Thu, 21 Apr 2022 05:01:01 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 65EF020F67; Thu, 21 Apr 2022 01:58:11 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 1669521118; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eamkAcwzbf0PxxCluRVKQtcTvXkL4zji4/cThT7JYBA=; b=D/MjLVo5IFNH1ROzo9B3inWtDFNWnRXEBC9/kLYFR3ifb8fLqvDP8+PmeIhHjdY8snLcKG GuGzdfhvvMTxXfRgyHltZ++4h3rNbmJ6kaCTSJdgoXHTS0phoxScAgHPASjz3Pz/2xSOIl 2ZirwRYhblQmBTUIg0w+QxcaCTTNNco= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eamkAcwzbf0PxxCluRVKQtcTvXkL4zji4/cThT7JYBA=; b=KEmYJKk45T4RvwO0E+04kFoYklnaKAt+lNDRcOVy/p78tjSxLG/zXfOd+YI6Dx8EQT4ngq 0jXY0dxQzxRpMTAw== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id D6B0D2C141; Thu, 21 Apr 2022 08:58:09 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 02/10] serial: icom: switch vague casts to container_of Date: Thu, 21 Apr 2022 10:58:00 +0200 Message-Id: <20220421085808.24152-3-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" In icom, there is an ICOM_PORT macro to perform upcasts from struct uart_port to struct icom_port. It's not completely safe and it works only because the first member of icom_port is uart_port. Nowadays, we use container_of for such an upcast instead. So introduce a helper (to_icom_port()) with container_of in it and convert all the ICOM_PORT users to the new helper. Apart from the code and type safety, it's also clear what icom_port (the variable) is. Unlike with the old ICOM_PORT (the macro with the cast). Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 196 +++++++++++++++++++++----------------- 1 file changed, 106 insertions(+), 90 deletions(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 142257809e37..42ba953c697e 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -47,9 +47,13 @@ =20 #define ICOM_DRIVER_NAME "icom" #define NR_PORTS 128 -#define ICOM_PORT ((struct icom_port *)port) #define to_icom_adapter(d) container_of(d, struct icom_adapter, kref) =20 +static inline struct icom_port *to_icom_port(struct uart_port *port) +{ + return container_of(port, struct icom_port, uart_port); +} + static const struct pci_device_id icom_pci_table[] =3D { { .vendor =3D PCI_VENDOR_ID_IBM, @@ -616,16 +620,17 @@ static void shutdown(struct icom_port *icom_port) =20 static int icom_write(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned long data_count; unsigned char cmdReg; unsigned long offset; int temp_tail =3D port->state->xmit.tail; =20 - trace(ICOM_PORT, "WRITE", 0); + trace(icom_port, "WRITE", 0); =20 - if (cpu_to_le16(ICOM_PORT->statStg->xmit[0].flags) & + if (cpu_to_le16(icom_port->statStg->xmit[0].flags) & SA_FLAGS_READY_TO_XMIT) { - trace(ICOM_PORT, "WRITE_FULL", 0); + trace(icom_port, "WRITE_FULL", 0); return 0; } =20 @@ -633,7 +638,7 @@ static int icom_write(struct uart_port *port) while ((port->state->xmit.head !=3D temp_tail) && (data_count <=3D XMIT_BUFF_SZ)) { =20 - ICOM_PORT->xmit_buf[data_count++] =3D + icom_port->xmit_buf[data_count++] =3D port->state->xmit.buf[temp_tail]; =20 temp_tail++; @@ -641,22 +646,22 @@ static int icom_write(struct uart_port *port) } =20 if (data_count) { - ICOM_PORT->statStg->xmit[0].flags =3D + icom_port->statStg->xmit[0].flags =3D cpu_to_le16(SA_FLAGS_READY_TO_XMIT); - ICOM_PORT->statStg->xmit[0].leLength =3D + icom_port->statStg->xmit[0].leLength =3D cpu_to_le16(data_count); offset =3D - (unsigned long) &ICOM_PORT->statStg->xmit[0] - - (unsigned long) ICOM_PORT->statStg; - *ICOM_PORT->xmitRestart =3D - cpu_to_le32(ICOM_PORT->statStg_pci + offset); - cmdReg =3D readb(&ICOM_PORT->dram->CmdReg); + (unsigned long) &icom_port->statStg->xmit[0] - + (unsigned long) icom_port->statStg; + *icom_port->xmitRestart =3D + cpu_to_le32(icom_port->statStg_pci + offset); + cmdReg =3D readb(&icom_port->dram->CmdReg); writeb(cmdReg | CMD_XMIT_RCV_ENABLE, - &ICOM_PORT->dram->CmdReg); - writeb(START_XMIT, &ICOM_PORT->dram->StartXmitCmd); - trace(ICOM_PORT, "WRITE_START", data_count); + &icom_port->dram->CmdReg); + writeb(START_XMIT, &icom_port->dram->StartXmitCmd); + trace(icom_port, "WRITE_START", data_count); /* write flush */ - readb(&ICOM_PORT->dram->StartXmitCmd); + readb(&icom_port->dram->StartXmitCmd); } =20 return data_count; @@ -924,11 +929,12 @@ static irqreturn_t icom_interrupt(int irq, void *dev_= id) */ static unsigned int icom_tx_empty(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); int ret; unsigned long flags; =20 spin_lock_irqsave(&port->lock, flags); - if (cpu_to_le16(ICOM_PORT->statStg->xmit[0].flags) & + if (cpu_to_le16(icom_port->statStg->xmit[0].flags) & SA_FLAGS_READY_TO_XMIT) ret =3D TIOCSER_TEMT; else @@ -940,38 +946,40 @@ static unsigned int icom_tx_empty(struct uart_port *p= ort) =20 static void icom_set_mctrl(struct uart_port *port, unsigned int mctrl) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char local_osr; =20 - trace(ICOM_PORT, "SET_MODEM", 0); - local_osr =3D readb(&ICOM_PORT->dram->osr); + trace(icom_port, "SET_MODEM", 0); + local_osr =3D readb(&icom_port->dram->osr); =20 if (mctrl & TIOCM_RTS) { - trace(ICOM_PORT, "RAISE_RTS", 0); + trace(icom_port, "RAISE_RTS", 0); local_osr |=3D ICOM_RTS; } else { - trace(ICOM_PORT, "LOWER_RTS", 0); + trace(icom_port, "LOWER_RTS", 0); local_osr &=3D ~ICOM_RTS; } =20 if (mctrl & TIOCM_DTR) { - trace(ICOM_PORT, "RAISE_DTR", 0); + trace(icom_port, "RAISE_DTR", 0); local_osr |=3D ICOM_DTR; } else { - trace(ICOM_PORT, "LOWER_DTR", 0); + trace(icom_port, "LOWER_DTR", 0); local_osr &=3D ~ICOM_DTR; } =20 - writeb(local_osr, &ICOM_PORT->dram->osr); + writeb(local_osr, &icom_port->dram->osr); } =20 static unsigned int icom_get_mctrl(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char status; unsigned int result; =20 - trace(ICOM_PORT, "GET_MODEM", 0); + trace(icom_port, "GET_MODEM", 0); =20 - status =3D readb(&ICOM_PORT->dram->isr); + status =3D readb(&icom_port->dram->isr); =20 result =3D ((status & ICOM_DCD) ? TIOCM_CAR : 0) | ((status & ICOM_RI) ? TIOCM_RNG : 0) @@ -982,44 +990,47 @@ static unsigned int icom_get_mctrl(struct uart_port *= port) =20 static void icom_stop_tx(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char cmdReg; =20 - trace(ICOM_PORT, "STOP", 0); - cmdReg =3D readb(&ICOM_PORT->dram->CmdReg); - writeb(cmdReg | CMD_HOLD_XMIT, &ICOM_PORT->dram->CmdReg); + trace(icom_port, "STOP", 0); + cmdReg =3D readb(&icom_port->dram->CmdReg); + writeb(cmdReg | CMD_HOLD_XMIT, &icom_port->dram->CmdReg); } =20 static void icom_start_tx(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char cmdReg; =20 - trace(ICOM_PORT, "START", 0); - cmdReg =3D readb(&ICOM_PORT->dram->CmdReg); + trace(icom_port, "START", 0); + cmdReg =3D readb(&icom_port->dram->CmdReg); if ((cmdReg & CMD_HOLD_XMIT) =3D=3D CMD_HOLD_XMIT) writeb(cmdReg & ~CMD_HOLD_XMIT, - &ICOM_PORT->dram->CmdReg); + &icom_port->dram->CmdReg); =20 icom_write(port); } =20 static void icom_send_xchar(struct uart_port *port, char ch) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char xdata; int index; unsigned long flags; =20 - trace(ICOM_PORT, "SEND_XCHAR", ch); + trace(icom_port, "SEND_XCHAR", ch); =20 /* wait .1 sec to send char */ for (index =3D 0; index < 10; index++) { spin_lock_irqsave(&port->lock, flags); - xdata =3D readb(&ICOM_PORT->dram->xchar); + xdata =3D readb(&icom_port->dram->xchar); if (xdata =3D=3D 0x00) { - trace(ICOM_PORT, "QUICK_WRITE", 0); - writeb(ch, &ICOM_PORT->dram->xchar); + trace(icom_port, "QUICK_WRITE", 0); + writeb(ch, &icom_port->dram->xchar); =20 /* flush write operation */ - xdata =3D readb(&ICOM_PORT->dram->xchar); + xdata =3D readb(&icom_port->dram->xchar); spin_unlock_irqrestore(&port->lock, flags); break; } @@ -1030,38 +1041,41 @@ static void icom_send_xchar(struct uart_port *port,= char ch) =20 static void icom_stop_rx(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char cmdReg; =20 - cmdReg =3D readb(&ICOM_PORT->dram->CmdReg); - writeb(cmdReg & ~CMD_RCV_ENABLE, &ICOM_PORT->dram->CmdReg); + cmdReg =3D readb(&icom_port->dram->CmdReg); + writeb(cmdReg & ~CMD_RCV_ENABLE, &icom_port->dram->CmdReg); } =20 static void icom_break(struct uart_port *port, int break_state) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char cmdReg; unsigned long flags; =20 spin_lock_irqsave(&port->lock, flags); - trace(ICOM_PORT, "BREAK", 0); - cmdReg =3D readb(&ICOM_PORT->dram->CmdReg); + trace(icom_port, "BREAK", 0); + cmdReg =3D readb(&icom_port->dram->CmdReg); if (break_state =3D=3D -1) { - writeb(cmdReg | CMD_SND_BREAK, &ICOM_PORT->dram->CmdReg); + writeb(cmdReg | CMD_SND_BREAK, &icom_port->dram->CmdReg); } else { - writeb(cmdReg & ~CMD_SND_BREAK, &ICOM_PORT->dram->CmdReg); + writeb(cmdReg & ~CMD_SND_BREAK, &icom_port->dram->CmdReg); } spin_unlock_irqrestore(&port->lock, flags); } =20 static int icom_open(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); int retval; =20 - kref_get(&ICOM_PORT->adapter->kref); - retval =3D startup(ICOM_PORT); + kref_get(&icom_port->adapter->kref); + retval =3D startup(icom_port); =20 if (retval) { - kref_put(&ICOM_PORT->adapter->kref, icom_kref_release); - trace(ICOM_PORT, "STARTUP_ERROR", 0); + kref_put(&icom_port->adapter->kref, icom_kref_release); + trace(icom_port, "STARTUP_ERROR", 0); return retval; } =20 @@ -1070,23 +1084,25 @@ static int icom_open(struct uart_port *port) =20 static void icom_close(struct uart_port *port) { + struct icom_port *icom_port =3D to_icom_port(port); unsigned char cmdReg; =20 - trace(ICOM_PORT, "CLOSE", 0); + trace(icom_port, "CLOSE", 0); =20 /* stop receiver */ - cmdReg =3D readb(&ICOM_PORT->dram->CmdReg); - writeb(cmdReg & ~CMD_RCV_ENABLE, &ICOM_PORT->dram->CmdReg); + cmdReg =3D readb(&icom_port->dram->CmdReg); + writeb(cmdReg & ~CMD_RCV_ENABLE, &icom_port->dram->CmdReg); =20 - shutdown(ICOM_PORT); + shutdown(icom_port); =20 - kref_put(&ICOM_PORT->adapter->kref, icom_kref_release); + kref_put(&icom_port->adapter->kref, icom_kref_release); } =20 static void icom_set_termios(struct uart_port *port, struct ktermios *termios, struct ktermios *old_termios) { + struct icom_port *icom_port =3D to_icom_port(port); int baud; unsigned cflag, iflag; char new_config2; @@ -1098,7 +1114,7 @@ static void icom_set_termios(struct uart_port *port, unsigned long flags; =20 spin_lock_irqsave(&port->lock, flags); - trace(ICOM_PORT, "CHANGE_SPEED", 0); + trace(icom_port, "CHANGE_SPEED", 0); =20 cflag =3D termios->c_cflag; iflag =3D termios->c_iflag; @@ -1129,12 +1145,12 @@ static void icom_set_termios(struct uart_port *port, if (cflag & PARENB) { /* parity bit enabled */ new_config2 |=3D ICOM_ACFG_PARITY_ENAB; - trace(ICOM_PORT, "PARENB", 0); + trace(icom_port, "PARENB", 0); } if (cflag & PARODD) { /* odd parity */ new_config2 |=3D ICOM_ACFG_PARITY_ODD; - trace(ICOM_PORT, "PARODD", 0); + trace(icom_port, "PARODD", 0); } =20 /* Determine divisor based on baud rate */ @@ -1154,100 +1170,100 @@ static void icom_set_termios(struct uart_port *po= rt, uart_update_timeout(port, cflag, baud); =20 /* CTS flow control flag and modem status interrupts */ - tmp_byte =3D readb(&(ICOM_PORT->dram->HDLCConfigReg)); + tmp_byte =3D readb(&(icom_port->dram->HDLCConfigReg)); if (cflag & CRTSCTS) tmp_byte |=3D HDLC_HDW_FLOW; else tmp_byte &=3D ~HDLC_HDW_FLOW; - writeb(tmp_byte, &(ICOM_PORT->dram->HDLCConfigReg)); + writeb(tmp_byte, &(icom_port->dram->HDLCConfigReg)); =20 /* * Set up parity check flag */ - ICOM_PORT->read_status_mask =3D SA_FLAGS_OVERRUN | SA_FL_RCV_DONE; + icom_port->read_status_mask =3D SA_FLAGS_OVERRUN | SA_FL_RCV_DONE; if (iflag & INPCK) - ICOM_PORT->read_status_mask |=3D + icom_port->read_status_mask |=3D SA_FLAGS_FRAME_ERROR | SA_FLAGS_PARITY_ERROR; =20 if ((iflag & BRKINT) || (iflag & PARMRK)) - ICOM_PORT->read_status_mask |=3D SA_FLAGS_BREAK_DET; + icom_port->read_status_mask |=3D SA_FLAGS_BREAK_DET; =20 /* * Characters to ignore */ - ICOM_PORT->ignore_status_mask =3D 0; + icom_port->ignore_status_mask =3D 0; if (iflag & IGNPAR) - ICOM_PORT->ignore_status_mask |=3D + icom_port->ignore_status_mask |=3D SA_FLAGS_PARITY_ERROR | SA_FLAGS_FRAME_ERROR; if (iflag & IGNBRK) { - ICOM_PORT->ignore_status_mask |=3D SA_FLAGS_BREAK_DET; + icom_port->ignore_status_mask |=3D SA_FLAGS_BREAK_DET; /* * If we're ignore parity and break indicators, ignore * overruns too. (For real raw support). */ if (iflag & IGNPAR) - ICOM_PORT->ignore_status_mask |=3D SA_FLAGS_OVERRUN; + icom_port->ignore_status_mask |=3D SA_FLAGS_OVERRUN; } =20 /* * !!! ignore all characters if CREAD is not set */ if ((cflag & CREAD) =3D=3D 0) - ICOM_PORT->ignore_status_mask |=3D SA_FL_RCV_DONE; + icom_port->ignore_status_mask |=3D SA_FL_RCV_DONE; =20 /* Turn off Receiver to prepare for reset */ - writeb(CMD_RCV_DISABLE, &ICOM_PORT->dram->CmdReg); + writeb(CMD_RCV_DISABLE, &icom_port->dram->CmdReg); =20 for (index =3D 0; index < 10; index++) { - if (readb(&ICOM_PORT->dram->PrevCmdReg) =3D=3D 0x00) { + if (readb(&icom_port->dram->PrevCmdReg) =3D=3D 0x00) { break; } } =20 /* clear all current buffers of data */ for (rcv_buff =3D 0; rcv_buff < NUM_RBUFFS; rcv_buff++) { - ICOM_PORT->statStg->rcv[rcv_buff].flags =3D 0; - ICOM_PORT->statStg->rcv[rcv_buff].leLength =3D 0; - ICOM_PORT->statStg->rcv[rcv_buff].WorkingLength =3D + icom_port->statStg->rcv[rcv_buff].flags =3D 0; + icom_port->statStg->rcv[rcv_buff].leLength =3D 0; + icom_port->statStg->rcv[rcv_buff].WorkingLength =3D (unsigned short int) cpu_to_le16(RCV_BUFF_SZ); } =20 for (xmit_buff =3D 0; xmit_buff < NUM_XBUFFS; xmit_buff++) { - ICOM_PORT->statStg->xmit[xmit_buff].flags =3D 0; + icom_port->statStg->xmit[xmit_buff].flags =3D 0; } =20 /* activate changes and start xmit and receiver here */ /* Enable the receiver */ - writeb(new_config3, &(ICOM_PORT->dram->async_config3)); - writeb(new_config2, &(ICOM_PORT->dram->async_config2)); - tmp_byte =3D readb(&(ICOM_PORT->dram->HDLCConfigReg)); + writeb(new_config3, &(icom_port->dram->async_config3)); + writeb(new_config2, &(icom_port->dram->async_config2)); + tmp_byte =3D readb(&(icom_port->dram->HDLCConfigReg)); tmp_byte |=3D HDLC_PPP_PURE_ASYNC | HDLC_FF_FILL; - writeb(tmp_byte, &(ICOM_PORT->dram->HDLCConfigReg)); - writeb(0x04, &(ICOM_PORT->dram->FlagFillIdleTimer)); /* 0.5 seconds */ - writeb(0xFF, &(ICOM_PORT->dram->ier)); /* enable modem signal interrupts = */ + writeb(tmp_byte, &(icom_port->dram->HDLCConfigReg)); + writeb(0x04, &(icom_port->dram->FlagFillIdleTimer)); /* 0.5 seconds */ + writeb(0xFF, &(icom_port->dram->ier)); /* enable modem signal interrupts = */ =20 /* reset processor */ - writeb(CMD_RESTART, &ICOM_PORT->dram->CmdReg); + writeb(CMD_RESTART, &icom_port->dram->CmdReg); =20 for (index =3D 0; index < 10; index++) { - if (readb(&ICOM_PORT->dram->CmdReg) =3D=3D 0x00) { + if (readb(&icom_port->dram->CmdReg) =3D=3D 0x00) { break; } } =20 /* Enable Transmitter and Receiver */ offset =3D - (unsigned long) &ICOM_PORT->statStg->rcv[0] - - (unsigned long) ICOM_PORT->statStg; - writel(ICOM_PORT->statStg_pci + offset, - &ICOM_PORT->dram->RcvStatusAddr); - ICOM_PORT->next_rcv =3D 0; - ICOM_PORT->put_length =3D 0; - *ICOM_PORT->xmitRestart =3D 0; - writel(ICOM_PORT->xmitRestart_pci, - &ICOM_PORT->dram->XmitStatusAddr); - trace(ICOM_PORT, "XR_ENAB", 0); - writeb(CMD_XMIT_RCV_ENABLE, &ICOM_PORT->dram->CmdReg); + (unsigned long) &icom_port->statStg->rcv[0] - + (unsigned long) icom_port->statStg; + writel(icom_port->statStg_pci + offset, + &icom_port->dram->RcvStatusAddr); + icom_port->next_rcv =3D 0; + icom_port->put_length =3D 0; + *icom_port->xmitRestart =3D 0; + writel(icom_port->xmitRestart_pci, + &icom_port->dram->XmitStatusAddr); + trace(icom_port, "XR_ENAB", 0); + writeb(CMD_XMIT_RCV_ENABLE, &icom_port->dram->CmdReg); =20 spin_unlock_irqrestore(&port->lock, flags); } --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 98EF0C433FE for ; Thu, 21 Apr 2022 08:58:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387081AbiDUJBH (ORCPT ); Thu, 21 Apr 2022 05:01:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387044AbiDUJBA (ORCPT ); Thu, 21 Apr 2022 05:01:00 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9AFB620F75; Thu, 21 Apr 2022 01:58:11 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 531A51F756; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VFxqjeU4CQ4uodGfjKZsgd+CH+jRLDKSG+EoVC8vwu0=; b=zCw/LQSI7nDAbRxTq3+Vlb9iIKEaWzDzk4vMdVrmRJCbOFN7UliYEhznxCFuaj9gVBjMYE Ln73FqhEqQ2Ht01cp88rchsXc0jfeq0kN7sL8CiN4d2fvX5B8eUF1iYSmhDabqNzR18RwK uGQVnx/hktbViMgzP2os7xxfmZIDUSY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VFxqjeU4CQ4uodGfjKZsgd+CH+jRLDKSG+EoVC8vwu0=; b=nVp7WomM9liDQ+S0ZfPyz26U7FbwsF3ULDI3d7lZO1jmyEAsyaP/4r+1V2rriOuXkCkpCa /aqS1+xtRJbkP1AA== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 2ACA92C145; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 03/10] serial: icom: remove to_icom_adapter() and icom_kref_release() Date: Thu, 21 Apr 2022 10:58:01 +0200 Message-Id: <20220421085808.24152-4-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Integrate both the to_icom_adapter() macro and icom_kref_release() wrapper into icom_remove_adapter(). (And keep it icom_kref_release() name.) It makes the code easier to follow without complex indirections. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 42ba953c697e..fa284f9cbdb0 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -47,7 +47,6 @@ =20 #define ICOM_DRIVER_NAME "icom" #define NR_PORTS 128 -#define to_icom_adapter(d) container_of(d, struct icom_adapter, kref) =20 static inline struct icom_port *to_icom_port(struct uart_port *port) { @@ -1447,8 +1446,10 @@ static void icom_free_adapter(struct icom_adapter *i= com_adapter) kfree(icom_adapter); } =20 -static void icom_remove_adapter(struct icom_adapter *icom_adapter) +static void icom_kref_release(struct kref *kref) { + struct icom_adapter *icom_adapter =3D container_of(kref, + struct icom_adapter, kref); struct icom_port *icom_port; int index; =20 @@ -1481,14 +1482,6 @@ static void icom_remove_adapter(struct icom_adapter = *icom_adapter) icom_free_adapter(icom_adapter); } =20 -static void icom_kref_release(struct kref *kref) -{ - struct icom_adapter *icom_adapter; - - icom_adapter =3D to_icom_adapter(kref); - icom_remove_adapter(icom_adapter); -} - static int icom_probe(struct pci_dev *dev, const struct pci_device_id *ent) { --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6F734C433F5 for ; Thu, 21 Apr 2022 08:58:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387105AbiDUJBP (ORCPT ); Thu, 21 Apr 2022 05:01:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387051AbiDUJBB (ORCPT ); Thu, 21 Apr 2022 05:01:01 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F088D20F69; Thu, 21 Apr 2022 01:58:11 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id A245F2112B; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tX4FIPjspRNKvmJcN4nbqlZRBTlBuDWjQeEK0htQ+hs=; b=bPN0So1ssONHMblVOBZCj2jYI+yccx8VdCiDnktgo/fx2AP9sM36l9fr2XYoUe4FMBS0Uv xz6dVX2AOxW1vPM/COYLh5h3VNR7LdUd0FU/8LgcykURlojgpun576LrXA9teGkbFpg6PI Fq9JJapAoDjbSZfPIenIQ46jYfpNW+M= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tX4FIPjspRNKvmJcN4nbqlZRBTlBuDWjQeEK0htQ+hs=; b=sg3jZFFeysW1GH3fXeBrwbMM376jkJTcfv+XgPC7OkAMzxmc1F/lq8ENT9sUQawMRGIwi9 4cuH8e2QltIBicBw== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 6A8982C141; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 04/10] serial: icom: use proper __le types and functions Date: Thu, 21 Apr 2022 10:58:02 +0200 Message-Id: <20220421085808.24152-5-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" There is a lot of sparse warnings: .../icom.c:228:30: warning: cast from restricted __le16 .../icom.c:232:66: warning: incorrect type in assignment (different base = types) .../icom.c:232:66: expected unsigned int [usertype] leBuffer .../icom.c:232:66: got restricted __le32 [usertype] .../icom.c:237:30: warning: cast from restricted __le16 ... .../icom.c:1228:22: warning: cast from restricted __le16 And they are correct. So sort them all out by using proper __leXX and uXX types and the right direction of conversion: le16_to_cpu() instead of cpu_to_le16(), where appropriate. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 31 ++++++++++++++----------------- drivers/tty/serial/icom.h | 30 +++++++++++++++--------------- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index fa284f9cbdb0..e1f9d42180ff 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -224,7 +224,7 @@ static int get_port_memory(struct icom_port *icom_port) if (index < (NUM_XBUFFS - 1)) { memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_a= rea)); icom_port->statStg->xmit[index].leLengthASD =3D - (unsigned short int) cpu_to_le16(XMIT_BUFF_SZ); + cpu_to_le16(XMIT_BUFF_SZ); trace(icom_port, "FOD_ADDR", stgAddr); trace(icom_port, "FOD_XBUFF", (unsigned long) icom_port->xmit_buf); @@ -233,7 +233,7 @@ static int get_port_memory(struct icom_port *icom_port) } else if (index =3D=3D (NUM_XBUFFS - 1)) { memset(&icom_port->statStg->xmit[index], 0, sizeof(struct xmit_status_a= rea)); icom_port->statStg->xmit[index].leLengthASD =3D - (unsigned short int) cpu_to_le16(XMIT_BUFF_SZ); + cpu_to_le16(XMIT_BUFF_SZ); trace(icom_port, "FOD_XBUFF", (unsigned long) icom_port->xmit_buf); icom_port->statStg->xmit[index].leBuffer =3D @@ -251,7 +251,7 @@ static int get_port_memory(struct icom_port *icom_port) stgAddr =3D stgAddr + sizeof(icom_port->statStg->rcv[0]); icom_port->statStg->rcv[index].leLength =3D 0; icom_port->statStg->rcv[index].WorkingLength =3D - (unsigned short int) cpu_to_le16(RCV_BUFF_SZ); + cpu_to_le16(RCV_BUFF_SZ); if (index < (NUM_RBUFFS - 1) ) { offset =3D stgAddr - (unsigned long) icom_port->statStg; icom_port->statStg->rcv[index].leNext =3D @@ -627,7 +627,7 @@ static int icom_write(struct uart_port *port) =20 trace(icom_port, "WRITE", 0); =20 - if (cpu_to_le16(icom_port->statStg->xmit[0].flags) & + if (le16_to_cpu(icom_port->statStg->xmit[0].flags) & SA_FLAGS_READY_TO_XMIT) { trace(icom_port, "WRITE_FULL", 0); return 0; @@ -699,8 +699,7 @@ static inline void check_modem_status(struct icom_port = *icom_port) =20 static void xmit_interrupt(u16 port_int_reg, struct icom_port *icom_port) { - unsigned short int count; - int i; + u16 count, i; =20 if (port_int_reg & (INT_XMIT_COMPLETED)) { trace(icom_port, "XMIT_COMPLETE", 0); @@ -709,8 +708,7 @@ static void xmit_interrupt(u16 port_int_reg, struct ico= m_port *icom_port) icom_port->statStg->xmit[0].flags &=3D cpu_to_le16(~SA_FLAGS_READY_TO_XMIT); =20 - count =3D (unsigned short int) - cpu_to_le16(icom_port->statStg->xmit[0].leLength); + count =3D le16_to_cpu(icom_port->statStg->xmit[0].leLength); icom_port->uart_port.icount.tx +=3D count; =20 for (i=3D0; iuart_port.state->port; - unsigned short int status; + u16 status; struct uart_icount *icount; unsigned long offset; unsigned char flag; @@ -740,19 +738,18 @@ static void recv_interrupt(u16 port_int_reg, struct i= com_port *icom_port) trace(icom_port, "RCV_COMPLETE", 0); rcv_buff =3D icom_port->next_rcv; =20 - status =3D cpu_to_le16(icom_port->statStg->rcv[rcv_buff].flags); + status =3D le16_to_cpu(icom_port->statStg->rcv[rcv_buff].flags); while (status & SA_FL_RCV_DONE) { int first =3D -1; =20 trace(icom_port, "FID_STATUS", status); - count =3D cpu_to_le16(icom_port->statStg->rcv[rcv_buff].leLength); + count =3D le16_to_cpu(icom_port->statStg->rcv[rcv_buff].leLength); =20 trace(icom_port, "RCV_COUNT", count); =20 trace(icom_port, "REAL_COUNT", count); =20 - offset =3D - cpu_to_le32(icom_port->statStg->rcv[rcv_buff].leBuffer) - + offset =3D le32_to_cpu(icom_port->statStg->rcv[rcv_buff].leBuffer) - icom_port->recv_buf_pci; =20 /* Block copy all but the last byte as this may have status */ @@ -822,13 +819,13 @@ static void recv_interrupt(u16 port_int_reg, struct i= com_port *icom_port) icom_port->statStg->rcv[rcv_buff].flags =3D 0; icom_port->statStg->rcv[rcv_buff].leLength =3D 0; icom_port->statStg->rcv[rcv_buff].WorkingLength =3D - (unsigned short int) cpu_to_le16(RCV_BUFF_SZ); + cpu_to_le16(RCV_BUFF_SZ); =20 rcv_buff++; if (rcv_buff =3D=3D NUM_RBUFFS) rcv_buff =3D 0; =20 - status =3D cpu_to_le16(icom_port->statStg->rcv[rcv_buff].flags); + status =3D le16_to_cpu(icom_port->statStg->rcv[rcv_buff].flags); } icom_port->next_rcv =3D rcv_buff; =20 @@ -933,7 +930,7 @@ static unsigned int icom_tx_empty(struct uart_port *por= t) unsigned long flags; =20 spin_lock_irqsave(&port->lock, flags); - if (cpu_to_le16(icom_port->statStg->xmit[0].flags) & + if (le16_to_cpu(icom_port->statStg->xmit[0].flags) & SA_FLAGS_READY_TO_XMIT) ret =3D TIOCSER_TEMT; else @@ -1224,7 +1221,7 @@ static void icom_set_termios(struct uart_port *port, icom_port->statStg->rcv[rcv_buff].flags =3D 0; icom_port->statStg->rcv[rcv_buff].leLength =3D 0; icom_port->statStg->rcv[rcv_buff].WorkingLength =3D - (unsigned short int) cpu_to_le16(RCV_BUFF_SZ); + cpu_to_le16(RCV_BUFF_SZ); } =20 for (xmit_buff =3D 0; xmit_buff < NUM_XBUFFS; xmit_buff++) { diff --git a/drivers/tty/serial/icom.h b/drivers/tty/serial/icom.h index 26e3aa7b01e2..62d5ba81dcfc 100644 --- a/drivers/tty/serial/icom.h +++ b/drivers/tty/serial/icom.h @@ -171,13 +171,13 @@ struct statusArea { /* Transmit Status Area */ /**********************************************/ struct xmit_status_area{ - u32 leNext; /* Next entry in Little Endian on Adapter */ - u32 leNextASD; - u32 leBuffer; /* Buffer for entry in LE for Adapter */ - u16 leLengthASD; - u16 leOffsetASD; - u16 leLength; /* Length of data in segment */ - u16 flags; + __le32 leNext; /* Next entry in Little Endian on Adapter */ + __le32 leNextASD; + __le32 leBuffer; /* Buffer for entry in LE for Adapter */ + __le16 leLengthASD; + __le16 leOffsetASD; + __le16 leLength; /* Length of data in segment */ + __le16 flags; #define SA_FLAGS_DONE 0x0080 /* Done with Segment */ #define SA_FLAGS_CONTINUED 0x8000 /* More Segments */ #define SA_FLAGS_IDLE 0x4000 /* Mark IDLE after frm */ @@ -189,13 +189,13 @@ struct statusArea { /* Receive Status Area */ /**********************************************/ struct { - u32 leNext; /* Next entry in Little Endian on Adapter */ - u32 leNextASD; - u32 leBuffer; /* Buffer for entry in LE for Adapter */ - u16 WorkingLength; /* size of segment */ - u16 reserv01; - u16 leLength; /* Length of data in segment */ - u16 flags; + __le32 leNext; /* Next entry in Little Endian on Adapter */ + __le32 leNextASD; + __le32 leBuffer; /* Buffer for entry in LE for Adapter */ + __le16 WorkingLength; /* size of segment */ + __le16 reserv01; + __le16 leLength; /* Length of data in segment */ + __le16 flags; #define SA_FL_RCV_DONE 0x0010 /* Data ready */ #define SA_FLAGS_OVERRUN 0x0040 #define SA_FLAGS_PARITY_ERROR 0x0080 @@ -227,7 +227,7 @@ struct icom_port { int port; struct statusArea *statStg; dma_addr_t statStg_pci; - u32 *xmitRestart; + __le32 *xmitRestart; dma_addr_t xmitRestart_pci; unsigned char *xmit_buf; dma_addr_t xmit_buf_pci; --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A8FAC433EF for ; Thu, 21 Apr 2022 08:58:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387132AbiDUJB1 (ORCPT ); Thu, 21 Apr 2022 05:01:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39148 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387062AbiDUJBD (ORCPT ); Thu, 21 Apr 2022 05:01:03 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3BAC620F74; Thu, 21 Apr 2022 01:58:12 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id DD5311F757; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xU8K/tdIZler/l3ib8M0Xg8/Qlkc1HwVzABB0NRT8B4=; b=JRN7M4iPB4KaKkvOEAIvx158MiLt/VculB0T7/GdnoKGCk6wkHZcDxKzL0jVRPfNNeGWma /sBVAnzkn7MG4I/7y/17a+of0Y9S8Mim0xvuLM+vLig5EXyhMsN2aLXsdSn73GGsg3/3ec GDzwHHj1VAKzpp2mF0pYv64FpuuIJnw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531490; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xU8K/tdIZler/l3ib8M0Xg8/Qlkc1HwVzABB0NRT8B4=; b=K2wh25YEP0oFUXV+fu8iEiZPRbpTASUq30i6OTQ1gIHvQSSg9vdH6L5DIdp+mNi4+VcUsA IrmykC+3g2jeHFAQ== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id ACB8E2C145; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 05/10] serial: icom: move header content to .c Date: Thu, 21 Apr 2022 10:58:03 +0200 Message-Id: <20220421085808.24152-6-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" There is no point keeping the header content separated. The header was not even protected against double inclusion. So move the content to the appropriate source file. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 267 ++++++++++++++++++++++++++++++++++++- drivers/tty/serial/icom.h | 274 -------------------------------------- 2 files changed, 265 insertions(+), 276 deletions(-) delete mode 100644 drivers/tty/serial/icom.h diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index e1f9d42180ff..083c00aced07 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -41,13 +42,275 @@ #include #include =20 -#include "icom.h" - /*#define ICOM_TRACE enable port trace capabilities */ =20 #define ICOM_DRIVER_NAME "icom" #define NR_PORTS 128 =20 +#define BAUD_TABLE_LIMIT ((sizeof(icom_acfg_baud)/sizeof(int)) - 1) +static int icom_acfg_baud[] =3D { + 300, + 600, + 900, + 1200, + 1800, + 2400, + 3600, + 4800, + 7200, + 9600, + 14400, + 19200, + 28800, + 38400, + 57600, + 76800, + 115200, + 153600, + 230400, + 307200, + 460800, +}; + +struct icom_regs { + u32 control; /* Adapter Control Register */ + u32 interrupt; /* Adapter Interrupt Register */ + u32 int_mask; /* Adapter Interrupt Mask Reg */ + u32 int_pri; /* Adapter Interrupt Priority r */ + u32 int_reg_b; /* Adapter non-masked Interrupt */ + u32 resvd01; + u32 resvd02; + u32 resvd03; + u32 control_2; /* Adapter Control Register 2 */ + u32 interrupt_2; /* Adapter Interrupt Register 2 */ + u32 int_mask_2; /* Adapter Interrupt Mask 2 */ + u32 int_pri_2; /* Adapter Interrupt Prior 2 */ + u32 int_reg_2b; /* Adapter non-masked 2 */ +}; + +struct func_dram { + u32 reserved[108]; /* 0-1B0 reserved by personality code */ + u32 RcvStatusAddr; /* 1B0-1B3 Status Address for Next rcv */ + u8 RcvStnAddr; /* 1B4 Receive Station Addr */ + u8 IdleState; /* 1B5 Idle State */ + u8 IdleMonitor; /* 1B6 Idle Monitor */ + u8 FlagFillIdleTimer; /* 1B7 Flag Fill Idle Timer */ + u32 XmitStatusAddr; /* 1B8-1BB Transmit Status Address */ + u8 StartXmitCmd; /* 1BC Start Xmit Command */ + u8 HDLCConfigReg; /* 1BD Reserved */ + u8 CauseCode; /* 1BE Cause code for fatal error */ + u8 xchar; /* 1BF High priority send */ + u32 reserved3; /* 1C0-1C3 Reserved */ + u8 PrevCmdReg; /* 1C4 Reserved */ + u8 CmdReg; /* 1C5 Command Register */ + u8 async_config2; /* 1C6 Async Config Byte 2 */ + u8 async_config3; /* 1C7 Async Config Byte 3 */ + u8 dce_resvd[20]; /* 1C8-1DB DCE Rsvd */ + u8 dce_resvd21; /* 1DC DCE Rsvd (21st byte */ + u8 misc_flags; /* 1DD misc flags */ +#define V2_HARDWARE 0x40 +#define ICOM_HDW_ACTIVE 0x01 + u8 call_length; /* 1DE Phone #/CFI buff ln */ + u8 call_length2; /* 1DF Upper byte (unused) */ + u32 call_addr; /* 1E0-1E3 Phn #/CFI buff addr */ + u16 timer_value; /* 1E4-1E5 general timer value */ + u8 timer_command; /* 1E6 general timer cmd */ + u8 dce_command; /* 1E7 dce command reg */ + u8 dce_cmd_status; /* 1E8 dce command stat */ + u8 x21_r1_ioff; /* 1E9 dce ready counter */ + u8 x21_r0_ioff; /* 1EA dce not ready ctr */ + u8 x21_ralt_ioff; /* 1EB dce CNR counter */ + u8 x21_r1_ion; /* 1EC dce ready I on ctr */ + u8 rsvd_ier; /* 1ED Rsvd for IER (if ne */ + u8 ier; /* 1EE Interrupt Enable */ + u8 isr; /* 1EF Input Signal Reg */ + u8 osr; /* 1F0 Output Signal Reg */ + u8 reset; /* 1F1 Reset/Reload Reg */ + u8 disable; /* 1F2 Disable Reg */ + u8 sync; /* 1F3 Sync Reg */ + u8 error_stat; /* 1F4 Error Status */ + u8 cable_id; /* 1F5 Cable ID */ + u8 cs_length; /* 1F6 CS Load Length */ + u8 mac_length; /* 1F7 Mac Load Length */ + u32 cs_load_addr; /* 1F8-1FB Call Load PCI Addr */ + u32 mac_load_addr; /* 1FC-1FF Mac Load PCI Addr */ +}; + +/* + * adapter defines and structures + */ +#define ICOM_CONTROL_START_A 0x00000008 +#define ICOM_CONTROL_STOP_A 0x00000004 +#define ICOM_CONTROL_START_B 0x00000002 +#define ICOM_CONTROL_STOP_B 0x00000001 +#define ICOM_CONTROL_START_C 0x00000008 +#define ICOM_CONTROL_STOP_C 0x00000004 +#define ICOM_CONTROL_START_D 0x00000002 +#define ICOM_CONTROL_STOP_D 0x00000001 +#define ICOM_IRAM_OFFSET 0x1000 +#define ICOM_IRAM_SIZE 0x0C00 +#define ICOM_DCE_IRAM_OFFSET 0x0A00 +#define ICOM_CABLE_ID_VALID 0x01 +#define ICOM_CABLE_ID_MASK 0xF0 +#define ICOM_DISABLE 0x80 +#define CMD_XMIT_RCV_ENABLE 0xC0 +#define CMD_XMIT_ENABLE 0x40 +#define CMD_RCV_DISABLE 0x00 +#define CMD_RCV_ENABLE 0x80 +#define CMD_RESTART 0x01 +#define CMD_HOLD_XMIT 0x02 +#define CMD_SND_BREAK 0x04 +#define RS232_CABLE 0x06 +#define V24_CABLE 0x0E +#define V35_CABLE 0x0C +#define V36_CABLE 0x02 +#define NO_CABLE 0x00 +#define START_DOWNLOAD 0x80 +#define ICOM_INT_MASK_PRC_A 0x00003FFF +#define ICOM_INT_MASK_PRC_B 0x3FFF0000 +#define ICOM_INT_MASK_PRC_C 0x00003FFF +#define ICOM_INT_MASK_PRC_D 0x3FFF0000 +#define INT_RCV_COMPLETED 0x1000 +#define INT_XMIT_COMPLETED 0x2000 +#define INT_IDLE_DETECT 0x0800 +#define INT_RCV_DISABLED 0x0400 +#define INT_XMIT_DISABLED 0x0200 +#define INT_RCV_XMIT_SHUTDOWN 0x0100 +#define INT_FATAL_ERROR 0x0080 +#define INT_CABLE_PULL 0x0020 +#define INT_SIGNAL_CHANGE 0x0010 +#define HDLC_PPP_PURE_ASYNC 0x02 +#define HDLC_FF_FILL 0x00 +#define HDLC_HDW_FLOW 0x01 +#define START_XMIT 0x80 +#define ICOM_ACFG_DRIVE1 0x20 +#define ICOM_ACFG_NO_PARITY 0x00 +#define ICOM_ACFG_PARITY_ENAB 0x02 +#define ICOM_ACFG_PARITY_ODD 0x01 +#define ICOM_ACFG_8BPC 0x00 +#define ICOM_ACFG_7BPC 0x04 +#define ICOM_ACFG_6BPC 0x08 +#define ICOM_ACFG_5BPC 0x0C +#define ICOM_ACFG_1STOP_BIT 0x00 +#define ICOM_ACFG_2STOP_BIT 0x10 +#define ICOM_DTR 0x80 +#define ICOM_RTS 0x40 +#define ICOM_RI 0x08 +#define ICOM_DSR 0x80 +#define ICOM_DCD 0x20 +#define ICOM_CTS 0x40 + +#define NUM_XBUFFS 1 +#define NUM_RBUFFS 2 +#define RCV_BUFF_SZ 0x0200 +#define XMIT_BUFF_SZ 0x1000 +struct statusArea { + /**********************************************/ + /* Transmit Status Area */ + /**********************************************/ + struct xmit_status_area{ + __le32 leNext; /* Next entry in Little Endian on Adapter */ + __le32 leNextASD; + __le32 leBuffer; /* Buffer for entry in LE for Adapter */ + __le16 leLengthASD; + __le16 leOffsetASD; + __le16 leLength; /* Length of data in segment */ + __le16 flags; +#define SA_FLAGS_DONE 0x0080 /* Done with Segment */ +#define SA_FLAGS_CONTINUED 0x8000 /* More Segments */ +#define SA_FLAGS_IDLE 0x4000 /* Mark IDLE after frm */ +#define SA_FLAGS_READY_TO_XMIT 0x0800 +#define SA_FLAGS_STAT_MASK 0x007F + } xmit[NUM_XBUFFS]; + + /**********************************************/ + /* Receive Status Area */ + /**********************************************/ + struct { + __le32 leNext; /* Next entry in Little Endian on Adapter */ + __le32 leNextASD; + __le32 leBuffer; /* Buffer for entry in LE for Adapter */ + __le16 WorkingLength; /* size of segment */ + __le16 reserv01; + __le16 leLength; /* Length of data in segment */ + __le16 flags; +#define SA_FL_RCV_DONE 0x0010 /* Data ready */ +#define SA_FLAGS_OVERRUN 0x0040 +#define SA_FLAGS_PARITY_ERROR 0x0080 +#define SA_FLAGS_FRAME_ERROR 0x0001 +#define SA_FLAGS_FRAME_TRUNC 0x0002 +#define SA_FLAGS_BREAK_DET 0x0004 /* set conditionally by device dri= ver, not hardware */ +#define SA_FLAGS_RCV_MASK 0xFFE6 + } rcv[NUM_RBUFFS]; +}; + +struct icom_adapter; + + +#define ICOM_MAJOR 243 +#define ICOM_MINOR_START 0 + +struct icom_port { + struct uart_port uart_port; + u8 imbed_modem; +#define ICOM_UNKNOWN 1 +#define ICOM_RVX 2 +#define ICOM_IMBED_MODEM 3 + unsigned char cable_id; + unsigned char read_status_mask; + unsigned char ignore_status_mask; + void __iomem * int_reg; + struct icom_regs __iomem *global_reg; + struct func_dram __iomem *dram; + int port; + struct statusArea *statStg; + dma_addr_t statStg_pci; + __le32 *xmitRestart; + dma_addr_t xmitRestart_pci; + unsigned char *xmit_buf; + dma_addr_t xmit_buf_pci; + unsigned char *recv_buf; + dma_addr_t recv_buf_pci; + int next_rcv; + int put_length; + int status; +#define ICOM_PORT_ACTIVE 1 /* Port exists. */ +#define ICOM_PORT_OFF 0 /* Port does not exist. */ + int load_in_progress; + struct icom_adapter *adapter; +}; + +struct icom_adapter { + void __iomem * base_addr; + unsigned long base_addr_pci; + struct pci_dev *pci_dev; + struct icom_port port_info[4]; + int index; + int version; +#define ADAPTER_V1 0x0001 +#define ADAPTER_V2 0x0002 + u32 subsystem_id; +#define FOUR_PORT_MODEL 0x0252 +#define V2_TWO_PORTS_RVX 0x021A +#define V2_ONE_PORT_RVX_ONE_PORT_IMBED_MDM 0x0251 + int numb_ports; + struct list_head icom_adapter_entry; + struct kref kref; +}; + +/* prototype */ +extern void iCom_sercons_init(void); + +struct lookup_proc_table { + u32 __iomem *global_control_reg; + unsigned long processor_id; +}; + +struct lookup_int_table { + u32 __iomem *global_int_mask; + unsigned long processor_id; +}; + static inline struct icom_port *to_icom_port(struct uart_port *port) { return container_of(port, struct icom_port, uart_port); diff --git a/drivers/tty/serial/icom.h b/drivers/tty/serial/icom.h deleted file mode 100644 index 62d5ba81dcfc..000000000000 --- a/drivers/tty/serial/icom.h +++ /dev/null @@ -1,274 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0+ */ -/* - * icom.h - * - * Copyright (C) 2001 Michael Anderson, IBM Corporation - * - * Serial device driver include file. - */ - -#include - -#define BAUD_TABLE_LIMIT ((sizeof(icom_acfg_baud)/sizeof(int)) - 1) -static int icom_acfg_baud[] =3D { - 300, - 600, - 900, - 1200, - 1800, - 2400, - 3600, - 4800, - 7200, - 9600, - 14400, - 19200, - 28800, - 38400, - 57600, - 76800, - 115200, - 153600, - 230400, - 307200, - 460800, -}; - -struct icom_regs { - u32 control; /* Adapter Control Register */ - u32 interrupt; /* Adapter Interrupt Register */ - u32 int_mask; /* Adapter Interrupt Mask Reg */ - u32 int_pri; /* Adapter Interrupt Priority r */ - u32 int_reg_b; /* Adapter non-masked Interrupt */ - u32 resvd01; - u32 resvd02; - u32 resvd03; - u32 control_2; /* Adapter Control Register 2 */ - u32 interrupt_2; /* Adapter Interrupt Register 2 */ - u32 int_mask_2; /* Adapter Interrupt Mask 2 */ - u32 int_pri_2; /* Adapter Interrupt Prior 2 */ - u32 int_reg_2b; /* Adapter non-masked 2 */ -}; - -struct func_dram { - u32 reserved[108]; /* 0-1B0 reserved by personality code */ - u32 RcvStatusAddr; /* 1B0-1B3 Status Address for Next rcv */ - u8 RcvStnAddr; /* 1B4 Receive Station Addr */ - u8 IdleState; /* 1B5 Idle State */ - u8 IdleMonitor; /* 1B6 Idle Monitor */ - u8 FlagFillIdleTimer; /* 1B7 Flag Fill Idle Timer */ - u32 XmitStatusAddr; /* 1B8-1BB Transmit Status Address */ - u8 StartXmitCmd; /* 1BC Start Xmit Command */ - u8 HDLCConfigReg; /* 1BD Reserved */ - u8 CauseCode; /* 1BE Cause code for fatal error */ - u8 xchar; /* 1BF High priority send */ - u32 reserved3; /* 1C0-1C3 Reserved */ - u8 PrevCmdReg; /* 1C4 Reserved */ - u8 CmdReg; /* 1C5 Command Register */ - u8 async_config2; /* 1C6 Async Config Byte 2 */ - u8 async_config3; /* 1C7 Async Config Byte 3 */ - u8 dce_resvd[20]; /* 1C8-1DB DCE Rsvd */ - u8 dce_resvd21; /* 1DC DCE Rsvd (21st byte */ - u8 misc_flags; /* 1DD misc flags */ -#define V2_HARDWARE 0x40 -#define ICOM_HDW_ACTIVE 0x01 - u8 call_length; /* 1DE Phone #/CFI buff ln */ - u8 call_length2; /* 1DF Upper byte (unused) */ - u32 call_addr; /* 1E0-1E3 Phn #/CFI buff addr */ - u16 timer_value; /* 1E4-1E5 general timer value */ - u8 timer_command; /* 1E6 general timer cmd */ - u8 dce_command; /* 1E7 dce command reg */ - u8 dce_cmd_status; /* 1E8 dce command stat */ - u8 x21_r1_ioff; /* 1E9 dce ready counter */ - u8 x21_r0_ioff; /* 1EA dce not ready ctr */ - u8 x21_ralt_ioff; /* 1EB dce CNR counter */ - u8 x21_r1_ion; /* 1EC dce ready I on ctr */ - u8 rsvd_ier; /* 1ED Rsvd for IER (if ne */ - u8 ier; /* 1EE Interrupt Enable */ - u8 isr; /* 1EF Input Signal Reg */ - u8 osr; /* 1F0 Output Signal Reg */ - u8 reset; /* 1F1 Reset/Reload Reg */ - u8 disable; /* 1F2 Disable Reg */ - u8 sync; /* 1F3 Sync Reg */ - u8 error_stat; /* 1F4 Error Status */ - u8 cable_id; /* 1F5 Cable ID */ - u8 cs_length; /* 1F6 CS Load Length */ - u8 mac_length; /* 1F7 Mac Load Length */ - u32 cs_load_addr; /* 1F8-1FB Call Load PCI Addr */ - u32 mac_load_addr; /* 1FC-1FF Mac Load PCI Addr */ -}; - -/* - * adapter defines and structures - */ -#define ICOM_CONTROL_START_A 0x00000008 -#define ICOM_CONTROL_STOP_A 0x00000004 -#define ICOM_CONTROL_START_B 0x00000002 -#define ICOM_CONTROL_STOP_B 0x00000001 -#define ICOM_CONTROL_START_C 0x00000008 -#define ICOM_CONTROL_STOP_C 0x00000004 -#define ICOM_CONTROL_START_D 0x00000002 -#define ICOM_CONTROL_STOP_D 0x00000001 -#define ICOM_IRAM_OFFSET 0x1000 -#define ICOM_IRAM_SIZE 0x0C00 -#define ICOM_DCE_IRAM_OFFSET 0x0A00 -#define ICOM_CABLE_ID_VALID 0x01 -#define ICOM_CABLE_ID_MASK 0xF0 -#define ICOM_DISABLE 0x80 -#define CMD_XMIT_RCV_ENABLE 0xC0 -#define CMD_XMIT_ENABLE 0x40 -#define CMD_RCV_DISABLE 0x00 -#define CMD_RCV_ENABLE 0x80 -#define CMD_RESTART 0x01 -#define CMD_HOLD_XMIT 0x02 -#define CMD_SND_BREAK 0x04 -#define RS232_CABLE 0x06 -#define V24_CABLE 0x0E -#define V35_CABLE 0x0C -#define V36_CABLE 0x02 -#define NO_CABLE 0x00 -#define START_DOWNLOAD 0x80 -#define ICOM_INT_MASK_PRC_A 0x00003FFF -#define ICOM_INT_MASK_PRC_B 0x3FFF0000 -#define ICOM_INT_MASK_PRC_C 0x00003FFF -#define ICOM_INT_MASK_PRC_D 0x3FFF0000 -#define INT_RCV_COMPLETED 0x1000 -#define INT_XMIT_COMPLETED 0x2000 -#define INT_IDLE_DETECT 0x0800 -#define INT_RCV_DISABLED 0x0400 -#define INT_XMIT_DISABLED 0x0200 -#define INT_RCV_XMIT_SHUTDOWN 0x0100 -#define INT_FATAL_ERROR 0x0080 -#define INT_CABLE_PULL 0x0020 -#define INT_SIGNAL_CHANGE 0x0010 -#define HDLC_PPP_PURE_ASYNC 0x02 -#define HDLC_FF_FILL 0x00 -#define HDLC_HDW_FLOW 0x01 -#define START_XMIT 0x80 -#define ICOM_ACFG_DRIVE1 0x20 -#define ICOM_ACFG_NO_PARITY 0x00 -#define ICOM_ACFG_PARITY_ENAB 0x02 -#define ICOM_ACFG_PARITY_ODD 0x01 -#define ICOM_ACFG_8BPC 0x00 -#define ICOM_ACFG_7BPC 0x04 -#define ICOM_ACFG_6BPC 0x08 -#define ICOM_ACFG_5BPC 0x0C -#define ICOM_ACFG_1STOP_BIT 0x00 -#define ICOM_ACFG_2STOP_BIT 0x10 -#define ICOM_DTR 0x80 -#define ICOM_RTS 0x40 -#define ICOM_RI 0x08 -#define ICOM_DSR 0x80 -#define ICOM_DCD 0x20 -#define ICOM_CTS 0x40 - -#define NUM_XBUFFS 1 -#define NUM_RBUFFS 2 -#define RCV_BUFF_SZ 0x0200 -#define XMIT_BUFF_SZ 0x1000 -struct statusArea { - /**********************************************/ - /* Transmit Status Area */ - /**********************************************/ - struct xmit_status_area{ - __le32 leNext; /* Next entry in Little Endian on Adapter */ - __le32 leNextASD; - __le32 leBuffer; /* Buffer for entry in LE for Adapter */ - __le16 leLengthASD; - __le16 leOffsetASD; - __le16 leLength; /* Length of data in segment */ - __le16 flags; -#define SA_FLAGS_DONE 0x0080 /* Done with Segment */ -#define SA_FLAGS_CONTINUED 0x8000 /* More Segments */ -#define SA_FLAGS_IDLE 0x4000 /* Mark IDLE after frm */ -#define SA_FLAGS_READY_TO_XMIT 0x0800 -#define SA_FLAGS_STAT_MASK 0x007F - } xmit[NUM_XBUFFS]; - - /**********************************************/ - /* Receive Status Area */ - /**********************************************/ - struct { - __le32 leNext; /* Next entry in Little Endian on Adapter */ - __le32 leNextASD; - __le32 leBuffer; /* Buffer for entry in LE for Adapter */ - __le16 WorkingLength; /* size of segment */ - __le16 reserv01; - __le16 leLength; /* Length of data in segment */ - __le16 flags; -#define SA_FL_RCV_DONE 0x0010 /* Data ready */ -#define SA_FLAGS_OVERRUN 0x0040 -#define SA_FLAGS_PARITY_ERROR 0x0080 -#define SA_FLAGS_FRAME_ERROR 0x0001 -#define SA_FLAGS_FRAME_TRUNC 0x0002 -#define SA_FLAGS_BREAK_DET 0x0004 /* set conditionally by device dri= ver, not hardware */ -#define SA_FLAGS_RCV_MASK 0xFFE6 - } rcv[NUM_RBUFFS]; -}; - -struct icom_adapter; - - -#define ICOM_MAJOR 243 -#define ICOM_MINOR_START 0 - -struct icom_port { - struct uart_port uart_port; - u8 imbed_modem; -#define ICOM_UNKNOWN 1 -#define ICOM_RVX 2 -#define ICOM_IMBED_MODEM 3 - unsigned char cable_id; - unsigned char read_status_mask; - unsigned char ignore_status_mask; - void __iomem * int_reg; - struct icom_regs __iomem *global_reg; - struct func_dram __iomem *dram; - int port; - struct statusArea *statStg; - dma_addr_t statStg_pci; - __le32 *xmitRestart; - dma_addr_t xmitRestart_pci; - unsigned char *xmit_buf; - dma_addr_t xmit_buf_pci; - unsigned char *recv_buf; - dma_addr_t recv_buf_pci; - int next_rcv; - int put_length; - int status; -#define ICOM_PORT_ACTIVE 1 /* Port exists. */ -#define ICOM_PORT_OFF 0 /* Port does not exist. */ - int load_in_progress; - struct icom_adapter *adapter; -}; - -struct icom_adapter { - void __iomem * base_addr; - unsigned long base_addr_pci; - struct pci_dev *pci_dev; - struct icom_port port_info[4]; - int index; - int version; -#define ADAPTER_V1 0x0001 -#define ADAPTER_V2 0x0002 - u32 subsystem_id; -#define FOUR_PORT_MODEL 0x0252 -#define V2_TWO_PORTS_RVX 0x021A -#define V2_ONE_PORT_RVX_ONE_PORT_IMBED_MDM 0x0251 - int numb_ports; - struct list_head icom_adapter_entry; - struct kref kref; -}; - -/* prototype */ -extern void iCom_sercons_init(void); - -struct lookup_proc_table { - u32 __iomem *global_control_reg; - unsigned long processor_id; -}; - -struct lookup_int_table { - u32 __iomem *global_int_mask; - unsigned long processor_id; -}; --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38045C433F5 for ; Thu, 21 Apr 2022 08:58:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387127AbiDUJB0 (ORCPT ); Thu, 21 Apr 2022 05:01:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347678AbiDUJBB (ORCPT ); Thu, 21 Apr 2022 05:01:01 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C1AD20F73; Thu, 21 Apr 2022 01:58:12 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 2CA781F758; Thu, 21 Apr 2022 08:58:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=79nd/iPdqLV+axSNwBVTh85Rla2fHQ9vKLGrQW44PTg=; b=Yk4lxSN+NcY7N+2Qf3gj0iQqaCoIIScfxO83IHKasaMkf0YDofrDmkg4QHI/dp0sWGoLsk FLL5NZchx6u8NhOMg/QOJekPMH3yIu0yBkoQ52+BjKQSTRXGhFY2GsslsURMPAPfrRyVcM ZT6ZwL06PcRP8GgyJEFypVGxhX7bRzQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=79nd/iPdqLV+axSNwBVTh85Rla2fHQ9vKLGrQW44PTg=; b=qG9Vd3kZEObHG/Zp5XnJk4c7Fki7kp5xxTur9sUDzLui75D6nhG0i31hRn8N6/JldSWZbq at0BayD8U/+m7/CA== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id F01332C141; Thu, 21 Apr 2022 08:58:10 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 06/10] serial: icom: use ARRAY_SIZE Date: Thu, 21 Apr 2022 10:58:04 +0200 Message-Id: <20220421085808.24152-7-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 083c00aced07..34e716cadb28 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -47,7 +47,6 @@ #define ICOM_DRIVER_NAME "icom" #define NR_PORTS 128 =20 -#define BAUD_TABLE_LIMIT ((sizeof(icom_acfg_baud)/sizeof(int)) - 1) static int icom_acfg_baud[] =3D { 300, 600, @@ -71,6 +70,7 @@ static int icom_acfg_baud[] =3D { 307200, 460800, }; +#define BAUD_TABLE_LIMIT (ARRAY_SIZE(icom_acfg_baud) - 1) =20 struct icom_regs { u32 control; /* Adapter Control Register */ --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 760A1C433EF for ; Thu, 21 Apr 2022 08:58:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387119AbiDUJBW (ORCPT ); Thu, 21 Apr 2022 05:01:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387055AbiDUJBB (ORCPT ); Thu, 21 Apr 2022 05:01:01 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB7C220F75; Thu, 21 Apr 2022 01:58:12 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 71AB52129B; Thu, 21 Apr 2022 08:58:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=g/9irgCCWI7KgQDtWmFEKD70fZ4JynU21uK/zUgv17s=; b=BZ4yImvZ+qTzxbwjenSkfkcQ9L7WRpr27wEm+DjJK/6fKOjEv3qDoDWZIjZ5W8fky83Lhu 3LuDK/rnB7ANS6J3rw1ZgZmYY2s98CIASkzqAAggeIGuUJWJhlmOb/MIPXRGaKcE5KayJ6 750S6O+dyX9YRYNz72Qy1SWOliD3aRY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=g/9irgCCWI7KgQDtWmFEKD70fZ4JynU21uK/zUgv17s=; b=Z6Y2wW/uLWFCfZnozGoZxodFvjQN/9H6lSqPmRDYmBl5Q9rCb/9yY62DqDRQykVKkA4C0d Pz+XxN1SXaPyW7Dw== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 4046E2C149; Thu, 21 Apr 2022 08:58:11 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 07/10] serial: icom: make icom_acfg_baud const and unsigned Date: Thu, 21 Apr 2022 10:58:05 +0200 Message-Id: <20220421085808.24152-8-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The baud rates are unsigned constants. So mark them as such. Not only it makes sense, but they are passed also to uart_get_baud_rate() and that expects unsigned int as baud rates on input. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 34e716cadb28..85ecc7dfac72 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -47,7 +47,7 @@ #define ICOM_DRIVER_NAME "icom" #define NR_PORTS 128 =20 -static int icom_acfg_baud[] =3D { +static const unsigned int icom_acfg_baud[] =3D { 300, 600, 900, --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5E3ECC433EF for ; Thu, 21 Apr 2022 08:58:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230393AbiDUJBT (ORCPT ); Thu, 21 Apr 2022 05:01:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387058AbiDUJBC (ORCPT ); Thu, 21 Apr 2022 05:01:02 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C72B21242; Thu, 21 Apr 2022 01:58:13 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id AF22C210DC; Thu, 21 Apr 2022 08:58:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=N641P0kZgH3xzco/f776cJFCpsaJCbMVK4k6vEfn5F8=; b=NVlgjse87Rw8XYQBCoEAA+sYONIrDlhsvi/MSR/TKmI33n1YUG/81Ns13hb5PIVZ3egGLH rbfaj0Bf3uW2Btp26ywFE8XJ9o6bgxJ2VxCr4PGW6MeBMt2sSFjl8xkfHQSdLwZwuDKZcx iBZbKpwsgVWAkP+tHY2L+DukBdCmlFg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=N641P0kZgH3xzco/f776cJFCpsaJCbMVK4k6vEfn5F8=; b=gQfk1+Np2N+mF/QFk/WYFavc/fCk6qaF0OnDPiL/lkafN4qhImEyF2jrEFp8ywlXl3Ziwx 1a5r4X34/pYTrfAQ== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 86F202C141; Thu, 21 Apr 2022 08:58:11 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 08/10] serial: icom: use list_for_each_entry() Date: Thu, 21 Apr 2022 10:58:06 +0200 Message-Id: <20220421085808.24152-9-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use list_for_each_entry() helper instead of explicit combo of list_for_each() and list_entry(). Note that pos is used as a reference point in list_add_tail() in icom_alloc_adapter(). This functionality remains as with an empty list, cur_adapter_entry->icom_adapter_entry is still the list head. This simplifies the code a bit. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 85ecc7dfac72..8701856e2a2e 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -1675,7 +1675,6 @@ static int icom_alloc_adapter(struct icom_adapter int adapter_count =3D 0; struct icom_adapter *icom_adapter; struct icom_adapter *cur_adapter_entry; - struct list_head *tmp; =20 icom_adapter =3D kzalloc(sizeof(struct icom_adapter), GFP_KERNEL); =20 @@ -1683,10 +1682,8 @@ static int icom_alloc_adapter(struct icom_adapter return -ENOMEM; } =20 - list_for_each(tmp, &icom_adapter_head) { - cur_adapter_entry =3D - list_entry(tmp, struct icom_adapter, - icom_adapter_entry); + list_for_each_entry(cur_adapter_entry, &icom_adapter_head, + icom_adapter_entry) { if (cur_adapter_entry->index !=3D adapter_count) { break; } @@ -1694,7 +1691,8 @@ static int icom_alloc_adapter(struct icom_adapter } =20 icom_adapter->index =3D adapter_count; - list_add_tail(&icom_adapter->icom_adapter_entry, tmp); + list_add_tail(&icom_adapter->icom_adapter_entry, + &cur_adapter_entry->icom_adapter_entry); =20 *icom_adapter_ref =3D icom_adapter; return 0; @@ -1857,11 +1855,9 @@ static int icom_probe(struct pci_dev *dev, static void icom_remove(struct pci_dev *dev) { struct icom_adapter *icom_adapter; - struct list_head *tmp; =20 - list_for_each(tmp, &icom_adapter_head) { - icom_adapter =3D list_entry(tmp, struct icom_adapter, - icom_adapter_entry); + list_for_each_entry(icom_adapter, &icom_adapter_head, + icom_adapter_entry) { if (icom_adapter->pci_dev =3D=3D dev) { kref_put(&icom_adapter->kref, icom_kref_release); return; --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB41EC433EF for ; Thu, 21 Apr 2022 08:58:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387138AbiDUJBa (ORCPT ); Thu, 21 Apr 2022 05:01:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387061AbiDUJBD (ORCPT ); Thu, 21 Apr 2022 05:01:03 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 46F8E21243; Thu, 21 Apr 2022 01:58:13 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id F19C41F753; Thu, 21 Apr 2022 08:58:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+TRr5a8I+35GUTDd8hSglfnLjzJ6edowbn+//3H1oS4=; b=RxIwFwkNkg5JQd/N7EHcYl1jmRjJk+3yyY2I4gYOa+JZy7x7FXJEZLup32UhvjInc+UPCt V8DCfgrQk9O+KlVGcckDU3aWTZ7HCpFb9fU8NBgHLaSc9cLWX7cBC9kbEZ6J9d0f3Ew3OZ LvDuFnacCyzOIL+ihlW7dfBvZOaYKjc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531491; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+TRr5a8I+35GUTDd8hSglfnLjzJ6edowbn+//3H1oS4=; b=ZwCQNVpFmRkkVCElwSmCgyaROdQDwR9dZiCnTiOjTqzeR/X/Wn7r5zGlLwZXaejDtyFNr5 xhkfIxKrosAz52AQ== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id C13542C145; Thu, 21 Apr 2022 08:58:11 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 09/10] serial: icom: delete empty serial hooks Date: Thu, 21 Apr 2022 10:58:07 +0200 Message-Id: <20220421085808.24152-10-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" uart_ops::release_port() and uart_ops::request_port() are not required by the serial layer. So no need to define empty ones. Remove them. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index 8701856e2a2e..e22f37a41764 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -1532,15 +1532,6 @@ static const char *icom_type(struct uart_port *port) return "icom"; } =20 -static void icom_release_port(struct uart_port *port) -{ -} - -static int icom_request_port(struct uart_port *port) -{ - return 0; -} - static void icom_config_port(struct uart_port *port, int flags) { port->type =3D PORT_ICOM; @@ -1559,8 +1550,6 @@ static const struct uart_ops icom_ops =3D { .shutdown =3D icom_close, .set_termios =3D icom_set_termios, .type =3D icom_type, - .release_port =3D icom_release_port, - .request_port =3D icom_request_port, .config_port =3D icom_config_port, }; =20 --=20 2.36.0 From nobody Sun May 10 23:26:40 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EE7CC433F5 for ; Thu, 21 Apr 2022 08:58:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387144AbiDUJBc (ORCPT ); Thu, 21 Apr 2022 05:01:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39158 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387064AbiDUJBD (ORCPT ); Thu, 21 Apr 2022 05:01:03 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82C6221248; Thu, 21 Apr 2022 01:58:13 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 39E38212CA; Thu, 21 Apr 2022 08:58:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1650531492; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aCVuSWmdJcT0qsHrLl/HQ/xnZ+4OVTDDHOXy1yDRIyw=; b=eGuZm4DngR1Y6cKZRBDMMR4iSQm29zB1KC9VE65ajS+H1IVCdPmIVCAaRau77clJ0i3VR/ kySKBiqhB65x92DcqSbKm8QTJ0XA2RVxH+TIwJ/splOo7BnQa45tlRwZVAJedzzOhgRFS/ wM66pZhDcIDFm8H0EqrjZ/KuwPm5jfk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1650531492; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aCVuSWmdJcT0qsHrLl/HQ/xnZ+4OVTDDHOXy1yDRIyw=; b=wtqWh50xiFPYH77mfVbJvf0zfVIyeNs+iB2pjNANjyLngg/CxnxNNQQup6165JnBlfsG5B +GM35fjb3Bok+rBw== Received: from localhost.localdomain (unknown [10.100.208.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 11D892C141; Thu, 21 Apr 2022 08:58:12 +0000 (UTC) From: Jiri Slaby To: gregkh@linuxfoundation.org Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby Subject: [PATCH 10/10] serial: icom: remove unused struct icom_port members Date: Thu, 21 Apr 2022 10:58:08 +0200 Message-Id: <20220421085808.24152-11-jslaby@suse.cz> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220421085808.24152-1-jslaby@suse.cz> References: <20220421085808.24152-1-jslaby@suse.cz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Some members of struct icom_port are completely unused or only set and never read. Remove all those. Signed-off-by: Jiri Slaby --- drivers/tty/serial/icom.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index e22f37a41764..45df29947fe8 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c @@ -252,10 +252,6 @@ struct icom_adapter; =20 struct icom_port { struct uart_port uart_port; - u8 imbed_modem; -#define ICOM_UNKNOWN 1 -#define ICOM_RVX 2 -#define ICOM_IMBED_MODEM 3 unsigned char cable_id; unsigned char read_status_mask; unsigned char ignore_status_mask; @@ -272,11 +268,9 @@ struct icom_port { unsigned char *recv_buf; dma_addr_t recv_buf_pci; int next_rcv; - int put_length; int status; #define ICOM_PORT_ACTIVE 1 /* Port exists. */ #define ICOM_PORT_OFF 0 /* Port does not exist. */ - int load_in_progress; struct icom_adapter *adapter; }; =20 @@ -1517,7 +1511,6 @@ static void icom_set_termios(struct uart_port *port, writel(icom_port->statStg_pci + offset, &icom_port->dram->RcvStatusAddr); icom_port->next_rcv =3D 0; - icom_port->put_length =3D 0; *icom_port->xmitRestart =3D 0; writel(icom_port->xmitRestart_pci, &icom_port->dram->XmitStatusAddr); @@ -1578,7 +1571,6 @@ static int icom_init_ports(struct icom_adapter *icom_= adapter) icom_port =3D &icom_adapter->port_info[i]; icom_port->port =3D i; icom_port->status =3D ICOM_PORT_ACTIVE; - icom_port->imbed_modem =3D ICOM_UNKNOWN; } } else { if (subsystem_id =3D=3D PCI_DEVICE_ID_IBM_ICOM_FOUR_PORT_MODEL) { @@ -1589,26 +1581,15 @@ static int icom_init_ports(struct icom_adapter *ico= m_adapter) =20 icom_port->port =3D i; icom_port->status =3D ICOM_PORT_ACTIVE; - icom_port->imbed_modem =3D ICOM_IMBED_MODEM; } } else { icom_adapter->numb_ports =3D 4; =20 icom_adapter->port_info[0].port =3D 0; icom_adapter->port_info[0].status =3D ICOM_PORT_ACTIVE; - - if (subsystem_id =3D=3D - PCI_DEVICE_ID_IBM_ICOM_V2_ONE_PORT_RVX_ONE_PORT_MDM) { - icom_adapter->port_info[0].imbed_modem =3D ICOM_IMBED_MODEM; - } else { - icom_adapter->port_info[0].imbed_modem =3D ICOM_RVX; - } - icom_adapter->port_info[1].status =3D ICOM_PORT_OFF; - icom_adapter->port_info[2].port =3D 2; icom_adapter->port_info[2].status =3D ICOM_PORT_ACTIVE; - icom_adapter->port_info[2].imbed_modem =3D ICOM_RVX; icom_adapter->port_info[3].status =3D ICOM_PORT_OFF; } } --=20 2.36.0