Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp4741536ybp; Mon, 14 Oct 2019 09:18:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqyOYqBsAFU4CPD4hE1H2EBs8VSX2xWLzzUgnaNjKdBXD2Bjl8+iilSs9vqLVEIV14V26Z4s X-Received: by 2002:a50:8dc9:: with SMTP id s9mr28591776edh.168.1571069886946; Mon, 14 Oct 2019 09:18:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571069886; cv=none; d=google.com; s=arc-20160816; b=HW+zADgNd5BA+Y0S0cneb06ANs1A+KwpuJlwTXGc9zaLTHmT1swiR4+HR6FsqTxZev QYC9OO+OquJZ/aGlr+LL4DKGfiUB5yC7CepL1uHPr+rlVQmKPfhVsPk0kVz5QX97ru9S pQeTUL7bbtJKxiO4V6AmQzZssOoRq1XeS2zOJFhKVbAyev+I/0JnZzEW5lMOq3V2IyYi EFvCi49ZCH689B19Xpnh3uNXyWIXoJnWdO7T0dwbwJ7vAF4pXFJy/Z21Zkbn9sK5M+i0 eLt9isDWGXvF/R65M2+DmZb/2JXn1cyO92B702PkGw4TsFQrmuQ2H0UoPzdt5XY8YGBa 9WuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=0JzEuZMgcTnB+W99wjyXU7kcGAiddB4Jt5OmZBJQues=; b=a5WKFaCHlf0kMROORv6B3eprGR5xGGUxVqycp7yb8ZqfHzFcAIuY5QYLQL8gNN6QFG dnfcVi1SGl+SlUVaoW5dsRQQ9YV4lnBFteJU590zJMhL2hUZ6qmEg2YNznwkZzBEyJEP 6GL7RUBAt0ONztf9b7umP8HYvSTdv+MDK/zySPK2z9eM5JWTiwhd0nBxdjv8vGHGJZym kKjV7wV03tKoH59lQfl5Tm3U2qiyQ0fTppzP5wq7GUoZCaWGw6aB37TmRxtKTHmyNg/r Q7GeB5pJSrrqOrm4ToEjQIHAD2Kke5RnpOUyU7YdYqpZeyaXOoQTm7ZXB8rWRVlOI/oO vpeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=KFGg2+aa; 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 f14si13555223edf.102.2019.10.14.09.17.44; Mon, 14 Oct 2019 09:18:06 -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=KFGg2+aa; 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 S1730790AbfJNPgK (ORCPT + 99 others); Mon, 14 Oct 2019 11:36:10 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:45347 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730550AbfJNPgK (ORCPT ); Mon, 14 Oct 2019 11:36:10 -0400 Received: by mail-pg1-f194.google.com with SMTP id r1so9135565pgj.12 for ; Mon, 14 Oct 2019 08:36:09 -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:mime-version :content-transfer-encoding; bh=0JzEuZMgcTnB+W99wjyXU7kcGAiddB4Jt5OmZBJQues=; b=KFGg2+aadsAmkO3VWYUHKbDZQKie2khKxl5ymHoPu+WG6BiC0fE9TrdzOu+dUoobwd +xATgnVFzGGDCatQ12ESIkgqj/BnyfoEiPOsVYWlDo/M71ahNiDeI4Y2c6My5APAcrMy Llvq9S3dWaV/yaiIlTjZhMWS8jSamcJAFZ0o1tDlx2gy0beNE/31LGFh1ss0Zj7vhD4L DO6bPXLsWL5ubMwzymxtD1/QBKRWSSQovnC9eNvIVsI8nWxCN8Vac2LOx5ckaLbNv9Rq w1Ps1TNcmmF3IE1QNBLkohY4XEWOOZ+hs/bBJAcm4BjhT3ZFjmDiU4PqLd3N81VBzXrv PaDQ== 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:mime-version :content-transfer-encoding; bh=0JzEuZMgcTnB+W99wjyXU7kcGAiddB4Jt5OmZBJQues=; b=fad0yxPyf4RuzsfY4JKVMH0kJ/WVNy1NXVE33dltketAk1qhdcdiw1i88loHq3O33m fmG7JSRtNpiOuuFUi6E4K/inqpk9ghfawssyQhyyU1+ITMDxGUXrDsRuQiFJphoJMmcq jPD4B0Dn4MsTxJtehNvbSUvffQ2Vsi73SOFfxlDuuJMVtHQSd28JiqndL4PshkYEixqb qtLhJX36+/LymqGq18bAgKFenwH/jLvgu3GA/03WFq1Jly1icMIaJCeYWbXObWOS6pqC k5JaLgOwnwei3Hup43d0yE3JXn+n8renjAg+kZbJ+8wYN5IM2IMrufQxcAOcJHn2bGSf HQIw== X-Gm-Message-State: APjAAAXMY6PoD+Fjv27v8YL7itIa6LGxWrHVqXUAQX+CazdNsZBsStnQ AwBBszYngZ8RrNY0uKITsivkOvyGpnY= X-Received: by 2002:a63:d50c:: with SMTP id c12mr12148168pgg.199.1571067369278; Mon, 14 Oct 2019 08:36:09 -0700 (PDT) Received: from localhost.localdomain (155-97-232-235.usahousing.utah.edu. [155.97.232.235]) by smtp.googlemail.com with ESMTPSA id q76sm41142648pfc.86.2019.10.14.08.36.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2019 08:36:08 -0700 (PDT) From: Tuowen Zhao To: lee.jones@linaro.org, linux-kernel@vger.kernel.org Cc: Tuowen Zhao , AceLan Kao , Mika Westerberg , Andy Shevchenko , Luis Chamberlain Subject: [PATCH v4 1/2] lib: devres: add a helper function for ioremap_uc Date: Mon, 14 Oct 2019 09:33:43 -0600 Message-Id: <20191014153344.8996-1-ztuowen@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Implement a resource managed strongly uncachable ioremap function. Cc: Tested-by: AceLan Kao Signed-off-by: Tuowen Zhao Acked-by: Mika Westerberg Acked-by: Andy Shevchenko Acked-by: Luis Chamberlain Acked-for-MFD-by: Lee Jones --- Changes from previous version: * Add Cc stable .../driver-api/driver-model/devres.rst | 1 + include/linux/io.h | 2 ++ lib/devres.c | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/Documentation/driver-api/driver-model/devres.rst b/Documentation/driver-api/driver-model/devres.rst index a100bef54952..92628fdc2f11 100644 --- a/Documentation/driver-api/driver-model/devres.rst +++ b/Documentation/driver-api/driver-model/devres.rst @@ -314,6 +314,7 @@ IOMAP devm_ioport_unmap() devm_ioremap() devm_ioremap_nocache() + devm_ioremap_uc() devm_ioremap_wc() devm_ioremap_resource() : checks resource, requests memory region, ioremaps devm_iounmap() diff --git a/include/linux/io.h b/include/linux/io.h index accac822336a..a59834bc0a11 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -64,6 +64,8 @@ static inline void devm_ioport_unmap(struct device *dev, void __iomem *addr) void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size); +void __iomem *devm_ioremap_uc(struct device *dev, resource_size_t offset, + resource_size_t size); void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, resource_size_t size); void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, diff --git a/lib/devres.c b/lib/devres.c index 6a0e9bd6524a..17624d35e82d 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -9,6 +9,7 @@ enum devm_ioremap_type { DEVM_IOREMAP = 0, DEVM_IOREMAP_NC, + DEVM_IOREMAP_UC, DEVM_IOREMAP_WC, }; @@ -39,6 +40,9 @@ static void __iomem *__devm_ioremap(struct device *dev, resource_size_t offset, case DEVM_IOREMAP_NC: addr = ioremap_nocache(offset, size); break; + case DEVM_IOREMAP_UC: + addr = ioremap_uc(offset, size); + break; case DEVM_IOREMAP_WC: addr = ioremap_wc(offset, size); break; @@ -68,6 +72,21 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, } EXPORT_SYMBOL(devm_ioremap); +/** + * devm_ioremap_uc - Managed ioremap_uc() + * @dev: Generic device to remap IO address for + * @offset: Resource address to map + * @size: Size of map + * + * Managed ioremap_uc(). Map is automatically unmapped on driver detach. + */ +void __iomem *devm_ioremap_uc(struct device *dev, resource_size_t offset, + resource_size_t size) +{ + return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_UC); +} +EXPORT_SYMBOL_GPL(devm_ioremap_uc); + /** * devm_ioremap_nocache - Managed ioremap_nocache() * @dev: Generic device to remap IO address for -- 2.23.0