Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753268AbaBMF3O (ORCPT ); Thu, 13 Feb 2014 00:29:14 -0500 Received: from mail-pa0-f48.google.com ([209.85.220.48]:60661 "EHLO mail-pa0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752843AbaBMF2M (ORCPT ); Thu, 13 Feb 2014 00:28:12 -0500 From: Dmitry Torokhov To: Christopher Heiny Cc: Andrew Duggan , Vincent Huang , Vivian Ly , Daniel Rosenberg , Linus Walleij , Benjamin Tissoires , Courtney Cavin , Linux Input , Linux Kernel Subject: [PATCH 08/11] Input: synaptics-rmi4 - use rmi_read/rmi_write in F01 Date: Wed, 12 Feb 2014 21:27:54 -0800 Message-Id: <1392269277-16391-8-git-send-email-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: <1392269277-16391-1-git-send-email-dmitry.torokhov@gmail.com> References: <1392269277-16391-1-git-send-email-dmitry.torokhov@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use rmi_read()/rmi_write() for reading/writing single-byte data. Also print error code when IO fails. Signed-off-by: Dmitry Torokhov --- drivers/input/rmi4/rmi_f01.c | 170 ++++++++++++++++++++++--------------------- 1 file changed, 88 insertions(+), 82 deletions(-) diff --git a/drivers/input/rmi4/rmi_f01.c b/drivers/input/rmi4/rmi_f01.c index 1219e0c..a2f05bc 100644 --- a/drivers/input/rmi4/rmi_f01.c +++ b/drivers/input/rmi4/rmi_f01.c @@ -171,8 +171,9 @@ static int rmi_f01_read_properties(struct rmi_device *rmi_dev, error = rmi_read_block(rmi_dev, query_base_addr, basic_query, sizeof(basic_query)); - if (error < 0) { - dev_err(&rmi_dev->dev, "Failed to read device query registers.\n"); + if (error) { + dev_err(&rmi_dev->dev, + "Failed to read device query registers: %d\n", error); return error; } @@ -205,25 +206,25 @@ static int rmi_f01_initialize(struct rmi_function *fn) { u8 temp; int error; - u16 ctrl_base_addr; struct rmi_device *rmi_dev = fn->rmi_dev; struct rmi_driver_data *driver_data = dev_get_drvdata(&rmi_dev->dev); struct f01_data *f01 = fn->data; - struct rmi_device_platform_data *pdata = to_rmi_platform_data(rmi_dev); + const struct rmi_device_platform_data *pdata = to_rmi_platform_data(rmi_dev); + u16 ctrl_base_addr = fn->fd.control_base_addr; u8 device_status; /* * Set the configured bit and (optionally) other important stuff * in the device control register. */ - ctrl_base_addr = fn->fd.control_base_addr; - error = rmi_read_block(rmi_dev, fn->fd.control_base_addr, - &f01->device_control.ctrl0, - sizeof(f01->device_control.ctrl0)); - if (error < 0) { - dev_err(&fn->dev, "Failed to read F01 control.\n"); + + error = rmi_read(rmi_dev, fn->fd.control_base_addr, + &f01->device_control.ctrl0); + if (error) { + dev_err(&fn->dev, "Failed to read F01 control: %d\n", error); return error; } + switch (pdata->power_management.nosleep) { case RMI_F01_NOSLEEP_DEFAULT: break; @@ -249,11 +250,10 @@ static int rmi_f01_initialize(struct rmi_function *fn) f01->device_control.ctrl0 |= RMI_F01_CRTL0_CONFIGURED_BIT; - error = rmi_write_block(rmi_dev, fn->fd.control_base_addr, - &f01->device_control.ctrl0, - sizeof(f01->device_control.ctrl0)); - if (error < 0) { - dev_err(&fn->dev, "Failed to write F01 control.\n"); + error = rmi_write(rmi_dev, fn->fd.control_base_addr, + f01->device_control.ctrl0); + if (error) { + dev_err(&fn->dev, "Failed to write F01 control: %d\n", error); return error; } @@ -265,9 +265,10 @@ static int rmi_f01_initialize(struct rmi_function *fn) error = rmi_read_block(rmi_dev, ctrl_base_addr, f01->device_control.interrupt_enable, sizeof(u8) * (f01->num_of_irq_regs)); - if (error < 0) { + if (error) { dev_err(&fn->dev, - "Failed to read F01 control interrupt enable register.\n"); + "Failed to read F01 control interrupt enable register: %d\n", + error); return error; } @@ -302,8 +303,10 @@ static int rmi_f01_initialize(struct rmi_function *fn) } else { error = rmi_read(rmi_dev, f01->doze_interval_addr, &f01->device_control.doze_interval); - if (error < 0) { - dev_err(&fn->dev, "Failed to read F01 doze interval register.\n"); + if (error) { + dev_err(&fn->dev, + "Failed to read F01 doze interval register: %d\n", + error); return error; } } @@ -318,7 +321,9 @@ static int rmi_f01_initialize(struct rmi_function *fn) error = rmi_read(rmi_dev, f01->wakeup_threshold_addr, &f01->device_control.wakeup_threshold); if (error < 0) { - dev_err(&fn->dev, "Failed to read F01 wakeup threshold register.\n"); + dev_err(&fn->dev, + "Failed to read F01 wakeup threshold register: %d\n", + error); return error; } } @@ -337,17 +342,19 @@ static int rmi_f01_initialize(struct rmi_function *fn) } else { error = rmi_read(rmi_dev, f01->doze_holdoff_addr, &f01->device_control.doze_holdoff); - if (error < 0) { - dev_err(&fn->dev, "Failed to read F01 doze holdoff register.\n"); + if (error) { + dev_err(&fn->dev, + "Failed to read F01 doze holdoff register: %d\n", + error); return error; } } } - error = rmi_read_block(rmi_dev, fn->fd.data_base_addr, - &device_status, sizeof(device_status)); + error = rmi_read(rmi_dev, fn->fd.data_base_addr, &device_status); if (error < 0) { - dev_err(&fn->dev, "Failed to read device status.\n"); + dev_err(&fn->dev, + "Failed to read device status: %d\n", error); return error; } @@ -364,50 +371,53 @@ static int rmi_f01_initialize(struct rmi_function *fn) static int rmi_f01_config(struct rmi_function *fn) { struct f01_data *f01 = fn->data; - int retval; - - retval = rmi_write_block(fn->rmi_dev, fn->fd.control_base_addr, - &f01->device_control.ctrl0, - sizeof(f01->device_control.ctrl0)); - if (retval < 0) { - dev_err(&fn->dev, "Failed to write device_control.reg.\n"); - return retval; + int error; + + error = rmi_write(fn->rmi_dev, fn->fd.control_base_addr, + f01->device_control.ctrl0); + if (error) { + dev_err(&fn->dev, + "Failed to write device_control register: %d\n", error); + return error; } - retval = rmi_write_block(fn->rmi_dev, f01->interrupt_enable_addr, - f01->device_control.interrupt_enable, - sizeof(u8) * f01->num_of_irq_regs); - if (retval < 0) { - dev_err(&fn->dev, "Failed to write interrupt enable.\n"); - return retval; + error = rmi_write_block(fn->rmi_dev, f01->interrupt_enable_addr, + f01->device_control.interrupt_enable, + sizeof(u8) * f01->num_of_irq_regs); + if (error) { + dev_err(&fn->dev, + "Failed to write interrupt enable: %d\n", error); + return error; } if (f01->properties.has_adjustable_doze) { - retval = rmi_write_block(fn->rmi_dev, f01->doze_interval_addr, - &f01->device_control.doze_interval, - sizeof(u8)); - if (retval < 0) { - dev_err(&fn->dev, "Failed to write doze interval.\n"); - return retval; + error = rmi_write(fn->rmi_dev, f01->doze_interval_addr, + f01->device_control.doze_interval); + if (error) { + dev_err(&fn->dev, + "Failed to write doze interval: %d\n", error); + return error; } - retval = rmi_write_block(fn->rmi_dev, + error = rmi_write_block(fn->rmi_dev, f01->wakeup_threshold_addr, &f01->device_control.wakeup_threshold, sizeof(u8)); - if (retval < 0) { - dev_err(&fn->dev, "Failed to write wakeup threshold.\n"); - return retval; + if (error) { + dev_err(&fn->dev, + "Failed to write wakeup threshold: %d\n", + error); + return error; } } if (f01->properties.has_adjustable_doze_holdoff) { - retval = rmi_write_block(fn->rmi_dev, f01->doze_holdoff_addr, - &f01->device_control.doze_holdoff, - sizeof(u8)); - if (retval < 0) { - dev_err(&fn->dev, "Failed to write doze holdoff.\n"); - return retval; + error = rmi_write(fn->rmi_dev, f01->doze_holdoff_addr, + f01->device_control.doze_holdoff); + if (error) { + dev_err(&fn->dev, + "Failed to write doze holdoff: %d\n", error); + return error; } } @@ -439,23 +449,19 @@ static int rmi_f01_suspend(struct device *dev) struct f01_data *f01 = fn->data; int error; - f01->old_nosleep = f01->device_control.ctrl0 & - RMI_F01_CRTL0_NOSLEEP_BIT; + f01->old_nosleep = + f01->device_control.ctrl0 & RMI_F01_CRTL0_NOSLEEP_BIT; f01->device_control.ctrl0 &= ~RMI_F01_CRTL0_NOSLEEP_BIT; f01->device_control.ctrl0 &= ~RMI_F01_CTRL0_SLEEP_MODE_MASK; f01->device_control.ctrl0 |= RMI_SLEEP_MODE_SENSOR_SLEEP; - error = rmi_write_block(rmi_dev, - fn->fd.control_base_addr, - &f01->device_control.ctrl0, - sizeof(f01->device_control.ctrl0)); - if (error < 0) { - dev_err(&fn->dev, "Failed to write sleep mode. Code: %d.\n", - error); + error = rmi_write(rmi_dev, fn->fd.control_base_addr, + f01->device_control.ctrl0); + if (error) { + dev_err(&fn->dev, "Failed to write sleep mode: %d.\n", error); if (f01->old_nosleep) - f01->device_control.ctrl0 |= - RMI_F01_CRTL0_NOSLEEP_BIT; + f01->device_control.ctrl0 |= RMI_F01_CRTL0_NOSLEEP_BIT; f01->device_control.ctrl0 &= ~RMI_F01_CTRL0_SLEEP_MODE_MASK; f01->device_control.ctrl0 |= RMI_SLEEP_MODE_NORMAL; return error; @@ -477,13 +483,11 @@ static int rmi_f01_resume(struct device *dev) f01->device_control.ctrl0 &= ~RMI_F01_CTRL0_SLEEP_MODE_MASK; f01->device_control.ctrl0 |= RMI_SLEEP_MODE_NORMAL; - error = rmi_write_block(rmi_dev, fn->fd.control_base_addr, - &f01->device_control.ctrl0, - sizeof(f01->device_control.ctrl0)); - if (error < 0) { + error = rmi_write(rmi_dev, fn->fd.control_base_addr, + f01->device_control.ctrl0); + if (error) { dev_err(&fn->dev, - "Failed to restore normal operation. Code: %d.\n", - error); + "Failed to restore normal operation: %d.\n", error); return error; } @@ -497,23 +501,25 @@ static int rmi_f01_attention(struct rmi_function *fn, unsigned long *irq_bits) { struct rmi_device *rmi_dev = fn->rmi_dev; - int retval; + int error; u8 device_status; - retval = rmi_read_block(rmi_dev, fn->fd.data_base_addr, - &device_status, sizeof(device_status)); - if (retval < 0) { - dev_err(&fn->dev, "Failed to read device status, code: %d.\n", - retval); - return retval; + error = rmi_read(rmi_dev, fn->fd.data_base_addr, &device_status); + if (error) { + dev_err(&fn->dev, + "Failed to read device status: %d.\n", error); + return error; } if (RMI_F01_STATUS_UNCONFIGURED(device_status)) { dev_warn(&fn->dev, "Device reset detected.\n"); - retval = rmi_dev->driver->reset_handler(rmi_dev); - if (retval < 0) - return retval; + error = rmi_dev->driver->reset_handler(rmi_dev); + if (error) { + dev_err(&fn->dev, "Device reset failed: %d\n", error); + return error; + } } + return 0; } -- 1.8.5.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/