From patchwork Fri Nov 30 04:29:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clark Wang X-Patchwork-Id: 10705735 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 791DE13BB for ; Fri, 30 Nov 2018 04:29:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6A36C2F4D3 for ; Fri, 30 Nov 2018 04:29:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5E6272F673; Fri, 30 Nov 2018 04:29:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B6B432F4D3 for ; Fri, 30 Nov 2018 04:29:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726387AbeK3PhK (ORCPT ); Fri, 30 Nov 2018 10:37:10 -0500 Received: from mail-eopbgr140052.outbound.protection.outlook.com ([40.107.14.52]:52709 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726419AbeK3PhJ (ORCPT ); Fri, 30 Nov 2018 10:37:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y5jeEP8LDL6N8XyHEsMS5W9OWSljhVQonFR6duXpUz0=; b=xhjh7qXL7IJEop0J4Ux3epcOBsLEOHDN2iCDlI3aGer4H50udMc5Rguf2u7j8HOS9jZ9vCGyHrdPklpaaVxQAoZd54h68JbfsNbzmWmkEwkMxHGH/1wPSJ89eC1YHJkhXn5iNwNNvA9vbUH8rgxVtXORL9OwtwI8bMPVnqbGFrM= Received: from VI1PR04MB5021.eurprd04.prod.outlook.com (20.177.50.90) by VI1PR04MB4413.eurprd04.prod.outlook.com (20.177.55.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Fri, 30 Nov 2018 04:29:05 +0000 Received: from VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359]) by VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359%2]) with mapi id 15.20.1339.031; Fri, 30 Nov 2018 04:29:05 +0000 From: Clark Wang To: "broonie@kernel.org" CC: "linux-spi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Clark Wang Subject: [PATCH V2 1/4] spi: lpspi: Replace all "master" with "controller" Thread-Topic: [PATCH V2 1/4] spi: lpspi: Replace all "master" with "controller" Thread-Index: AQHUiGU6e8yE1Zw1ekGogryU74NfMQ== Date: Fri, 30 Nov 2018 04:29:05 +0000 Message-ID: <20181130042753.28756-2-xiaoning.wang@nxp.com> References: <20181130042753.28756-1-xiaoning.wang@nxp.com> In-Reply-To: <20181130042753.28756-1-xiaoning.wang@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SG2PR06CA0220.apcprd06.prod.outlook.com (2603:1096:4:68::28) To VI1PR04MB5021.eurprd04.prod.outlook.com (2603:10a6:803:59::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=xiaoning.wang@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.121.68.129] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VI1PR04MB4413;6:YsL4AdXjcR48gLGFaD48poZG0WNmuNw7Y+j05mQR7pTh9mz+Z+uNOeXAj5UYH3nVuO2kEi+yuHde9OqEVKhyDRxvuMS/ft8OU1cpIxYreB6fAz+t09EImaJSSXCHIvkzUjUbGkdVS9vv3mFdQzFFra0WSN0+xK4DxYPlZ8+9jjCjfaz49qbKpXSPJKe4dvI3pfDPSx9Ac8zmgJk5e3v7X3RLheg2y46QKpXsyZxq9lXNrqHfmiHOHO1ApfmHIfQoUew2SZjsPQyoIYxgKidH1ie4NKG6AfpDINkTA7J99VzRAr0u70YXGgQs8V0PEmi0NQGiFmZpvpHCyQyBq2kQ7KlgY3YNx/MZPuGnwR3zKb2rucaVtyBIqidIAQXwwGbbs7K6LdnuaLnTaPf2Vj+3vTuF8j9iM4ZSPSbzvgrfaQgtsHGvAfjFAwWqXYE2C3pH8cERfgWeHqQm86Gc9OWwbA==;5:r2LZbnaKhu7VgYLZSre5AKUKhIfRVFvePKFwEB98TCpf1t/hxK6KIV1raj5OLnf2ai+C6ysqqr9xAjDVFcE0votZJWQR9U97/dh40+VN1gG0/405oOjDMLTTP8GQrhJs1EPQE69Lg+vb72emhCofY8krA6ePzQ/5ykGI5QYezXg=;7:2vtACpn5Mh4ACWLc2P5r2wNAUEnzI8i0CI1Pavlz+q5uSFMmb0jRg+UARaryvvDVfCJPWLlAem6hXN/At2/cvjZuAv3mEoi1KAZV9Q6ng7N3EbGix33Ursxia5LAmt67wT/7mYIpA9IsIUFDJw0AlQ== x-ms-office365-filtering-correlation-id: d246843c-e8f3-4333-58a8-08d6567c5cba x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:VI1PR04MB4413; x-ms-traffictypediagnostic: VI1PR04MB4413: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231453)(999002)(944501410)(52105112)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(201708071742011)(7699051)(76991095);SRVR:VI1PR04MB4413;BCL:0;PCL:0;RULEID:;SRVR:VI1PR04MB4413; x-forefront-prvs: 087223B4DA x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(376002)(136003)(346002)(39860400002)(396003)(54534003)(199004)(189003)(81156014)(6436002)(76176011)(53936002)(186003)(6506007)(81166006)(256004)(8676002)(6486002)(386003)(26005)(8936002)(11346002)(14444005)(99286004)(52116002)(7736002)(316002)(36756003)(2616005)(54906003)(86362001)(305945005)(102836004)(71200400001)(2351001)(14454004)(478600001)(2501003)(71190400001)(68736007)(476003)(1730700003)(6512007)(5640700003)(6916009)(105586002)(3846002)(486006)(66066001)(25786009)(106356001)(2906002)(6116002)(97736004)(446003)(5660300001)(4326008)(1076002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB4413;H:VI1PR04MB5021.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: CCk0eeqG0iSzIEImD1b+a6BXlihaebw3cQhJ0FlIvn1It3lYLL6Zb9kavZgvfkM5yK7xIYLSk5HjNsDLYoHB+4L0vkJENFoam6kdQs4L0Q8zfD7PZkWU0n31APB1nsQSrCb4dAMJOZ19JPiV28z0Gld5sajiZy+SbFO6TJmAyNHeDQY9dHvqvwt+gW510tlXFdNMWENxdooLvHB+u6xy0xfCDx/EAVsiS7kii5vMNd+OynwpVSKnk9jCTPP1YJR74/kDKiSGWgoIkmc/uC9z7cN2eCaquFesOD5eUnE35iib1bVIMRF8/rrSFKdAu5G6mELKPV4OIoyZeHN/ntP8KCiVdLFfejGrph1I7NuemNE= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d246843c-e8f3-4333-58a8-08d6567c5cba X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2018 04:29:05.4434 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4413 Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In order to enable the slave mode and make the code more readable, replace all related structure names and object names which is named "master" with "controller". Signed-off-by: Clark Wang --- Change log: V2: - No change. --- drivers/spi/spi-fsl-lpspi.c | 84 ++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c index 51670976faa3..725d6ac5f814 100644 --- a/drivers/spi/spi-fsl-lpspi.c +++ b/drivers/spi/spi-fsl-lpspi.c @@ -3,6 +3,7 @@ // Freescale i.MX7ULP LPSPI driver // // Copyright 2016 Freescale Semiconductor, Inc. +// Copyright 2018 NXP Semiconductors #include #include @@ -137,16 +138,18 @@ static void fsl_lpspi_intctrl(struct fsl_lpspi_data *fsl_lpspi, writel(enable, fsl_lpspi->base + IMX7ULP_IER); } -static int lpspi_prepare_xfer_hardware(struct spi_master *master) +static int lpspi_prepare_xfer_hardware(struct spi_controller *controller) { - struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master); + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(controller); return clk_prepare_enable(fsl_lpspi->clk); } -static int lpspi_unprepare_xfer_hardware(struct spi_master *master) +static int lpspi_unprepare_xfer_hardware(struct spi_controller *controller) { - struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master); + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(controller); clk_disable_unprepare(fsl_lpspi->clk); @@ -291,7 +294,8 @@ static int fsl_lpspi_config(struct fsl_lpspi_data *fsl_lpspi) static void fsl_lpspi_setup_transfer(struct spi_device *spi, struct spi_transfer *t) { - struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(spi->master); + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(spi->controller); fsl_lpspi->config.mode = spi->mode; fsl_lpspi->config.bpw = t ? t->bits_per_word : spi->bits_per_word; @@ -318,11 +322,12 @@ static void fsl_lpspi_setup_transfer(struct spi_device *spi, fsl_lpspi_config(fsl_lpspi); } -static int fsl_lpspi_transfer_one(struct spi_master *master, +static int fsl_lpspi_transfer_one(struct spi_controller *controller, struct spi_device *spi, struct spi_transfer *t) { - struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master); + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(controller); int ret; fsl_lpspi->tx_buf = t->tx_buf; @@ -347,10 +352,11 @@ static int fsl_lpspi_transfer_one(struct spi_master *master, return 0; } -static int fsl_lpspi_transfer_one_msg(struct spi_master *master, +static int fsl_lpspi_transfer_one_msg(struct spi_controller *controller, struct spi_message *msg) { - struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master); + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(controller); struct spi_device *spi = msg->spi; struct spi_transfer *xfer; bool is_first_xfer = true; @@ -366,7 +372,7 @@ static int fsl_lpspi_transfer_one_msg(struct spi_master *master, is_first_xfer = false; - ret = fsl_lpspi_transfer_one(master, spi, xfer); + ret = fsl_lpspi_transfer_one(controller, spi, xfer); if (ret < 0) goto complete; @@ -380,7 +386,7 @@ static int fsl_lpspi_transfer_one_msg(struct spi_master *master, writel(temp, fsl_lpspi->base + IMX7ULP_TCR); msg->status = ret; - spi_finalize_current_message(master); + spi_finalize_current_message(controller); return ret; } @@ -410,30 +416,31 @@ static irqreturn_t fsl_lpspi_isr(int irq, void *dev_id) static int fsl_lpspi_probe(struct platform_device *pdev) { struct fsl_lpspi_data *fsl_lpspi; - struct spi_master *master; + struct spi_controller *controller; struct resource *res; int ret, irq; u32 temp; - master = spi_alloc_master(&pdev->dev, sizeof(struct fsl_lpspi_data)); - if (!master) + controller = spi_alloc_master(&pdev->dev, + sizeof(struct fsl_lpspi_data)); + if (!controller) return -ENOMEM; - platform_set_drvdata(pdev, master); + platform_set_drvdata(pdev, controller); - master->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 32); - master->bus_num = pdev->id; + controller->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 32); + controller->bus_num = pdev->id; - fsl_lpspi = spi_master_get_devdata(master); + fsl_lpspi = spi_controller_get_devdata(controller); fsl_lpspi->dev = &pdev->dev; - master->transfer_one_message = fsl_lpspi_transfer_one_msg; - master->prepare_transfer_hardware = lpspi_prepare_xfer_hardware; - master->unprepare_transfer_hardware = lpspi_unprepare_xfer_hardware; - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; - master->flags = SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX; - master->dev.of_node = pdev->dev.of_node; - master->bus_num = pdev->id; + controller->transfer_one_message = fsl_lpspi_transfer_one_msg; + controller->prepare_transfer_hardware = lpspi_prepare_xfer_hardware; + controller->unprepare_transfer_hardware = lpspi_unprepare_xfer_hardware; + controller->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; + controller->flags = SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX; + controller->dev.of_node = pdev->dev.of_node; + controller->bus_num = pdev->id; init_completion(&fsl_lpspi->xfer_done); @@ -441,32 +448,32 @@ static int fsl_lpspi_probe(struct platform_device *pdev) fsl_lpspi->base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(fsl_lpspi->base)) { ret = PTR_ERR(fsl_lpspi->base); - goto out_master_put; + goto out_controller_put; } irq = platform_get_irq(pdev, 0); if (irq < 0) { ret = irq; - goto out_master_put; + goto out_controller_put; } ret = devm_request_irq(&pdev->dev, irq, fsl_lpspi_isr, 0, dev_name(&pdev->dev), fsl_lpspi); if (ret) { dev_err(&pdev->dev, "can't get irq%d: %d\n", irq, ret); - goto out_master_put; + goto out_controller_put; } fsl_lpspi->clk = devm_clk_get(&pdev->dev, "ipg"); if (IS_ERR(fsl_lpspi->clk)) { ret = PTR_ERR(fsl_lpspi->clk); - goto out_master_put; + goto out_controller_put; } ret = clk_prepare_enable(fsl_lpspi->clk); if (ret) { dev_err(&pdev->dev, "can't enable lpspi clock, ret=%d\n", ret); - goto out_master_put; + goto out_controller_put; } temp = readl(fsl_lpspi->base + IMX7ULP_PARAM); @@ -475,24 +482,25 @@ static int fsl_lpspi_probe(struct platform_device *pdev) clk_disable_unprepare(fsl_lpspi->clk); - ret = devm_spi_register_master(&pdev->dev, master); + ret = devm_spi_register_controller(&pdev->dev, controller); if (ret < 0) { - dev_err(&pdev->dev, "spi_register_master error.\n"); - goto out_master_put; + dev_err(&pdev->dev, "spi_register_controller error.\n"); + goto out_controller_put; } return 0; -out_master_put: - spi_master_put(master); +out_controller_put: + spi_controller_put(controller); return ret; } static int fsl_lpspi_remove(struct platform_device *pdev) { - struct spi_master *master = platform_get_drvdata(pdev); - struct fsl_lpspi_data *fsl_lpspi = spi_master_get_devdata(master); + struct spi_controller *controller = platform_get_drvdata(pdev); + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(controller); clk_disable_unprepare(fsl_lpspi->clk); @@ -509,6 +517,6 @@ static struct platform_driver fsl_lpspi_driver = { }; module_platform_driver(fsl_lpspi_driver); -MODULE_DESCRIPTION("LPSPI Master Controller driver"); +MODULE_DESCRIPTION("LPSPI Controller driver"); MODULE_AUTHOR("Gao Pan "); MODULE_LICENSE("GPL"); From patchwork Fri Nov 30 04:29:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clark Wang X-Patchwork-Id: 10705731 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7D89414BD for ; Fri, 30 Nov 2018 04:29:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6EE622F50A for ; Fri, 30 Nov 2018 04:29:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 62FB52F678; Fri, 30 Nov 2018 04:29:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 362122F50A for ; Fri, 30 Nov 2018 04:29:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726752AbeK3PhO (ORCPT ); Fri, 30 Nov 2018 10:37:14 -0500 Received: from mail-eopbgr140052.outbound.protection.outlook.com ([40.107.14.52]:52709 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726375AbeK3PhO (ORCPT ); Fri, 30 Nov 2018 10:37:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UVst4VPCBw+13Zq6VhZOWTU/5nk0rfZAxzd1IxUmj14=; b=abTo3kLKzvonNzzNeQgO8Jdzlkl6E7fMPggdeCn1TUCkLVESQEdVWF+XZ7Ok7dlG4PMdiPb5iRQ4PllfzpkEcocqzw7ri0FeDHn/kBT/aEKvhMXfX6EsHBTx+qqALGWKZ0tjxyfP+NgEy/LrXh+6Vc1fsDFDpVmrAv+6aHceztQ= Received: from VI1PR04MB5021.eurprd04.prod.outlook.com (20.177.50.90) by VI1PR04MB4413.eurprd04.prod.outlook.com (20.177.55.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Fri, 30 Nov 2018 04:29:07 +0000 Received: from VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359]) by VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359%2]) with mapi id 15.20.1339.031; Fri, 30 Nov 2018 04:29:07 +0000 From: Clark Wang To: "broonie@kernel.org" CC: "linux-spi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Clark Wang Subject: [PATCH V2 2/4] spi: lpspi: Add slave mode support Thread-Topic: [PATCH V2 2/4] spi: lpspi: Add slave mode support Thread-Index: AQHUiGU7+nXCPpo/10u8LfXub+g0qA== Date: Fri, 30 Nov 2018 04:29:07 +0000 Message-ID: <20181130042753.28756-3-xiaoning.wang@nxp.com> References: <20181130042753.28756-1-xiaoning.wang@nxp.com> In-Reply-To: <20181130042753.28756-1-xiaoning.wang@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SG2PR06CA0220.apcprd06.prod.outlook.com (2603:1096:4:68::28) To VI1PR04MB5021.eurprd04.prod.outlook.com (2603:10a6:803:59::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=xiaoning.wang@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.121.68.129] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VI1PR04MB4413;6:g1Xpw2bUJX0A1c2W3HGKtie0I6+xOUIdCc8R0YBjOVA0bTqhU2CRSLLCBL+Je95ktQk3F+kpc83MeKNoGyl5MvuaTOr/YhiR5mnqBWIWOdmWWSzc1ZfqEQTFPUD2fGA6vU2jWXdMgtSXo0EjsJqC0bCySEVxd0MFaLRTVc3NBUkL9h4tXe6iGoNHy8PPho7V+U9+RailgdSx1IxyhjpYRGhPY3pI4bT+B8FDYiIi91NZEAOWb+OjOuCZdvQHowOgSscBVb/FPdR5GXZ6TsmrzqWZ4M9heyzmo++qrSgy0dKNoQ08q/WXQiTzoeRVPcCpEOS8mdHoft1ZgotTy5Myo1iJyKth4s1OLDVvyYXwdoW1AISRPyyJuFCeTEgaA/1d+cuj8LhambrKPKHaCImN+MenVC7i4Blgx/Q0PUO0TGPx57KsFDsUZjd2eGXE5nTgXyKEUU4mwUJ3eHSIwjdpNw==;5:kwPAcdksYvBZAV5X6O7G/F2k/UeS0UWX6i+70RKa7EumhcQ8RKwSjEC1CmtD0ZdypUQ64ifO/mVigqAmHKArqO/X0/4n/yegwOc2z7yVVD/kLaAqlhlw5+fNitDqIIUQNiWtTD0CIEU+Df5wLw05fLWOTngq2oRhm8HLIcJrSAw=;7:CME5/BaCIz/P7y2ofQcz/zK+kYXFkZKaFcMGxaCV/rVHyvggAxSGbGQOrn17gA1BHbLkznzPFg9J3TvDyiW9ycLMA0QsMgeQny4wHfQrVawjC1ZijDK/NhsC1HjCiU7jGzy9ll5pKN/Yt/5fYJQxdQ== x-ms-office365-filtering-correlation-id: cea4ea7a-88c9-4c8c-e735-08d6567c5e0c x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:VI1PR04MB4413; x-ms-traffictypediagnostic: VI1PR04MB4413: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231453)(999002)(944501410)(52105112)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(201708071742011)(7699051)(76991095);SRVR:VI1PR04MB4413;BCL:0;PCL:0;RULEID:;SRVR:VI1PR04MB4413; x-forefront-prvs: 087223B4DA x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(376002)(136003)(346002)(39860400002)(396003)(54534003)(199004)(189003)(81156014)(6436002)(76176011)(53936002)(186003)(6506007)(81166006)(256004)(8676002)(6486002)(386003)(26005)(8936002)(11346002)(99286004)(52116002)(7736002)(316002)(36756003)(2616005)(54906003)(86362001)(305945005)(102836004)(71200400001)(2351001)(14454004)(478600001)(2501003)(71190400001)(68736007)(476003)(1730700003)(6512007)(5640700003)(6916009)(105586002)(3846002)(486006)(66066001)(25786009)(106356001)(2906002)(6116002)(97736004)(446003)(5660300001)(4326008)(1076002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB4413;H:VI1PR04MB5021.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: mWU1rnPwWWdEHcruBs3sRLV+p59w6vQBpF87h+ZuVp9kmbqhSEx0aWTkwZTQNpPVHXcrJZ8s6sSXQY0wwOSJTcjHmhNKUn1lEU2ebVlw9IwKFIHmxmciBOjpTVQ4LzbX8s1nKmJBn2RrlqlCGdBNf6YUdVKF6jtXVldOiu9Sm3Yzj4+AQmbteEflrz43qmmU8/yJcqIbSCN5EIXjhkbvLeFX9bUaNkppdMOM2mcIDiGoqehqldj64aMCefsWzwlr/SpKifxoc/ZGQqbSGoC+vehCTvrRjmlWPJfqpXXaWXHFUx4WTJ+O40Fcd/4/ldBoZyFwpSkmFhQEmveNPb7CqD91vZoWc/5rsovWDGRt/VM= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cea4ea7a-88c9-4c8c-e735-08d6567c5e0c X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2018 04:29:07.6310 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4413 Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add slave mode support to the fsl-lpspi driver, only in PIO mode. For now, there are some limitations for slave mode transmission, which have been mentioned in cover-letter. Signed-off-by: Clark Wang --- Change log: V2: - No change. --- drivers/spi/spi-fsl-lpspi.c | 107 ++++++++++++++++++++++++++---------- 1 file changed, 79 insertions(+), 28 deletions(-) diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c index 725d6ac5f814..cbf165e7bd17 100644 --- a/drivers/spi/spi-fsl-lpspi.c +++ b/drivers/spi/spi-fsl-lpspi.c @@ -55,6 +55,7 @@ #define IER_RDIE BIT(1) #define IER_TDIE BIT(0) #define CFGR1_PCSCFG BIT(27) +#define CFGR1_PINCFG (BIT(24)|BIT(25)) #define CFGR1_PCSPOL BIT(8) #define CFGR1_NOSTALL BIT(3) #define CFGR1_MASTER BIT(0) @@ -80,6 +81,7 @@ struct fsl_lpspi_data { struct device *dev; void __iomem *base; struct clk *clk; + bool is_slave; void *rx_buf; const void *tx_buf; @@ -92,6 +94,8 @@ struct fsl_lpspi_data { struct lpspi_config config; struct completion xfer_done; + + bool slave_aborted; }; static const struct of_device_id fsl_lpspi_dt_ids[] = { @@ -206,21 +210,22 @@ static void fsl_lpspi_set_cmd(struct fsl_lpspi_data *fsl_lpspi, u32 temp = 0; temp |= fsl_lpspi->config.bpw - 1; - temp |= fsl_lpspi->config.prescale << 27; temp |= (fsl_lpspi->config.mode & 0x3) << 30; - temp |= (fsl_lpspi->config.chip_select & 0x3) << 24; - - /* - * Set TCR_CONT will keep SS asserted after current transfer. - * For the first transfer, clear TCR_CONTC to assert SS. - * For subsequent transfer, set TCR_CONTC to keep SS asserted. - */ - temp |= TCR_CONT; - if (is_first_xfer) - temp &= ~TCR_CONTC; - else - temp |= TCR_CONTC; - + if (!fsl_lpspi->is_slave) { + temp |= fsl_lpspi->config.prescale << 27; + temp |= (fsl_lpspi->config.chip_select & 0x3) << 24; + + /* + * Set TCR_CONT will keep SS asserted after current transfer. + * For the first transfer, clear TCR_CONTC to assert SS. + * For subsequent transfer, set TCR_CONTC to keep SS asserted. + */ + temp |= TCR_CONT; + if (is_first_xfer) + temp &= ~TCR_CONTC; + else + temp |= TCR_CONTC; + } writel(temp, fsl_lpspi->base + IMX7ULP_TCR); dev_dbg(fsl_lpspi->dev, "TCR=0x%x\n", temp); @@ -273,13 +278,18 @@ static int fsl_lpspi_config(struct fsl_lpspi_data *fsl_lpspi) writel(temp, fsl_lpspi->base + IMX7ULP_CR); writel(0, fsl_lpspi->base + IMX7ULP_CR); - ret = fsl_lpspi_set_bitrate(fsl_lpspi); - if (ret) - return ret; + if (!fsl_lpspi->is_slave) { + ret = fsl_lpspi_set_bitrate(fsl_lpspi); + if (ret) + return ret; + } fsl_lpspi_set_watermark(fsl_lpspi); - temp = CFGR1_PCSCFG | CFGR1_MASTER; + if (!fsl_lpspi->is_slave) + temp = CFGR1_MASTER; + else + temp = CFGR1_PINCFG; if (fsl_lpspi->config.mode & SPI_CS_HIGH) temp |= CFGR1_PCSPOL; writel(temp, fsl_lpspi->base + IMX7ULP_CFGR1); @@ -322,6 +332,37 @@ static void fsl_lpspi_setup_transfer(struct spi_device *spi, fsl_lpspi_config(fsl_lpspi); } +static int fsl_lpspi_slave_abort(struct spi_controller *controller) +{ + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(controller); + + fsl_lpspi->slave_aborted = true; + complete(&fsl_lpspi->xfer_done); + return 0; +} + +static int fsl_lpspi_wait_for_completion(struct spi_controller *controller) +{ + struct fsl_lpspi_data *fsl_lpspi = + spi_controller_get_devdata(controller); + + if (fsl_lpspi->is_slave) { + if (wait_for_completion_interruptible(&fsl_lpspi->xfer_done) || + fsl_lpspi->slave_aborted) { + dev_dbg(fsl_lpspi->dev, "interrupted\n"); + return -EINTR; + } + } else { + if (!wait_for_completion_timeout(&fsl_lpspi->xfer_done, HZ)) { + dev_dbg(fsl_lpspi->dev, "wait for completion timeout\n"); + return -ETIMEDOUT; + } + } + + return 0; +} + static int fsl_lpspi_transfer_one(struct spi_controller *controller, struct spi_device *spi, struct spi_transfer *t) @@ -335,13 +376,13 @@ static int fsl_lpspi_transfer_one(struct spi_controller *controller, fsl_lpspi->remain = t->len; reinit_completion(&fsl_lpspi->xfer_done); + fsl_lpspi->slave_aborted = false; + fsl_lpspi_write_tx_fifo(fsl_lpspi); - ret = wait_for_completion_timeout(&fsl_lpspi->xfer_done, HZ); - if (!ret) { - dev_dbg(fsl_lpspi->dev, "wait for completion timeout\n"); - return -ETIMEDOUT; - } + ret = fsl_lpspi_wait_for_completion(controller); + if (ret) + return ret; ret = fsl_lpspi_txfifo_empty(fsl_lpspi); if (ret) @@ -380,10 +421,12 @@ static int fsl_lpspi_transfer_one_msg(struct spi_controller *controller, } complete: - /* de-assert SS, then finalize current message */ - temp = readl(fsl_lpspi->base + IMX7ULP_TCR); - temp &= ~TCR_CONTC; - writel(temp, fsl_lpspi->base + IMX7ULP_TCR); + if (!fsl_lpspi->is_slave) { + /* de-assert SS, then finalize current message */ + temp = readl(fsl_lpspi->base + IMX7ULP_TCR); + temp &= ~TCR_CONTC; + writel(temp, fsl_lpspi->base + IMX7ULP_TCR); + } msg->status = ret; spi_finalize_current_message(controller); @@ -421,8 +464,13 @@ static int fsl_lpspi_probe(struct platform_device *pdev) int ret, irq; u32 temp; - controller = spi_alloc_master(&pdev->dev, + if (of_property_read_bool((&pdev->dev)->of_node, "spi-slave")) + controller = spi_alloc_slave(&pdev->dev, + sizeof(struct fsl_lpspi_data)); + else + controller = spi_alloc_master(&pdev->dev, sizeof(struct fsl_lpspi_data)); + if (!controller) return -ENOMEM; @@ -433,6 +481,8 @@ static int fsl_lpspi_probe(struct platform_device *pdev) fsl_lpspi = spi_controller_get_devdata(controller); fsl_lpspi->dev = &pdev->dev; + fsl_lpspi->is_slave = of_property_read_bool((&pdev->dev)->of_node, + "spi-slave"); controller->transfer_one_message = fsl_lpspi_transfer_one_msg; controller->prepare_transfer_hardware = lpspi_prepare_xfer_hardware; @@ -441,6 +491,7 @@ static int fsl_lpspi_probe(struct platform_device *pdev) controller->flags = SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX; controller->dev.of_node = pdev->dev.of_node; controller->bus_num = pdev->id; + controller->slave_abort = fsl_lpspi_slave_abort; init_completion(&fsl_lpspi->xfer_done); From patchwork Fri Nov 30 04:29:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clark Wang X-Patchwork-Id: 10705729 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E5C5813BB for ; Fri, 30 Nov 2018 04:29:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D7E5D2F673 for ; Fri, 30 Nov 2018 04:29:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CBEF02F6B6; Fri, 30 Nov 2018 04:29:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6B9FD2F673 for ; Fri, 30 Nov 2018 04:29:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726837AbeK3PhQ (ORCPT ); Fri, 30 Nov 2018 10:37:16 -0500 Received: from mail-eopbgr140052.outbound.protection.outlook.com ([40.107.14.52]:52709 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726355AbeK3PhP (ORCPT ); Fri, 30 Nov 2018 10:37:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DINdt3VaBqOcXbGcwOYzP4gcoA19v3P+jSyQjNr6MQ0=; b=WlGY76BCnZplQib5GaEtwt76FAD53q2JjNp48b/QEdEhBAsfO1/2iPwfdJYJWCvefuDwxmTd94k1p8mKyO65vwvDp3TPIm62fDAppb9hPoCRrtsoV9seI52dzOiR1TmTpLrB0tTqY5eOTvDM8ERMxmUUVZWkOPM1vB2jcWHQ170= Received: from VI1PR04MB5021.eurprd04.prod.outlook.com (20.177.50.90) by VI1PR04MB4413.eurprd04.prod.outlook.com (20.177.55.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Fri, 30 Nov 2018 04:29:10 +0000 Received: from VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359]) by VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359%2]) with mapi id 15.20.1339.031; Fri, 30 Nov 2018 04:29:10 +0000 From: Clark Wang To: "broonie@kernel.org" CC: "linux-spi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Clark Wang Subject: [PATCH V2 3/4] spi: lpspi: Let watermark change with send data length Thread-Topic: [PATCH V2 3/4] spi: lpspi: Let watermark change with send data length Thread-Index: AQHUiGU9oRTA1aQw9k+q+bT+aC4nHA== Date: Fri, 30 Nov 2018 04:29:09 +0000 Message-ID: <20181130042753.28756-4-xiaoning.wang@nxp.com> References: <20181130042753.28756-1-xiaoning.wang@nxp.com> In-Reply-To: <20181130042753.28756-1-xiaoning.wang@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SG2PR06CA0220.apcprd06.prod.outlook.com (2603:1096:4:68::28) To VI1PR04MB5021.eurprd04.prod.outlook.com (2603:10a6:803:59::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=xiaoning.wang@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.121.68.129] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VI1PR04MB4413;6:Cr1voLOHRBy5HZRSq4NLYzEFiqINNttBSER/8k0d1HLyDht9+L6E+bADwUS0AmG/KwpelW7pc5dYuLV50K0G0pInN6u4zDLsg9S/bkdatzujgLkTWzA1IoxVqpmoFzfTqptFsdC7BUUB49WF+kvbDsvnY3G/Q8VusgPpthVNvXLHRkQfSnVd+LO1FUUkN+d5JcrsGomTJugI0RSWSNaKl2x4MdqzMtjq20E8MCtRKHkT7VExoAkw8rDU8kpQBbarb/GgSX73Om6PUWZoZ1lBVSW+ttu8xaNLowCCRi8n3dJsF69Tib2Lgq87RbQFETTQNtdPWR9zqVpfaWxxeVIKOidxs3zA+OMATIWS+e72UARD8Ulpt007Y5m5RMXSUpYkU4Yowx24LKbUhbLQvMZ7SLPxbnFdMD4EM4ICO9GeiZrOM5wRYvMzPUs1rich2uEUNBzrkH7O7SASkosqMuAQVg==;5:9No7QO+YSrDe5ZKzmj6NLow65RzkkJebWi4JiQgUwPnYuyIR1CgFfuefA2EVuzsN0MO9ZQppU8xpckQa9mXQVOJ6CoQBiqU9Csj+9Fzn9u6/5XRji1f2FQDLCT79waQqsk0YaNVsKgtJ86nZtbsc4kzz+3jg77LeZ+yit99yYsY=;7:1+hxz/S82/NO7CYq3EjRyEI7QhBdQPZ7aA2xKEhoIUKLPvjRNNuVEslVzz7o3TP1Z0dHrSbdkyLMaQXtQw0btUbigqAhESL/F5abkCQCO//PIMBPPPbh+BzcMsqIevWunOB2MWqWG6gspTuuqaCT7Q== x-ms-office365-filtering-correlation-id: 1ef38d76-03cb-4df4-4eb8-08d6567c5f58 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:VI1PR04MB4413; x-ms-traffictypediagnostic: VI1PR04MB4413: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231453)(999002)(944501410)(52105112)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(201708071742011)(7699051)(76991095);SRVR:VI1PR04MB4413;BCL:0;PCL:0;RULEID:;SRVR:VI1PR04MB4413; x-forefront-prvs: 087223B4DA x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(376002)(136003)(346002)(39860400002)(396003)(54534003)(199004)(189003)(81156014)(6436002)(76176011)(53936002)(186003)(6506007)(81166006)(256004)(8676002)(6486002)(386003)(26005)(8936002)(11346002)(99286004)(52116002)(7736002)(316002)(36756003)(2616005)(54906003)(86362001)(305945005)(102836004)(71200400001)(2351001)(14454004)(478600001)(2501003)(71190400001)(68736007)(476003)(1730700003)(6512007)(5640700003)(6916009)(105586002)(3846002)(486006)(66066001)(25786009)(106356001)(2906002)(6116002)(97736004)(446003)(5660300001)(4326008)(1076002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB4413;H:VI1PR04MB5021.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: QqHSgPSz9mGeWEMjhS6pXXgCLmL4gLt6iCdjGIv36PpwC1vQXW31KDKCordCIP0Ss2XbZU5r1Ks26ujXVncxKR4BvvZEnJtSZE1NW/2vjk82IEsmcIG3MDx/RxLG6qRqw22Y5mR3MFo4NuktqwvPkTmITbQ7wFSrT+Jfbnd8ozKXIdRjG6sGq3Qm/XUnLbKlj0K0FTw2nMPzTn3ZA71ygtZsZjHRXlaSfTOeJO0E7ZEsMEepX0MMoGZ/2rtyptLH1ehH7vaZO2vPkaazyR5ElSk0c6ghwOAIGixlvKewwn5GZvkfWRDPDHWtiaPmPeEbApn40T4MvTI4TgyrWFcL04vKd9sUI8zIAtVC+f/T4C8= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1ef38d76-03cb-4df4-4eb8-08d6567c5f58 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2018 04:29:09.8653 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4413 Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Configure watermark to change with the length of the sent data. Support LPSPI sending message shorter than tx/rxfifosize. Signed-off-by: Clark Wang --- Change log: V2: - No change. --- drivers/spi/spi-fsl-lpspi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c index cbf165e7bd17..08dcc3c22e88 100644 --- a/drivers/spi/spi-fsl-lpspi.c +++ b/drivers/spi/spi-fsl-lpspi.c @@ -89,6 +89,7 @@ struct fsl_lpspi_data { void (*rx)(struct fsl_lpspi_data *); u32 remain; + u8 watermark; u8 txfifosize; u8 rxfifosize; @@ -235,7 +236,7 @@ static void fsl_lpspi_set_watermark(struct fsl_lpspi_data *fsl_lpspi) { u32 temp; - temp = fsl_lpspi->txfifosize >> 1 | (fsl_lpspi->rxfifosize >> 1) << 16; + temp = fsl_lpspi->watermark >> 1 | (fsl_lpspi->watermark >> 1) << 16; writel(temp, fsl_lpspi->base + IMX7ULP_FCR); @@ -261,7 +262,8 @@ static int fsl_lpspi_set_bitrate(struct fsl_lpspi_data *fsl_lpspi) if (prescale == 8 && scldiv >= 256) return -EINVAL; - writel(scldiv, fsl_lpspi->base + IMX7ULP_CCR); + writel(scldiv | (scldiv << 8) | ((scldiv >> 1) << 16), + fsl_lpspi->base + IMX7ULP_CCR); dev_dbg(fsl_lpspi->dev, "perclk=%d, speed=%d, prescale =%d, scldiv=%d\n", perclk_rate, config.speed_hz, prescale, scldiv); @@ -329,6 +331,11 @@ static void fsl_lpspi_setup_transfer(struct spi_device *spi, fsl_lpspi->tx = fsl_lpspi_buf_tx_u32; } + if (t->len <= fsl_lpspi->txfifosize) + fsl_lpspi->watermark = t->len; + else + fsl_lpspi->watermark = fsl_lpspi->txfifosize; + fsl_lpspi_config(fsl_lpspi); } From patchwork Fri Nov 30 04:29:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clark Wang X-Patchwork-Id: 10705733 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9F3D114BD for ; Fri, 30 Nov 2018 04:29:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9185B2F4D3 for ; Fri, 30 Nov 2018 04:29:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 85AEE2F673; Fri, 30 Nov 2018 04:29:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 28A032F4D3 for ; Fri, 30 Nov 2018 04:29:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726375AbeK3PhP (ORCPT ); Fri, 30 Nov 2018 10:37:15 -0500 Received: from mail-eopbgr150059.outbound.protection.outlook.com ([40.107.15.59]:51885 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726419AbeK3PhO (ORCPT ); Fri, 30 Nov 2018 10:37:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PogRoODy8CheOFo3C1LeqzmHIQLApDfacYBn7a85oUg=; b=wfmUM94tmD7S20M05Dbn1K8dljz4OTFR5pgESj1o3/kiokGQoRLnbMlv6hPJ+gE/Jl46KgV91TVj9LPQnVNemzZ2R8ASqoVCE+ryPHBxgfgOXjCdOHYbMVaW5l+vzviKEK3QrqlgAiLJH5HmvXgt33UQCJKrWEKcqYgr4n+//xI= Received: from VI1PR04MB5021.eurprd04.prod.outlook.com (20.177.50.90) by VI1PR04MB3182.eurprd04.prod.outlook.com (10.170.229.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.19; Fri, 30 Nov 2018 04:29:12 +0000 Received: from VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359]) by VI1PR04MB5021.eurprd04.prod.outlook.com ([fe80::d07c:4dc2:d18:c359%2]) with mapi id 15.20.1339.031; Fri, 30 Nov 2018 04:29:12 +0000 From: Clark Wang To: "broonie@kernel.org" CC: "linux-spi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Clark Wang Subject: [PATCH V2 4/4] doc: lpspi: Document DT bindings for LPSPI slave mode Thread-Topic: [PATCH V2 4/4] doc: lpspi: Document DT bindings for LPSPI slave mode Thread-Index: AQHUiGU+2wJxwALiREybRqYs4xbk9w== Date: Fri, 30 Nov 2018 04:29:12 +0000 Message-ID: <20181130042753.28756-5-xiaoning.wang@nxp.com> References: <20181130042753.28756-1-xiaoning.wang@nxp.com> In-Reply-To: <20181130042753.28756-1-xiaoning.wang@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SG2PR06CA0220.apcprd06.prod.outlook.com (2603:1096:4:68::28) To VI1PR04MB5021.eurprd04.prod.outlook.com (2603:10a6:803:59::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=xiaoning.wang@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.121.68.129] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VI1PR04MB3182;6:kkx9vUWHOwkjmr2GrFlHaC0hgl7NlbWR/kqwj+m5JqZmG54y8cAuMuE0nBLmNop1GpxM996eVuLB8uT4wsaWCkpK5SmBiIHssYED1aojAyEVDQlNLiz1ABjAoIc7kiD9mhQ4GrOYqkxDDacwu3GJEk+Vm/AmxcCYx8P3JhW03kNcG05EPB5mPMHvddt5s64g9SxC2SlQZySqm+dbnlxuoTaymGlbAT6yaBXuzQV8Z1GbRzbuZyv84ncFlmAmWU99rCXnBw6rGY2fUpw2kM5NoZxvjbDRWgCyAdJ38PPuKHuZuYW6fFrRDUzcr11VGakWDMAp9YlIY9O/eFh5SUgGSl3SHJh5Cfr+5f0LwkkMschbB6ZzS9CxBWGXMuakMF574NdPqTWZH5Z34ifpjKCYaCLtSApWFAykXw0MIARHpyhRg6U50nJaCerZGZ+gwVNAB+0ybOifF0D5dRN/EIgS1A==;5:s6FJpwmK+zmVz9yACivgF43JcxuP2IQD0lEW9d0e8Gm4GxWnOCu7mJw2oAAOW4pRPh0MHlYZyIFuZi33FQdKONjLwLgMzSW9R4sIv8UiLFgpz8Svd4u34/VyoJ/TEIz44qu1OhkSyVEod0i3yuAtp3lk4XvzZhpilh7ppCfKxaA=;7:UU/PwhhmiS8qmoqQwULrJJFCbMFn8N4bp63kainymSjbOO5Q4Y7QsuSWsnXdPOKsbMm6ywT/wGP9XkWMgfO2pfWbphgKhVbM81zGbMzc+rKcQnI/hSRiJFIcIOGB93WjoDDM1mUimLniHT67FxXC7Q== x-ms-office365-filtering-correlation-id: ce517dab-b2c5-4705-dd95-08d6567c60aa x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:VI1PR04MB3182; x-ms-traffictypediagnostic: VI1PR04MB3182: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231453)(999002)(944501410)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(201708071742011)(7699051)(76991095);SRVR:VI1PR04MB3182;BCL:0;PCL:0;RULEID:;SRVR:VI1PR04MB3182; x-forefront-prvs: 087223B4DA x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(136003)(346002)(396003)(39860400002)(366004)(189003)(199004)(14454004)(97736004)(478600001)(105586002)(8936002)(6512007)(386003)(66066001)(7736002)(1730700003)(8676002)(5640700003)(26005)(81156014)(25786009)(81166006)(54906003)(186003)(2906002)(2501003)(102836004)(305945005)(53936002)(256004)(14444005)(6506007)(76176011)(5660300001)(316002)(11346002)(2616005)(1076002)(6486002)(6436002)(99286004)(486006)(106356001)(52116002)(446003)(476003)(6916009)(36756003)(6116002)(71190400001)(71200400001)(68736007)(86362001)(575784001)(2351001)(3846002)(4326008);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB3182;H:VI1PR04MB5021.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 2P8onG3eEInISxf3KXJ8TwRzXLiH4uVJyDOaxCYrVJAYAkDy9g4I09EBKCdDApegkCdflP2o/R341EoI8RUumDxZAMQIG9iJnKc21swPS7IH27ScNpEsjGwkwfAn2OowFRimQ8yAWAegJXD0BXIjY4NmP/7pPGxrEjolB8i21UHjIZVS9QN7yEpgiDsJ5O6NZ1q5pieDAP5jzz5lLB3eYj6rAhZI1s84ge7DUJYdUh+IJ+eAlrkZfEy+TOoi87s53QlrG9m8l4P2oen7jcf/oHRKBcfle98fR1RUUm3xRu30cmkm5LVFo9+wBksRmG36b/OtQAKFvn+WrBebatv8FMwlLSBLsXoPrcg4HW8+mgg= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce517dab-b2c5-4705-dd95-08d6567c60aa X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2018 04:29:12.2872 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3182 Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Remove "fsl,imx8qxp-spi", it does not exist in spi-fsl-lpspi.c driver for now. Add introductions of interrupt-parent and spi-slave. Signed-off-by: Clark Wang --- Documentation/devicetree/bindings/spi/spi-fsl-lpspi.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/spi/spi-fsl-lpspi.txt b/Documentation/devicetree/bindings/spi/spi-fsl-lpspi.txt index 8d178a4503cf..9e44d85e0a68 100644 --- a/Documentation/devicetree/bindings/spi/spi-fsl-lpspi.txt +++ b/Documentation/devicetree/bindings/spi/spi-fsl-lpspi.txt @@ -3,10 +3,12 @@ Required properties: - compatible : - "fsl,imx7ulp-spi" for LPSPI compatible with the one integrated on i.MX7ULP soc - - "fsl,imx8qxp-spi" for LPSPI compatible with the one integrated on i.MX8QXP soc - reg : address and length of the lpspi master registers +- interrupt-parent : core interrupt controller - interrupts : lpspi interrupt - clocks : lpspi clock specifier +- spi-slave : spi slave mode support. In slave mode, add this attribute without + value. In master mode, remove it. Examples: @@ -16,4 +18,5 @@ lpspi2: lpspi@40290000 { interrupt-parent = <&intc>; interrupts = ; clocks = <&clks IMX7ULP_CLK_LPSPI2>; + spi-slave; };