treewide, serdev: change receive_buf() return type to size_t
authorFrancesco Dolcini <francesco.dolcini@toradex.com>
Mon, 22 Jan 2024 18:05:51 +0000 (19:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 28 Jan 2024 02:13:53 +0000 (18:13 -0800)
receive_buf() is called from ttyport_receive_buf() that expects values
">= 0" from serdev_controller_receive_buf(), change its return type from
ssize_t to size_t.

The need for this clean-up was noticed while fixing a warning, see
commit 94d053942544 ("Bluetooth: btnxpuart: fix recv_buf() return value").
Changing the callback prototype to return an unsigned seems the best way
to document the API and ensure that is properly used.

GNSS drivers implementation of serdev receive_buf() callback return
directly the return value of gnss_insert_raw(). gnss_insert_raw()
returns a signed int, however this is not an issue since the value
returned is always positive, because of the kfifo_in() implementation.
gnss_insert_raw() could be changed to return also an unsigned, however
this is not implemented here as request by the GNSS maintainer Johan
Hovold.

Suggested-by: Jiri Slaby <jirislaby@kernel.org>
Link: https://lore.kernel.org/all/087be419-ec6b-47ad-851a-5e1e3ea5cfcc@kernel.org/
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> #for-iio
Reviewed-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Acked-by: Maximilian Luz <luzmaximilian@gmail.com> # for platform/surface
Acked-by: Lee Jones <lee@kernel.org>
Acked-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20240122180551.34429-1-francesco@dolcini.it
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19 files changed:
drivers/bluetooth/btmtkuart.c
drivers/bluetooth/btnxpuart.c
drivers/bluetooth/hci_serdev.c
drivers/gnss/serial.c
drivers/gnss/sirf.c
drivers/greybus/gb-beagleplay.c
drivers/iio/chemical/pms7003.c
drivers/iio/chemical/scd30_serial.c
drivers/iio/chemical/sps30_serial.c
drivers/iio/imu/bno055/bno055_ser_core.c
drivers/mfd/rave-sp.c
drivers/net/ethernet/qualcomm/qca_uart.c
drivers/nfc/pn533/uart.c
drivers/nfc/s3fwrn5/uart.c
drivers/platform/chrome/cros_ec_uart.c
drivers/platform/surface/aggregator/core.c
drivers/tty/serdev/serdev-ttyport.c
include/linux/serdev.h
sound/drivers/serial-generic.c

index 3c84fcbda01aa3791aac96c97a6fba9ea6d211ce..e6bc4a73c9fc33ee7645ad903b991e4bf05e686c 100644 (file)
@@ -383,8 +383,8 @@ static void btmtkuart_recv(struct hci_dev *hdev, const u8 *data, size_t count)
        }
 }
 
