Received: by 10.213.65.68 with SMTP id h4csp239539imn; Mon, 12 Mar 2018 12:14:22 -0700 (PDT) X-Google-Smtp-Source: AG47ELu4PwwHB9dwwErQXzcQFJcq9Z3+LmT3sfmqOVYvEwZ/bjpHRGiCP/aRB68PikHNW6t/VOP1 X-Received: by 10.99.147.11 with SMTP id b11mr7352766pge.379.1520882062580; Mon, 12 Mar 2018 12:14:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520882062; cv=none; d=google.com; s=arc-20160816; b=rIt9aVbtu4gM1pdcQ1I5Fm+UIUcuXPpK4eV9Ccj91U/tEei0YL7mG+dWICKYHD3msh Mc5rvQx0K1nH6TN4JjxroETkUfZmx6dW3l5W4ZNgbTSCl9xFfkHwSS5oG561OJeViwOA nj0SWPHQUgGtIQ+gUtxfOd2HaBiWzNZ3pYUPzTozGQAYU4ERAz/AIT8GN6VW7AtTN848 2b+SNHC2Hn7pOnK+FcPO0t22ROAD5yKimvKeLmJfL73IrEsikM5aTpHnBvkdfIy5SRIO IS7Fn7Yzs7Lc8YqY7h5e/yOXz3Shi5iTvr5xcobdlR60uYUqOswoCob7vgMM0iMFgihJ h/7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=KGdPqksr49e20CC4YNSFhCHMbkT0yCEQ9aNlgzTjbOg=; b=oFgBS8gIYVs8mSpdzW/jhYpA6YZZc5aqGJJvKUk7JLclBczKHI+VmkQbORODVBgBGp 8lVeXv4LeTJ56UJkLonLrp54M2/beTOt8v1Xq6IikkjErWPdfHYNb/VCoLJKL4mIN4h1 Pxv1tCVMiZ0CAzTiT2ybGmukPnrOo17kOeL64oUYSCJmvwZbIHYMYWMjXjJP6HgNxggZ UpAHMEJ+n/2TG7WzwpgRwqcIZHHHC63ovjJfFP1xa8UnJU2vL7Q3D6GcNJn890E7Xhlu CrraoO+yvcltPydCNoyJUSXKTV0PKoU2Ph4yUKerlIHGkryH4dM7uSwdBroBW+xXk6eu SwGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=NI91olm+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bc5-v6si6446776plb.506.2018.03.12.12.14.08; Mon, 12 Mar 2018 12:14:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=NI91olm+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932457AbeCLTMm (ORCPT + 99 others); Mon, 12 Mar 2018 15:12:42 -0400 Received: from mail-pl0-f65.google.com ([209.85.160.65]:43374 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932313AbeCLTJO (ORCPT ); Mon, 12 Mar 2018 15:09:14 -0400 Received: by mail-pl0-f65.google.com with SMTP id f23-v6so9879664plr.10; Mon, 12 Mar 2018 12:09:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=KGdPqksr49e20CC4YNSFhCHMbkT0yCEQ9aNlgzTjbOg=; b=NI91olm+rtG4dJAiPe8lPDM59GzmxEhUZ2/MTt3m5G+1+jwWKWzRHRgQ14SKywZB9W YZ3gJbuIi4Ko/JzKmshqySghBfV3yrOEzHvtyMsCJByJ6CjDxeKLzsFeq/nYrLZF9+xi lnsh8Zf6x1i54HZLZtWrt/k41/mQ8ZVeOmeVXP/n9+nYG85N4NDwz+2hdDJNkB6Q3+87 obhG2SEnkSqumTQ4WqMSMykzH5wcxYKAU5/8IuQqVzSRwdRKqqNlmgKqI18Rnz28A48t nmywrSkuiHjbe76ihumWG05D6oL7Q3sN3i2JZqH0Cq3yih47w0GAmEHIeJpnVmV6SZX9 q77A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=KGdPqksr49e20CC4YNSFhCHMbkT0yCEQ9aNlgzTjbOg=; b=jRo24axxni/EBFOeU0GbJQHw/hb1Il/qlSw53qJvw3DW34N9J/dLArXlpvEt23HJNn 20ydU0dosmSTdWYf0fzNRIENP6V+46YidIzw4jhckK13ieQQOlLj/1hhaCDGEEv/XJJS GecdPeiI0qx6sx9f/AiUc8H+KjQTc9ZhnUuejQkiur4N14jt0HMI0SB3zXhcqfBnMSxe FYO3kM/EH6E+Slc7YSfkwiB8ZWC60Ru73TUe10+SbQNcCo7jbAYK0/0S1vPGXGDNZSnz MXZpskIBlrAGIyT1VcHUET6dasWe/Wup2zga/2yQc8SbIiRk7Y+TcFAp2dWjMXkr6GJs D14Q== X-Gm-Message-State: AElRT7HufQhwGC7Nl9RpIABumWdjS2PibU05pDnPBQU7qAq3yedMlpov frTfDwoRBQUFZPX1ozHhSZkfPKnm X-Received: by 2002:a17:902:27:: with SMTP id 36-v6mr9308268pla.128.1520881753112; Mon, 12 Mar 2018 12:09:13 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:0:1000:1511:8de6:27a8:ed13:2ef5]) by smtp.gmail.com with ESMTPSA id s67sm18038477pfg.104.2018.03.12.12.09.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Mar 2018 12:09:12 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org, Benson Leung Cc: Nick Dyer , Olof Johansson , linux-kernel@vger.kernel.org Subject: [PATCH 02/14] Input: atmel_mxt_ts - switch from OF to generic device properties Date: Mon, 12 Mar 2018 12:08:55 -0700 Message-Id: <20180312190907.174301-3-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.16.2.660.g709887971b-goog In-Reply-To: <20180312190907.174301-1-dmitry.torokhov@gmail.com> References: <20180312190907.174301-1-dmitry.torokhov@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Instead of using OF-specific APIs to fecth device properties, let's switch to generic device properties API. This will allow us to use device properties on legacy ChromeOS devices and get rid of platform data down the road. Signed-off-by: Dmitry Torokhov --- drivers/input/touchscreen/atmel_mxt_ts.c | 59 ++++++++++++------------ 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index 1aabfae1297ba..072b78d3c6e00 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -2920,47 +2921,52 @@ static void mxt_input_close(struct input_dev *dev) mxt_stop(data); } -#ifdef CONFIG_OF -static const struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) +static const struct mxt_platform_data * +mxt_parse_device_properties(struct i2c_client *client) { + static const char keymap_property[] = "linux,gpio-keymap"; struct mxt_platform_data *pdata; - struct device_node *np = client->dev.of_node; u32 *keymap; - int proplen, ret; - - if (!np) - return ERR_PTR(-ENOENT); + int n_keys; + int error; pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); if (!pdata) return ERR_PTR(-ENOMEM); - if (of_find_property(np, "linux,gpio-keymap", &proplen)) { - pdata->t19_num_keys = proplen / sizeof(u32); + if (device_property_present(&client->dev, keymap_property)) { + n_keys = device_property_read_u32_array(&client->dev, + keymap_property, + NULL, 0); + if (n_keys <= 0) { + error = n_keys < 0 ? n_keys : -EINVAL; + dev_err(&client->dev, + "invalid/malformed '%s' property: %d\n", + keymap_property, error); + return ERR_PTR(error); + } - keymap = devm_kzalloc(&client->dev, - pdata->t19_num_keys * sizeof(keymap[0]), - GFP_KERNEL); + keymap = devm_kmalloc_array(&client->dev, n_keys, sizeof(u32), + GFP_KERNEL); if (!keymap) return ERR_PTR(-ENOMEM); - ret = of_property_read_u32_array(np, "linux,gpio-keymap", - keymap, pdata->t19_num_keys); - if (ret) - dev_warn(&client->dev, - "Couldn't read linux,gpio-keymap: %d\n", ret); + error = device_property_read_u32_array(&client->dev, + keymap_property, + keymap, n_keys); + if (error) { + dev_err(&client->dev, + "failed to parse '%s' property: %d\n", + keymap_property, error); + return ERR_PTR(error); + } pdata->t19_keymap = keymap; + pdata->t19_num_keys = n_keys; } return pdata; } -#else -static const struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client) -{ - return ERR_PTR(-ENOENT); -} -#endif #ifdef CONFIG_ACPI @@ -3094,16 +3100,11 @@ mxt_get_platform_data(struct i2c_client *client) if (pdata) return pdata; - pdata = mxt_parse_dt(client); - if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT) - return pdata; - pdata = mxt_parse_acpi(client); if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT) return pdata; - dev_err(&client->dev, "No platform data specified\n"); - return ERR_PTR(-EINVAL); + return mxt_parse_device_properties(client); } static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id) -- 2.16.2.660.g709887971b-goog