From patchwork Tue Oct 7 09:50:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ivan T. Ivanov" X-Patchwork-Id: 5044491 Return-Path: X-Original-To: patchwork-linux-arm-msm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id C0AD29F295 for ; Tue, 7 Oct 2014 09:51:57 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id EE46B201BC for ; Tue, 7 Oct 2014 09:51:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F25982015E for ; Tue, 7 Oct 2014 09:51:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753566AbaJGJvX (ORCPT ); Tue, 7 Oct 2014 05:51:23 -0400 Received: from ns.mm-sol.com ([37.157.136.199]:54144 "EHLO extserv.mm-sol.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753332AbaJGJut (ORCPT ); Tue, 7 Oct 2014 05:50:49 -0400 Received: from iivanov-dev.wifi.mm-sol.com (unknown [37.157.136.206]) by extserv.mm-sol.com (Postfix) with ESMTPSA id 2996CC820; Tue, 7 Oct 2014 12:50:47 +0300 (EEST) From: "Ivan T. Ivanov" To: Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , Dmitry Torokhov Cc: "Ivan T. Ivanov" , Stephen Boyd , linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: [PATCH 3/4] Input: pmic8xxx-keypad - add support keypad found in pm8941 Date: Tue, 7 Oct 2014 12:50:47 +0300 Message-Id: <1412675448-11990-4-git-send-email-iivanov@mm-sol.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1412675448-11990-1-git-send-email-iivanov@mm-sol.com> References: <1412675448-11990-1-git-send-email-iivanov@mm-sol.com> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Controller seems to be the same. Just access to it is over SPMI bus and registers and bits are reshuffled. Hopefully this is nicely abstracted by regmap helpers. Signed-off-by: Ivan T. Ivanov --- .../bindings/input/qcom,pm8xxx-keypad.txt | 1 + drivers/input/keyboard/pmic8xxx-keypad.c | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt b/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt index 7d8cb92..2b60f8a 100644 --- a/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt +++ b/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt @@ -8,6 +8,7 @@ PROPERTIES Definition: must be one of: "qcom,pm8058-keypad" "qcom,pm8921-keypad" + "qcom,pm8941-keypad" - reg: Usage: required diff --git a/drivers/input/keyboard/pmic8xxx-keypad.c b/drivers/input/keyboard/pmic8xxx-keypad.c index b82d161..2d4fa07 100644 --- a/drivers/input/keyboard/pmic8xxx-keypad.c +++ b/drivers/input/keyboard/pmic8xxx-keypad.c @@ -136,6 +136,32 @@ static const struct pmic8xxx_kp_info ssbi_kp = { .row_hold = REG_FIELD(0x149, 6, 7), }; +static const struct pmic8xxx_kp_info spmi_kp = { + .max_rows = 10, + .min_rows = 2, + .max_cols = 8, + .min_cols = 1, + + .rows_select = { + 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10 + }, + + .recent_data = 0xa87c, + .old_data = 0xa85c, + .read_stride = 2, + + .events = REG_FIELD(0xa808, 0, 1), + .scan_rows = REG_FIELD(0xa840, 0, 3), + .scan_cols = REG_FIELD(0xa840, 4, 6), + .enable = REG_FIELD(0xa846, 7, 7), + + .read_state = REG_FIELD(0xa844, 0, 0), + .dbonce = REG_FIELD(0xa842, 0, 1), + .pause = REG_FIELD(0xa842, 3, 5), + .row_hold = REG_FIELD(0xa842, 6, 7), +}; + static u8 pmic8xxx_col_state(struct pmic8xxx_kp *kp, u8 col) { /* all keys pressed on that particular row? */ @@ -715,6 +741,7 @@ static SIMPLE_DEV_PM_OPS(pm8xxx_kp_pm_ops, static const struct of_device_id pm8xxx_match_table[] = { { .compatible = "qcom,pm8058-keypad", .data = (void *)&ssbi_kp }, { .compatible = "qcom,pm8921-keypad", .data = (void *)&ssbi_kp }, + { .compatible = "qcom,pm8941-keypad", .data = (void *)&spmi_kp }, { } }; MODULE_DEVICE_TABLE(of, pm8xxx_match_table);