-static ssize_t btmtkuart_receive_buf(struct serdev_device *serdev,
-                                    const u8 *data, size_t count)
+static size_t btmtkuart_receive_buf(struct serdev_device *serdev,
+                                   const u8 *data, size_t count)
 {
        struct btmtkuart_dev *bdev = serdev_device_get_drvdata(serdev);
 
index 1d592ac413d1ff6e9cdabe3d6b461b42c6c95dba..056bef5b29191b74cf0b027d131b9d95a95a1913 100644 (file)
@@ -1264,8 +1264,8 @@ static const struct h4_recv_pkt nxp_recv_pkts[] = {
        { NXP_RECV_FW_REQ_V3,   .recv = nxp_recv_fw_req_v3 },
 };
 
-static ssize_t btnxpuart_receive_buf(struct serdev_device *serdev,
-                                    const u8 *data, size_t count)
+static size_t btnxpuart_receive_buf(struct serdev_device *serdev,
+                                   const u8 *data, size_t count)
 {
        struct btnxpuart_dev *nxpdev = serdev_device_get_drvdata(serdev);
 
index 39c8b567da3c0e82d7ec3707db6fb909ea05f8ff..a3c3beb2806d08762077ba73f617f199616e5a4a 100644 (file)
@@ -271,8 +271,8 @@ static void hci_uart_write_wakeup(struct serdev_device *serdev)
  *
  * Return: number of processed bytes
  */
-static ssize_t hci_uart_receive_buf(struct serdev_device *serdev,
-                                   const u8 *data, size_t count)
+static size_t hci_uart_receive_buf(struct serdev_device *serdev,
+                                  const u8 *data, size_t count)
 {
        struct hci_uart *hu = serdev_device_get_drvdata(serdev);
 
index baa956494e79f0aa3651d5c0ab2e550f2337aff3..0e43bf6294f878aa83ab64d8c0b6b4ce3d09b93b 100644 (file)
@@ -80,7 +80,7 @@ static const struct gnss_operations gnss_serial_gnss_ops = {
        .write_raw      = gnss_serial_write_raw,
 };
 
-static ssize_t gnss_serial_receive_buf(struct serdev_device *serdev,
+static size_t gnss_serial_receive_buf(struct serdev_device *serdev,
                                       const u8 *buf, size_t count)
 {
        struct gnss_serial *gserial = serdev_device_get_drvdata(serdev);
index 6801a8fb20401a484aba805be4fe1c0f0ca8e940..79375d14bbb6732e3676c4e8dc8e20c41bbf2c15 100644 (file)
@@ -160,7 +160,7 @@ static const struct gnss_operations sirf_gnss_ops = {
        .write_raw      = sirf_write_raw,
 };
 
-static ssize_t sirf_receive_buf(struct serdev_device *serdev,
+static size_t sirf_receive_buf(struct serdev_device *serdev,
                                const u8 *buf, size_t count)
 {
        struct sirf_data *data = serdev_device_get_drvdata(serdev);
index c3e90025064bdec9ac5cf7de150d708fbecae03a..33f8fad70260a45c6d0042871c9b4e3dff293bb5 100644 (file)
@@ -271,7 +271,7 @@ static void hdlc_rx_frame(struct gb_beagleplay *bg)
        }
 }
 
-static ssize_t hdlc_rx(struct gb_beagleplay *bg, const u8 *data, size_t count)
+static size_t hdlc_rx(struct gb_beagleplay *bg, const u8 *data, size_t count)
 {
        size_t i;
        u8 c;
@@ -331,8 +331,8 @@ static void hdlc_deinit(struct gb_beagleplay *bg)
        flush_work(&bg->tx_work);
 }
 
-static ssize_t gb_tty_receive(struct serdev_device *sd, const u8 *data,
-                             size_t count)
+static size_t gb_tty_receive(struct serdev_device *sd, const u8 *data,
+                            size_t count)
 {
        struct gb_beagleplay *bg = serdev_device_get_drvdata(sd);
 
index b5cf15a515d251a3cb4d862cf7a11ba82596baa8..43025866d5b791c1418898272d2cb2fa53bd125a 100644 (file)
@@ -211,8 +211,8 @@ static bool pms7003_frame_is_okay(struct pms7003_frame *frame)
        return checksum == pms7003_calc_checksum(frame);
 }
 
-static ssize_t pms7003_receive_buf(struct serdev_device *serdev, const u8 *buf,
-                                  size_t size)
+static size_t pms7003_receive_buf(struct serdev_device *serdev, const u8 *buf,
+                                 size_t size)
 {
        struct iio_dev *indio_dev = serdev_device_get_drvdata(serdev);
        struct pms7003_state *state = iio_priv(indio_dev);
index a47654591e555fcf107e5c23180438b99921a15d..2adb76dbb0209edc24c5f20c3c2c01bf609afe41 100644 (file)
@@ -174,8 +174,8 @@ static int scd30_serdev_command(struct scd30_state *state, enum scd30_cmd cmd, u
        return 0;
 }
 
-static ssize_t scd30_serdev_receive_buf(struct serdev_device *serdev,
-                                       const u8 *buf, size_t size)
+static size_t scd30_serdev_receive_buf(struct serdev_device *serdev,
+                                      const u8 *buf, size_t size)
 {
        struct iio_dev *indio_dev = serdev_device_get_drvdata(serdev);
        struct scd30_serdev_priv *priv;
index 3afa89f8acc329c73cf39f22cec98251a32d6120..a6dfbe28c914c7f6e8a3adacf14019447272e21e 100644 (file)
@@ -210,8 +210,8 @@ static int sps30_serial_command(struct sps30_state *state, unsigned char cmd,
        return rsp_size;
 }
 
-static ssize_t sps30_serial_receive_buf(struct serdev_device *serdev,
-                                       const u8 *buf, size_t size)
+static size_t sps30_serial_receive_buf(struct serdev_device *serdev,
+                                      const u8 *buf, size_t size)
 {
        struct iio_dev *indio_dev = dev_get_drvdata(&serdev->dev);
        struct sps30_serial_priv *priv;
index 5677bdf4f846ebd0405fbba43d1b9ad108033a3a..694ff14a3aa2795bdfbd8b42420d0f29dc6c4e40 100644 (file)
@@ -378,8 +378,8 @@ static void bno055_ser_handle_rx(struct bno055_ser_priv *priv, int status)
  * Also, we assume to RX one pkt per time (i.e. the HW doesn't send anything
  * unless we require to AND we don't queue more than one request per time).
  */
-static ssize_t bno055_ser_receive_buf(struct serdev_device *serdev,
-                                     const u8 *buf, size_t size)
+static size_t bno055_ser_receive_buf(struct serdev_device *serdev,
+                                    const u8 *buf, size_t size)
 {
        int status;
        struct bno055_ser_priv *priv = serdev_device_get_drvdata(serdev);
index 6ff84b2600c5438d5d7cf9387d2280e1a4a62d64..62a6613fb07005917c1f00b214b107e9148f7319 100644 (file)
@@ -471,8 +471,8 @@ static void rave_sp_receive_frame(struct rave_sp *sp,
                rave_sp_receive_reply(sp, data, length);
 }
 
-static ssize_t rave_sp_receive_buf(struct serdev_device *serdev,
-                                  const u8 *buf, size_t size)
+static size_t rave_sp_receive_buf(struct serdev_device *serdev,
+                                 const u8 *buf, size_t size)
 {
        struct device *dev = &serdev->dev;
        struct rave_sp *sp = dev_get_drvdata(dev);
index 223321897b9613e1d112c888f6adaf5c46a625b1..20f50bde82acde677e6d837da3d10fce999ef4e9 100644 (file)
@@ -58,7 +58,7 @@ struct qcauart {
        unsigned char *tx_buffer;
 };
 
-static ssize_t
+static size_t
 qca_tty_receive(struct serdev_device *serdev, const u8 *data, size_t count)
 {
        struct qcauart *qca = serdev_device_get_drvdata(serdev);
index 2eb5978bd79e1b5114bb34bab409fbeaae00faf8..cfbbe0713317f8e5ca9b3a4942373376febfa248 100644 (file)
@@ -203,8 +203,8 @@ static int pn532_uart_rx_is_frame(struct sk_buff *skb)
        return 0;
 }
 
-static ssize_t pn532_receive_buf(struct serdev_device *serdev,
-                                const u8 *data, size_t count)
+static size_t pn532_receive_buf(struct serdev_device *serdev,
+                               const u8 *data, size_t count)
 {
        struct pn532_uart_phy *dev = serdev_device_get_drvdata(serdev);
        size_t i;
index 456d3947116c1c4029fa2477bdf1c12f508927aa..9c09c10c2a4640e626c4f62fc8800c9d2ccc1e5c 100644 (file)
@@ -51,8 +51,8 @@ static const struct s3fwrn5_phy_ops uart_phy_ops = {
        .write = s3fwrn82_uart_write,
 };
 
-static ssize_t s3fwrn82_uart_read(struct serdev_device *serdev,
-                                 const u8 *data, size_t count)
+static size_t s3fwrn82_uart_read(struct serdev_device *serdev,
+                                const u8 *data, size_t count)
 {
        struct s3fwrn82_uart_phy *phy = serdev_device_get_drvdata(serdev);
        size_t i;
index 68d80559fddc25b076648aa6c69f99951c15f262..8ea867c2a01a371a64e1eb10327931861d306dc8 100644 (file)
@@ -81,8 +81,8 @@ struct cros_ec_uart {
        struct response_info response;
 };
 
-static ssize_t cros_ec_uart_rx_bytes(struct serdev_device *serdev,
-                                    const u8 *data, size_t count)
+static size_t cros_ec_uart_rx_bytes(struct serdev_device *serdev,
+                                   const u8 *data, size_t count)
 {
        struct ec_host_response *host_response;
        struct cros_ec_device *ec_dev = serdev_device_get_drvdata(serdev);
index 9591a28bc38a9f40da8f9c53fb49c11a6396a968..ba550eaa06fcf594e2b6d3c0d8128b38813daf25 100644 (file)
@@ -227,8 +227,8 @@ EXPORT_SYMBOL_GPL(ssam_client_bind);
 
 /* -- Glue layer (serdev_device -> ssam_controller). ------------------------ */
 
-static ssize_t ssam_receive_buf(struct serdev_device *dev, const u8 *buf,
-                               size_t n)
+static size_t ssam_receive_buf(struct serdev_device *dev, const u8 *buf,
+                              size_t n)
 {
        struct ssam_controller *ctrl;
        int ret;
index e94e090cf0a1a5aa31575b21de671c1fe8fb71f5..3d7ae7fa50186bc01481a9e9685aea41b10b6f2b 100644 (file)
@@ -27,19 +27,17 @@ static size_t ttyport_receive_buf(struct tty_port *port, const u8 *cp,
 {
        struct serdev_controller *ctrl = port->client_data;
        struct serport *serport = serdev_controller_get_drvdata(ctrl);
-       int ret;
+       size_t ret;
 
        if (!test_bit(SERPORT_ACTIVE, &serport->flags))
                return 0;
 
        ret = serdev_controller_receive_buf(ctrl, cp, count);
 
-       dev_WARN_ONCE(&ctrl->dev, ret < 0 || ret > count,
-                               "receive_buf returns %d (count = %zu)\n",
+       dev_WARN_ONCE(&ctrl->dev, ret > count,
+                               "receive_buf returns %zu (count = %zu)\n",
                                ret, count);
-       if (ret < 0)
-               return 0;
-       else if (ret > count)
+       if (ret > count)
                return count;
 
        return ret;
index 3fab88ba265ee1d44ce48d9efe0ddc31d5c8e934..ff78efc1f60df4341fc8f9d82ac5e8bd6f6910c1 100644 (file)
@@ -27,7 +27,7 @@ struct serdev_device;
  *                     not sleep.
  */
 struct serdev_device_ops {
-       ssize_t (*receive_buf)(struct serdev_device *, const u8 *, size_t);
+       size_t (*receive_buf)(struct serdev_device *, const u8 *, size_t);
        void (*write_wakeup)(struct serdev_device *);
 };
 
@@ -185,9 +185,9 @@ static inline void serdev_controller_write_wakeup(struct serdev_controller *ctrl
        serdev->ops->write_wakeup(serdev);
 }
 
-static inline ssize_t serdev_controller_receive_buf(struct serdev_controller *ctrl,
-                                                   const u8 *data,
-                                                   size_t count)
+static inline size_t serdev_controller_receive_buf(struct serdev_controller *ctrl,
+                                                  const u8 *data,
+                                                  size_t count)
 {
        struct serdev_device *serdev = ctrl->serdev;
 
index d6e5aafd697c7e4e06ae8692e935de4bc206c192..36409a56c675e77facc31a5c0873e4f757480b16 100644 (file)
@@ -100,8 +100,8 @@ static void snd_serial_generic_write_wakeup(struct serdev_device *serdev)
        snd_serial_generic_tx_wakeup(drvdata);
 }
 
-static ssize_t snd_serial_generic_receive_buf(struct serdev_device *serdev,
-                                             const u8 *buf, size_t count)
+static size_t snd_serial_generic_receive_buf(struct serdev_device *serdev,
+                                            const u8 *buf, size_t count)
 {
        int ret;
        struct snd_serial_generic *drvdata = serdev_device_get_drvdata(serdev);