From patchwork Thu Oct 5 03:32:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 114832 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp133137qgn; Wed, 4 Oct 2017 20:34:20 -0700 (PDT) X-Received: by 10.98.20.69 with SMTP id 66mr505535pfu.291.1507174460251; Wed, 04 Oct 2017 20:34:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507174460; cv=none; d=google.com; s=arc-20160816; b=HLVaoddTq/y9hzf87NbIz/K8SU6JxIzqdNRxduTAUVjMGGgpO7ob6wXxEEYhsWxbxq LlkXbAjFdcXFpvwurgB7iSXB53vku6KVNFE2LviAGlYT0i7+7E+5k2Qy12tZ3/iUXKAn tPXneDED0K1IdpTfQ0i5u3fmh3DBNpLX/2c6IjcwC9Xm1F6Dw4w0wqmaylxBuMjSMZoT FJ5Ne+V9aJckZJ5rEUViDGYpAhOh+5us0RV+LhkHJC5wRkAxE+gsh/Ytp+Y/HJDQxxan bEFKO+b0xFt3rusbYo/lT2rFkbTkcSdPcRYgimDaycs8HH2d70tCHeAvkyWixLAKihP/ KyjA== 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=1dEd9rjG8SfOZjW67/oDHfzf+LcltUc1goZTNkEVsc4=; b=fPcZi1Fi4ugerXsd4F5HvjZaWSTlx6aI/t7N47Z9JO/1vbROsoF315MFcKkIUdHOQs sQE9Vkan79V9UDrHCbsqFF6+W0CWrm79hecYtLYNK21VfXk+fEjPrtPkpyGEsUkyp1ed 5D8bSZpQ7RpLbK7Z0JJwAD586OnW3c8BBxiJgEUQ4pZcYmTYZy7qMHqeUcJ51v9ZOi8Y IU0v3isiLUhBOiQm8sTL/XiXMD0rSQ6aZABpIpCVl2v6EnMRh4mPNsOzByuo+Ih4S453 C5JkTAQeH4yvphrR+3AUuf2XXpt3PvThvmKI9DfCpwLHWONw7Xh+MB4kHvH5wO330zeV 7mNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NVj3dzZj; 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=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u3si5611450plb.302.2017.10.04.20.34.19; Wed, 04 Oct 2017 20:34:20 -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=@linaro.org header.s=google header.b=NVj3dzZj; 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=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751757AbdJEDeS (ORCPT + 26 others); Wed, 4 Oct 2017 23:34:18 -0400 Received: from mail-pf0-f179.google.com ([209.85.192.179]:54414 "EHLO mail-pf0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751223AbdJEDdE (ORCPT ); Wed, 4 Oct 2017 23:33:04 -0400 Received: by mail-pf0-f179.google.com with SMTP id m28so2366660pfi.11 for ; Wed, 04 Oct 2017 20:33:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1dEd9rjG8SfOZjW67/oDHfzf+LcltUc1goZTNkEVsc4=; b=NVj3dzZjDf2y70FVRihawaTpK23FC/SgQseB7VF2GdTisyF2tzfk4fvMl7EJ5ikWRh mSOrs4sOAAS7i3t1qv+dX7e5VRvkovMJvoPtsXwgbqsenQrarQmgOCalO1RJPdoaVUZY +Zxln2GdT/l6+kkvFruz2ESrrsI/fhtsmM9CU= 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=1dEd9rjG8SfOZjW67/oDHfzf+LcltUc1goZTNkEVsc4=; b=HpxURNk+YYZ4YW0Eu5wwgaW1PChwS7ajFEGQl4pn/SIa5rNQWl/9BCoB+5sRYaI/YL tZT4yooX/SnZID9Cn0CjeV49xn0vkWsVsD6wtMKjWeEN3vd6vPkhWCoArJZKWUaNEb4r +cZwsAx4BhCw6zoZYD7QfGw0xS+X8pbWwXsTjgil+tS0qIEgQojOWoXospDTfAH+nGVx 7x6WBWWiySaKdW78RzlcH8CYrOb3DO04YrgiUzHhpgwhYmM6swaYxGqbQzWuhsHY9RHw 9/VDDKoSbPb1FaoIiQQJjXnv+W0o0naAxtZ+IjDzQf4xy3t7h9dml+EjrSb5om/+eMeM 6fHg== X-Gm-Message-State: AMCzsaXcJixY30gc4w8sVVGxlE8wOpHjvHWYUdDwVbhBpyhoBdnQ0XI4 2R+y3lqdakEc6lJD13k+khq8gw== X-Google-Smtp-Source: AOwi7QDESr1R5pVcS5Duaw5rLBI+qYHlK+66SpHdJakRuJAO5fb8FAHw6VQNe/9qyJ/gNS7nrBB62w== X-Received: by 10.84.178.101 with SMTP id y92mr11595432plb.137.1507174384248; Wed, 04 Oct 2017 20:33:04 -0700 (PDT) Received: from localhost.localdomain (ip68-111-217-79.sd.sd.cox.net. [68.111.217.79]) by smtp.gmail.com with ESMTPSA id h70sm28945700pfc.51.2017.10.04.20.33.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Oct 2017 20:33:03 -0700 (PDT) From: Bjorn Andersson To: Andy Gross , Anton Vorontsov , Colin Cross , Frank Rowand , Kees Cook , Rob Herring , Tony Luck Cc: David Brown , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-soc@vger.kernel.org Subject: [PATCH v3 1/5] of/platform: Generalize /reserved-memory handling Date: Wed, 4 Oct 2017 20:32:54 -0700 Message-Id: <20171005033258.12825-2-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171005033258.12825-1-bjorn.andersson@linaro.org> References: <20171005033258.12825-1-bjorn.andersson@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org By iterating over all /reserved-memory child nodes and match each one to a list of compatibles that we want to treat specially, we can easily extend the list of compatibles to handle - without having to resort to of_platform_populate() that would create unnecessary platform_devices. Signed-off-by: Bjorn Andersson --- Changes since v2: - Simplify logic per Rob's suggestion. Changes since v1: - New patch drivers/of/platform.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) -- 2.12.0 diff --git a/drivers/of/platform.c b/drivers/of/platform.c index b19524623498..ee89f096f0f3 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -497,6 +497,11 @@ int of_platform_default_populate(struct device_node *root, EXPORT_SYMBOL_GPL(of_platform_default_populate); #ifndef CONFIG_PPC +static const struct of_device_id reserved_mem_matches[] = { + { .compatible = "ramoops" }, + {} +}; + static int __init of_platform_default_populate_init(void) { struct device_node *node; @@ -505,15 +510,12 @@ static int __init of_platform_default_populate_init(void) return -ENODEV; /* - * Handle ramoops explicitly, since it is inside /reserved-memory, - * which lacks a "compatible" property. + * Handle certain compatibles explicitly, since we don't want to create + * platform_devices for every node in /reserved-memory with a + * "compatible", */ - node = of_find_node_by_path("/reserved-memory"); - if (node) { - node = of_find_compatible_node(node, NULL, "ramoops"); - if (node) - of_platform_device_create(node, NULL, NULL); - } + for_each_matching_node(node, reserved_mem_matches) + of_platform_device_create(node, NULL, NULL); /* Populate everything else. */ of_platform_default_populate(NULL, NULL, NULL); From patchwork Thu Oct 5 03:32:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 114829 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp132546qgn; Wed, 4 Oct 2017 20:33:28 -0700 (PDT) X-Received: by 10.159.254.20 with SMTP id r20mr9772665pls.16.1507174408303; Wed, 04 Oct 2017 20:33:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507174408; cv=none; d=google.com; s=arc-20160816; b=uUzL+GnmK8YkonyFjqyL2WnmMTCyw8WJQX39IyNm9SCu0hrKETYGX9azNXgjNlt9sQ IeFWzKcGLtDazcdIheb2wDTppcG8/di5QUHV7L5OdyWpy7KocfbEX151bjUUi7R7qs1r 3VR2yLjsbu9TkaQ/Axmlm3ktANfH63sKNpk4G25kj9ySI1O0Rok4zHwm1pr5wZktZKMZ Cub9c/wAxtHhQ55+ihcqagVpJ0NE/6U6EDeK014NIvnYEUqpbcIzldNZNab1rAslSMbO TUQh8PZmr+4FU9SrD5CcRJSgGDur59yEcgWX+y+PdluI0P/nAfqsWM+xhEwtzCkBWh+R pojQ== 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=ewV4Qimsn6CENQjx46gnZva1PgFePn704g2zhdN+j6w=; b=kI78W/LN1pmn2u6PBbc2cUDrkC4k6Xsv+LBT1PlCzJvaq30F5I0q+s1U8P639FLPTS zeA6hSLmwGdeOIthCCAwYQgd3cMivD+qulUTS8S4wTYqEUzyP2t+P7GHqVMCQAQlA1f5 8R4TRcwK/749crZLF8ZjS8+S7lAmi3613Ypr9N8pEn8blnVhOLpqPc2TgTSIgkltbNgo X3jF2GT5CThY3mlDE4NEWEcIHAPecCqAu2mQ6kaU029pdnDNBOkhtiw51GRt4oyIBS+F nX+aFolUCrNPSRvs37aSvGA6LKoSFteSyOnDMrlJFeM7C5KUIn3df5pshNs8DwqH6uzV EOWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Usby7NsO; 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=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n2si128312pgp.47.2017.10.04.20.33.28; Wed, 04 Oct 2017 20:33:28 -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=@linaro.org header.s=google header.b=Usby7NsO; 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=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751474AbdJEDdL (ORCPT + 26 others); Wed, 4 Oct 2017 23:33:11 -0400 Received: from mail-pf0-f170.google.com ([209.85.192.170]:48185 "EHLO mail-pf0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751260AbdJEDdG (ORCPT ); Wed, 4 Oct 2017 23:33:06 -0400 Received: by mail-pf0-f170.google.com with SMTP id n24so7300380pfk.5 for ; Wed, 04 Oct 2017 20:33:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ewV4Qimsn6CENQjx46gnZva1PgFePn704g2zhdN+j6w=; b=Usby7NsO9vQKe03KQ03oEZX/QGueQnU74rINJVfbyPBOGrCiejsrEpA/5oZSl1JhLn BYQP2oc9u4jS0FmXa6MB0My5IoyzI0vNDX8d4lDeG2oKCKiN/QEv8AuGm2oD1abLZKdh rNxTRycCEjl76Nhq6uJV4xykYxfLc6APTee3k= 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=ewV4Qimsn6CENQjx46gnZva1PgFePn704g2zhdN+j6w=; b=F2txFdAJFbkAgbRdjyLKV03WTX0EuqVGBPT+yAD0oSwQla69E+XoCY/o+mXxvWNxSL RHPx4jWszTYYgll92Z6r+JeASTDvAOO9EaVLDnvsjsRbPpHQqU2PUbBGyPMliWW3QhyU yyu4SE/qoqsqFK7hkW1IbttoaBSVk2zV+NPik6ErFB5LzaH41Emei9rUeqeJdFxk6pRv +e1fKvMhDWWVnZDUZcvJTYNBN1odc9tBH5QFYnubc8db5RdHSH+sotbsxCuEOV4adrBD N89ycDs/4WbMQbx5+WjTCLBD3V1KurN+eDlavGaBRNFFcpNmRzsJS/bb05JZKwjRl7dp OuXQ== X-Gm-Message-State: AHPjjUgonFRmS8clXGC94u9BzDPEBzFGKe12+4I7cL3la+83ybSLBbNS 3VyXg6V7NQsP7NN9JfiHOVP1BA== X-Google-Smtp-Source: AOwi7QB4nM0uLEAkoiv3dzhjvB9MLQdZc6xko3/p7tKXCuZjJhd+QP5H6Pi2k78ieTkZFRsVKN1vAA== X-Received: by 10.84.143.131 with SMTP id 3mr22097010plz.224.1507174385731; Wed, 04 Oct 2017 20:33:05 -0700 (PDT) Received: from localhost.localdomain (ip68-111-217-79.sd.sd.cox.net. [68.111.217.79]) by smtp.gmail.com with ESMTPSA id h70sm28945700pfc.51.2017.10.04.20.33.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Oct 2017 20:33:05 -0700 (PDT) From: Bjorn Andersson To: Andy Gross , Frank Rowand , Rob Herring Cc: Anton Vorontsov , Colin Cross , David Brown , Kees Cook , Tony Luck , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-soc@vger.kernel.org Subject: [PATCH v3 2/5] of: reserved_mem: Accessor for acquiring reserved_mem Date: Wed, 4 Oct 2017 20:32:55 -0700 Message-Id: <20171005033258.12825-3-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171005033258.12825-1-bjorn.andersson@linaro.org> References: <20171005033258.12825-1-bjorn.andersson@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In some cases drivers referencing a reserved-memory region might want to remap the entire region, but when defining the reserved-memory by "size" the client driver has no means to know the associated base address of the reserved memory region. This patch adds an accessor for such drivers to acquire a handle to their associated reserved-memory for this purpose. A complicating factor for the implementation is that the reserved_mem objects are created from the flattened DeviceTree, as such we can't use the device_node address for comparison. Fortunately the name of the node will be used as "name" of the reserved_mem and will be used when building the full_name, so we can compare the "name" with the basename of the full_name to find the match. Signed-off-by: Bjorn Andersson --- Changes since v2: - None Changes since v1: - Previous patch provided interface to resolve memory-region reference, instead of direct lookup by device_node drivers/of/of_reserved_mem.c | 26 ++++++++++++++++++++++++++ include/linux/of_reserved_mem.h | 5 +++++ 2 files changed, 31 insertions(+) -- 2.12.0 diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c index d507c3569a88..b40cfce68fd4 100644 --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c @@ -397,3 +397,29 @@ void of_reserved_mem_device_release(struct device *dev) rmem->ops->device_release(rmem, dev); } EXPORT_SYMBOL_GPL(of_reserved_mem_device_release); + +/** + * of_reserved_mem_get() - acquire reserved_mem from a device node + * @np: node pointer of the desired reserved-memory region + * + * This function allows drivers to acquire a reference to the reserved_mem + * struct based on a device node handle. + * + * Returns a reserved_mem reference, or NULL on error. + */ +struct reserved_mem *of_reserved_mem_get(struct device_node *np) +{ + const char *name; + int i; + + if (!np->full_name) + return NULL; + + name = kbasename(np->full_name); + for (i = 0; i < reserved_mem_count; i++) + if (!strcmp(reserved_mem[i].name, name)) + return &reserved_mem[i]; + + return NULL; +} +EXPORT_SYMBOL_GPL(of_reserved_mem_get); diff --git a/include/linux/of_reserved_mem.h b/include/linux/of_reserved_mem.h index f8e1992d6423..91b1eb5076e4 100644 --- a/include/linux/of_reserved_mem.h +++ b/include/linux/of_reserved_mem.h @@ -44,6 +44,7 @@ int early_init_dt_alloc_reserved_memory_arch(phys_addr_t size, void fdt_init_reserved_mem(void); void fdt_reserved_mem_save_node(unsigned long node, const char *uname, phys_addr_t base, phys_addr_t size); +struct reserved_mem *of_reserved_mem_get(struct device_node *np); #else static inline int of_reserved_mem_device_init_by_idx(struct device *dev, struct device_node *np, int idx) @@ -55,6 +56,10 @@ static inline void of_reserved_mem_device_release(struct device *pdev) { } static inline void fdt_init_reserved_mem(void) { } static inline void fdt_reserved_mem_save_node(unsigned long node, const char *uname, phys_addr_t base, phys_addr_t size) { } +static inline struct reserved_mem *of_reserved_mem_get(struct device_node *np) +{ + return NULL; +} #endif /** From patchwork Thu Oct 5 03:32:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 114828 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp132404qgn; Wed, 4 Oct 2017 20:33:16 -0700 (PDT) X-Received: by 10.99.191.75 with SMTP id i11mr19917217pgo.136.1507174396371; Wed, 04 Oct 2017 20:33:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507174396; cv=none; d=google.com; s=arc-20160816; b=vx1njWVUr9Qo4bAjni2F465WgVpBun6qQ9v2/KG1m15a7HpvrgvcaJOH4W3ViejMiE JI8VOXUQO6rlnJXvMNTXOTzCZB5lmQorLetFQElcRrRTtRowS1vQiA9JBMF9rXikcfSw TtFXxMzY5/0szr2crsG/jBmB7llkGPgSlDPoTDGa1lpcPSFOIsk/pjHCc4P3uDARgkXn grwZqGLKHKxjBToDV/KWlUp1DvLu6kC6GqfGm1U1e3Lu475wv/RZilPk1T6n5ltiN+c2 Jmb4UmogglM+dApe1giDPM1ikG98S34Ll2Oex6t0MuXip1bZ9UsmjrynUtJ42cZvhwf8 RxcQ== 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=bblqEr0oAlCAn7QrbWSKCShA+/K1LGJRZ/8rdzEb9Fs=; b=iSrmuSqBxD4kDntw7XC9xIyMvQmSeRpNZHoZPcVorHx8y7dpb7B/W0BbEu8Xg9jaTA B701LoOGfNs4hN8o2CxOYh41GFN+HPHazMDO7IH4bqfTfJQp+xbhhrBhTPRqaEjTfHS/ jCkCBZ5qhZ+CLmBuoV64LXfEn4Rprgcx4xHi5IuJjLQ/fjUn21rUbwdNv9xzCFPeovpi ET4zmaltjIBlf8u7ba7ECalc/mQuamtxfvx6WTHBYBoJ1vgSeS37o/BHSodYrKGhlSBe TSdeNREcNa7DX3ZUbc+T6+gwTbERhbJo1kcyEcJc3GpShfFgGak+THZlhbNv/YC0CqhJ OjIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=fUdFmM44; 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=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h5si8293447pgf.245.2017.10.04.20.33.16; Wed, 04 Oct 2017 20:33:16 -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=@linaro.org header.s=google header.b=fUdFmM44; 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=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751515AbdJEDdN (ORCPT + 26 others); Wed, 4 Oct 2017 23:33:13 -0400 Received: from mail-pf0-f171.google.com ([209.85.192.171]:50437 "EHLO mail-pf0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751388AbdJEDdI (ORCPT ); Wed, 4 Oct 2017 23:33:08 -0400 Received: by mail-pf0-f171.google.com with SMTP id m63so7304484pfk.7 for ; Wed, 04 Oct 2017 20:33:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=bblqEr0oAlCAn7QrbWSKCShA+/K1LGJRZ/8rdzEb9Fs=; b=fUdFmM44oKqQac55MSpKdUmshrlv7tLyqAAXTT5TqYVgNmi9aT2huGnJXZFASt69pz sehy2JuDlsx2IJtDqDs4AEktE7a+XJrNvNnLv02ffo9KEU/90DUWgh4lvPacrH1PSsZC UOClIhHvGuJuV/PR12X2ord+eQ3bnsHvQlv7Y= 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=bblqEr0oAlCAn7QrbWSKCShA+/K1LGJRZ/8rdzEb9Fs=; b=ulXMpFmOfxEGRqzQ6/PeXBk3/2PFx6mwwxgj8AhzQ9gJ3svUZQzTztCvm0iTo9qUss M2iymRIIrLvFCrCGBFIaM0rNGVLfpnceAJa6q+vMdYshQ5nQSfbYDZDEGyO5u2dthJKK YskQbVjsV2shpO1muTCW4Bt2S5ANf6aM+KVmns9+XrtAFCnqxnzcLZWqHxeIhYXuqTDP lwXndKZcsVRHr0Uhas0nFFt79TeexjEHcb17CjdPcx4CW/+6VpJXkGod8si3imSGo0rs Ls/y+O7CYF5H+l1YvYCOxkWsDwvnT8+lFNdxn4tp0oN5qD5Nbx6vdTNChFdMC4V8sdC0 ih4w== X-Gm-Message-State: AMCzsaW+ZyipWPWUsWgHapyVkuZnkbSDti1PTomlIkKZ5veGfWZzysfX n/BtebeiwdC+71IlDCUJ6ZVmKQ== X-Google-Smtp-Source: AOwi7QDQ7G3shy+x972uTzun8j0yITQcEYYhPS3xi3lCvSyrqjdFlGQvXwVfeGeCggFkWK1zdS02Qg== X-Received: by 10.98.220.220 with SMTP id c89mr595922pfl.167.1507174387310; Wed, 04 Oct 2017 20:33:07 -0700 (PDT) Received: from localhost.localdomain (ip68-111-217-79.sd.sd.cox.net. [68.111.217.79]) by smtp.gmail.com with ESMTPSA id h70sm28945700pfc.51.2017.10.04.20.33.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Oct 2017 20:33:06 -0700 (PDT) From: Bjorn Andersson To: Andy Gross Cc: Anton Vorontsov , Colin Cross , David Brown , Frank Rowand , Kees Cook , Rob Herring , Tony Luck , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-soc@vger.kernel.org Subject: [PATCH v3 3/5] dt-binding: soc: qcom: Add binding for rmtfs memory Date: Wed, 4 Oct 2017 20:32:56 -0700 Message-Id: <20171005033258.12825-4-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171005033258.12825-1-bjorn.andersson@linaro.org> References: <20171005033258.12825-1-bjorn.andersson@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This adds the binding for describing shared memory used to exchange file system blocks between the RMTFS client and service. A client for this is generally found in the modem firmware and is used for accessing persistent storage for things such as radio calibration. Acked-by: Rob Herring Signed-off-by: Bjorn Andersson --- Changes since v2: - Renamed compatible to "rmtfs-mem" in attempt to clarify that this is not a file system, but some chunk of memory. Changed since v1: - Memory described in a single reserved-memory node, rather than by reference from a "dummy" node - qcom,vmdid added .../bindings/reserved-memory/qcom,rmtfs-mem.txt | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Documentation/devicetree/bindings/reserved-memory/qcom,rmtfs-mem.txt -- 2.12.0 diff --git a/Documentation/devicetree/bindings/reserved-memory/qcom,rmtfs-mem.txt b/Documentation/devicetree/bindings/reserved-memory/qcom,rmtfs-mem.txt new file mode 100644 index 000000000000..8562ba1dce69 --- /dev/null +++ b/Documentation/devicetree/bindings/reserved-memory/qcom,rmtfs-mem.txt @@ -0,0 +1,51 @@ +Qualcomm Remote File System Memory binding + +This binding describes the Qualcomm remote filesystem memory, which serves the +purpose of describing the shared memory region used for remote processors to +access block device data using the Remote Filesystem protocol. + +- compatible: + Usage: required + Value type: + Definition: must be: + "qcom,rmtfs-mem" + +- reg: + Usage: required for static allocation + Value type: + Definition: must specify base address and size of the memory region, + as described in reserved-memory.txt + +- size: + Usage: required for dynamic allocation + Value type: + Definition: must specify a size of the memory region, as described in + reserved-memory.txt + +- qcom,client-id: + Usage: required + Value type: + Definition: identifier of the client to use this region for buffers. + +- qcom,vmid: + Usage: optional + Value type: + Definition: vmid of the remote processor, to set up memory protection. + += EXAMPLE +The following example shows the remote filesystem memory setup for APQ8016, +with the rmtfs region for the Hexagon DSP (id #1) located at 0x86700000. + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + rmtfs@86700000 { + compatible = "qcom,rmtfs-mem"; + reg = <0x0 0x86700000 0x0 0xe0000>; + no-map; + + qcom,client-id = <1>; + }; + }; From patchwork Thu Oct 5 03:32:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 114831 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp132897qgn; Wed, 4 Oct 2017 20:34:00 -0700 (PDT) X-Received: by 10.98.75.12 with SMTP id y12mr22094895pfa.43.1507174440555; Wed, 04 Oct 2017 20:34:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507174440; cv=none; d=google.com; s=arc-20160816; b=Eick+6cGlGpyofFlir0f5KdGfNecn1yLmd4M6iJ/uXVlEAg+6QsUzakFGJHSKdXyAy ldwaWhFetoMn8HVMFkUYqaNH9SSaykZGxlmJGW2gx20SAAcL6huoQ71BtLXrC88MPLX0 sI5G0Y2p3kpldeFm5L4iTbovbRWWZTWNqBlKd6Cn6pG5gh/EgVnZ07MbV3Nlq7mrzSJi j4UwReXFXXc8IPuJ6otIyOoxIF6SA+ATbvs4tGvO+6FNI2RIHZcCOUmu/CjGxkJzRPgb wegYpTYCYY/5HEQq83MHymhcEQlCkcArdB56pqVuXSg+GgdckwKLuXH2e0fJlwdgltBP Uikw== 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=+Lm+n3FRzXMAhojaZ+Tdlgn0PsF8eeGH3pbNNpQpdFM=; b=eWW3Xej+YBCk2VbDtuz8u6yHUmtB+M6ZK9p//awdAn/bJP3pOyy1hTTzYIxvuCZJmN sBvwvnDO4zpikwu29KsRV4RjSR8f9/y87MV6RKO9g+P6k9Kq0vNgiRgOEJTfaVBvIgjr xWGRob4987ZFKAsAur+ybbY+3j7thCCY1YSiJRqjhhBCnmXu4BxGnB7UitK2bqHWC07V AM3OeqcyZtU/cJaoBqck0Ozl8bdvQCS+veVhNHgviXF86JpkjXwPohoG3PgARLvS8QvJ m/lMTYIR0L4aKZJjIi0gPm+2UtYQrIuPMDb+CHFd5t+rixua9Z/HZ0hmGEXSqWsytWl1 g8Ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=EfSuZJkp; 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=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y73si1039420pfi.525.2017.10.04.20.34.00; Wed, 04 Oct 2017 20:34:00 -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=@linaro.org header.s=google header.b=EfSuZJkp; 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=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751684AbdJEDdz (ORCPT + 26 others); Wed, 4 Oct 2017 23:33:55 -0400 Received: from mail-pf0-f178.google.com ([209.85.192.178]:55394 "EHLO mail-pf0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751415AbdJEDdJ (ORCPT ); Wed, 4 Oct 2017 23:33:09 -0400 Received: by mail-pf0-f178.google.com with SMTP id g62so1704163pfk.12 for ; Wed, 04 Oct 2017 20:33:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+Lm+n3FRzXMAhojaZ+Tdlgn0PsF8eeGH3pbNNpQpdFM=; b=EfSuZJkpvV0YPmfMJUMj6UScPKKiHQL6+9ciWlFjgbtPGmJnPMl3h8QbVa3lM0+au2 8iQoTrzr9rylc7lQZ9/dP0C4Rlatb/UKiATXGUtgLB2aUGz+zgTx9CmA9PtRTjsVmTvq N9oPZycWzfjgpQ/tEaA6Aqfn0cONnAPvwRVBs= 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=+Lm+n3FRzXMAhojaZ+Tdlgn0PsF8eeGH3pbNNpQpdFM=; b=MvoKZ+R0uS/lxaO7dJGDvBwcgN+ItrOVQV8+hE9pansXiAKE4Hn1mkZhc6io30FZP3 gNhzoRT0ed1yAsj/KzSRxMFne+uDDTAFjm9TTYgbxb+NZXD+C769gM7liX/7m7ukemLP uUfwCtWLkrZwJhVmUfQHeAiS9ys6zzxrnIirk1ypZYUZ0YvrVI9MKCJ6Xjwt0U+af95m BcaxzofGia10Q/dNmkx+jfMUIoJ2X8weLLRffxTtPmlb+IHxo9fLhcjliKIaclcqlxQ8 Vr4Yd8cslhBNvfwbEA06KO+xeO60FB5/CYAATZfbFqQmy6Gws/EnusvgGMUwhGAqLACU I4gQ== X-Gm-Message-State: AHPjjUh0+aLxRqpMAvmUH08j0vOD5FsQezSiXJWXDVKPiSikFlFx3MDc LZQMshSc8ZFfHs/EM2dOLyW1ng== X-Google-Smtp-Source: AOwi7QAKjwZ51qBX6oP/Er3TLyQqvWhe7UYcZvrzeGFhYTQbQysbwJK+qgu197vbY2xNTz+JRnpn4w== X-Received: by 10.99.166.18 with SMTP id t18mr17101762pge.403.1507174388766; Wed, 04 Oct 2017 20:33:08 -0700 (PDT) Received: from localhost.localdomain (ip68-111-217-79.sd.sd.cox.net. [68.111.217.79]) by smtp.gmail.com with ESMTPSA id h70sm28945700pfc.51.2017.10.04.20.33.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Oct 2017 20:33:08 -0700 (PDT) From: Bjorn Andersson To: Andy Gross , Rob Herring Cc: Anton Vorontsov , Colin Cross , David Brown , Frank Rowand , Kees Cook , Tony Luck , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-soc@vger.kernel.org Subject: [PATCH v3 4/5] soc: qcom: Remote filesystem memory driver Date: Wed, 4 Oct 2017 20:32:57 -0700 Message-Id: <20171005033258.12825-5-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171005033258.12825-1-bjorn.andersson@linaro.org> References: <20171005033258.12825-1-bjorn.andersson@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Qualcomm remote file system protocol is used by certain remoteprocs, in particular the modem, to read and write persistent storage in platforms where only the application CPU has physical storage access. The protocol is based on a set of QMI-encoded control-messages and a shared memory buffer for exchaning the data. This driver implements the latter, providing the user space service access to the carved out chunk of memory. Signed-off-by: Bjorn Andersson --- Changes since v2: - Renamed driver to "rmtfs_mem" in attempt to clarify that this is not a file system, but some chunk of memory. Changes since v1: - RFSA device represented direclty by the reserved-memory node drivers/of/platform.c | 1 + drivers/soc/qcom/Kconfig | 11 ++ drivers/soc/qcom/Makefile | 1 + drivers/soc/qcom/rmtfs_mem.c | 272 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 285 insertions(+) create mode 100644 drivers/soc/qcom/rmtfs_mem.c -- 2.12.0 diff --git a/drivers/of/platform.c b/drivers/of/platform.c index ee89f096f0f3..e7548c9a9915 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -498,6 +498,7 @@ EXPORT_SYMBOL_GPL(of_platform_default_populate); #ifndef CONFIG_PPC static const struct of_device_id reserved_mem_matches[] = { + { .compatible = "qcom,rmtfs-mem" }, { .compatible = "ramoops" }, {} }; diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig index 9fca977ef18d..6dff89eaf3f8 100644 --- a/drivers/soc/qcom/Kconfig +++ b/drivers/soc/qcom/Kconfig @@ -24,6 +24,17 @@ config QCOM_PM modes. It interface with various system drivers to put the cores in low power modes. +config QCOM_RMTFS_MEM + tristate "Qualcomm Remote Filesystem memory driver" + depends on ARCH_QCOM + help + The Qualcomm remote filesystem memory driver is used for allocating + and exposing regions of shared memory with remote processors for the + purpose of exchanging sector-data between the remote filesystem + service and its clients. + + Say y here if you intend to boot the modem remoteproc. + config QCOM_SMEM tristate "Qualcomm Shared Memory Manager (SMEM)" depends on ARCH_QCOM diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile index 414f0de274fa..541c1f40d126 100644 --- a/drivers/soc/qcom/Makefile +++ b/drivers/soc/qcom/Makefile @@ -1,6 +1,7 @@ obj-$(CONFIG_QCOM_GSBI) += qcom_gsbi.o obj-$(CONFIG_QCOM_MDT_LOADER) += mdt_loader.o obj-$(CONFIG_QCOM_PM) += spm.o +obj-$(CONFIG_QCOM_RMTFS_MEM) += rmtfs_mem.o obj-$(CONFIG_QCOM_SMD_RPM) += smd-rpm.o obj-$(CONFIG_QCOM_SMEM) += smem.o obj-$(CONFIG_QCOM_SMEM_STATE) += smem_state.o diff --git a/drivers/soc/qcom/rmtfs_mem.c b/drivers/soc/qcom/rmtfs_mem.c new file mode 100644 index 000000000000..2e7c955e7cf0 --- /dev/null +++ b/drivers/soc/qcom/rmtfs_mem.c @@ -0,0 +1,272 @@ +/* + * Copyright (c) 2017 Linaro Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define QCOM_RMTFS_MEM_DEV_MAX (MINORMASK + 1) + +static dev_t qcom_rmtfs_mem_major; + +struct qcom_rmtfs_mem { + struct device dev; + struct cdev cdev; + + void *base; + phys_addr_t addr; + phys_addr_t size; + + unsigned int client_id; +}; + +static ssize_t qcom_rmtfs_mem_show(struct device *dev, + struct device_attribute *attr, + char *buf); + +static DEVICE_ATTR(phys_addr, 0400, qcom_rmtfs_mem_show, NULL); +static DEVICE_ATTR(size, 0400, qcom_rmtfs_mem_show, NULL); +static DEVICE_ATTR(client_id, 0400, qcom_rmtfs_mem_show, NULL); + +static ssize_t qcom_rmtfs_mem_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct qcom_rmtfs_mem *rmtfs_mem = container_of(dev, + struct qcom_rmtfs_mem, + dev); + + if (attr == &dev_attr_phys_addr) + return sprintf(buf, "%pa\n", &rmtfs_mem->addr); + if (attr == &dev_attr_size) + return sprintf(buf, "%pa\n", &rmtfs_mem->size); + if (attr == &dev_attr_client_id) + return sprintf(buf, "%d\n", rmtfs_mem->client_id); + + return -EINVAL; +} + +static struct attribute *qcom_rmtfs_mem_attrs[] = { + &dev_attr_phys_addr.attr, + &dev_attr_size.attr, + &dev_attr_client_id.attr, + NULL +}; +ATTRIBUTE_GROUPS(qcom_rmtfs_mem); + +static int qcom_rmtfs_mem_open(struct inode *inode, struct file *filp) +{ + struct qcom_rmtfs_mem *rmtfs_mem = container_of(inode->i_cdev, + struct qcom_rmtfs_mem, + cdev); + + get_device(&rmtfs_mem->dev); + filp->private_data = rmtfs_mem; + + return 0; +} +static ssize_t qcom_rmtfs_mem_read(struct file *filp, + char __user *buf, size_t count, loff_t *f_pos) +{ + struct qcom_rmtfs_mem *rmtfs_mem = filp->private_data; + + if (*f_pos >= rmtfs_mem->size) + return 0; + + if (*f_pos + count >= rmtfs_mem->size) + count = rmtfs_mem->size - *f_pos; + + if (copy_to_user(buf, rmtfs_mem->base + *f_pos, count)) + return -EFAULT; + + *f_pos += count; + return count; +} + +static ssize_t qcom_rmtfs_mem_write(struct file *filp, + const char __user *buf, size_t count, + loff_t *f_pos) +{ + struct qcom_rmtfs_mem *rmtfs_mem = filp->private_data; + + if (*f_pos >= rmtfs_mem->size) + return 0; + + if (*f_pos + count >= rmtfs_mem->size) + count = rmtfs_mem->size - *f_pos; + + if (copy_from_user(rmtfs_mem->base + *f_pos, buf, count)) + return -EFAULT; + + *f_pos += count; + return count; +} + +static int qcom_rmtfs_mem_release(struct inode *inode, struct file *filp) +{ + struct qcom_rmtfs_mem *rmtfs_mem = filp->private_data; + + put_device(&rmtfs_mem->dev); + + return 0; +} + +static const struct file_operations qcom_rmtfs_mem_fops = { + .owner = THIS_MODULE, + .open = qcom_rmtfs_mem_open, + .read = qcom_rmtfs_mem_read, + .write = qcom_rmtfs_mem_write, + .release = qcom_rmtfs_mem_release, + .llseek = default_llseek, +}; + +static void qcom_rmtfs_mem_release_device(struct device *dev) +{ + struct qcom_rmtfs_mem *rmtfs_mem = container_of(dev, + struct qcom_rmtfs_mem, + dev); + + kfree(rmtfs_mem); +} + +static int qcom_rmtfs_mem_probe(struct platform_device *pdev) +{ + struct device_node *node = pdev->dev.of_node; + struct reserved_mem *rmem; + struct qcom_rmtfs_mem *rmtfs_mem; + u32 client_id; + int ret; + + rmem = of_reserved_mem_get(node); + if (!rmem) { + dev_err(&pdev->dev, "failed to acquire memory region\n"); + return -EINVAL; + } + + ret = of_property_read_u32(node, "qcom,client-id", &client_id); + if (ret) { + dev_err(&pdev->dev, "failed to parse \"qcom,client-id\"\n"); + return ret; + + } + + rmtfs_mem = kzalloc(sizeof(*rmtfs_mem), GFP_KERNEL); + if (!rmtfs_mem) + return -ENOMEM; + + rmtfs_mem->addr = rmem->base; + rmtfs_mem->client_id = client_id; + rmtfs_mem->size = rmem->size; + + device_initialize(&rmtfs_mem->dev); + rmtfs_mem->dev.parent = &pdev->dev; + rmtfs_mem->dev.groups = qcom_rmtfs_mem_groups; + + rmtfs_mem->base = devm_memremap(&rmtfs_mem->dev, rmtfs_mem->addr, + rmtfs_mem->size, MEMREMAP_WC); + if (IS_ERR(rmtfs_mem->base)) { + dev_err(&pdev->dev, "failed to remap rmtfs_mem region\n"); + ret = PTR_ERR(rmtfs_mem->base); + goto put_device; + } + + cdev_init(&rmtfs_mem->cdev, &qcom_rmtfs_mem_fops); + rmtfs_mem->cdev.owner = THIS_MODULE; + + dev_set_name(&rmtfs_mem->dev, "qcom_rmtfs_mem%d", client_id); + rmtfs_mem->dev.id = client_id; + rmtfs_mem->dev.devt = MKDEV(MAJOR(qcom_rmtfs_mem_major), client_id); + + ret = cdev_device_add(&rmtfs_mem->cdev, &rmtfs_mem->dev); + if (ret) { + dev_err(&pdev->dev, "failed to add cdev: %d\n", ret); + goto put_device; + } + + rmtfs_mem->dev.release = qcom_rmtfs_mem_release_device; + + dev_set_drvdata(&pdev->dev, rmtfs_mem); + + return 0; + +remove_cdev: + cdev_device_del(&rmtfs_mem->cdev, &rmtfs_mem->dev); +put_device: + put_device(&rmtfs_mem->dev); + + return ret; +} + +static int qcom_rmtfs_mem_remove(struct platform_device *pdev) +{ + struct qcom_rmtfs_mem *rmtfs_mem = dev_get_drvdata(&pdev->dev); + + cdev_device_del(&rmtfs_mem->cdev, &rmtfs_mem->dev); + put_device(&rmtfs_mem->dev); + + return 0; +} + +static const struct of_device_id qcom_rmtfs_mem_of_match[] = { + { .compatible = "qcom,rmtfs-mem" }, + {} +}; +MODULE_DEVICE_TABLE(of, qcom_rmtfs_mem_of_match); + +static struct platform_driver qcom_rmtfs_mem_driver = { + .probe = qcom_rmtfs_mem_probe, + .remove = qcom_rmtfs_mem_remove, + .driver = { + .name = "qcom_rmtfs_mem", + .of_match_table = qcom_rmtfs_mem_of_match, + }, +}; + +static int qcom_rmtfs_mem_init(void) +{ + int ret; + + ret = alloc_chrdev_region(&qcom_rmtfs_mem_major, 0, + QCOM_RMTFS_MEM_DEV_MAX, "qcom_rmtfs_mem"); + if (ret < 0) { + pr_err("qcom_rmtfs_mem: failed to allocate char dev region\n"); + return ret; + } + + ret = platform_driver_register(&qcom_rmtfs_mem_driver); + if (ret < 0) { + pr_err("qcom_rmtfs_mem: failed to register rmtfs_mem driver\n"); + unregister_chrdev_region(qcom_rmtfs_mem_major, + QCOM_RMTFS_MEM_DEV_MAX); + } + + return ret; +} +module_init(qcom_rmtfs_mem_init); + +static void qcom_rmtfs_mem_exit(void) +{ + platform_driver_unregister(&qcom_rmtfs_mem_driver); + unregister_chrdev_region(qcom_rmtfs_mem_major, QCOM_RMTFS_MEM_DEV_MAX); +} +module_exit(qcom_rmtfs_mem_exit); From patchwork Thu Oct 5 03:32:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 114830 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp132643qgn; Wed, 4 Oct 2017 20:33:37 -0700 (PDT) X-Received: by 10.98.242.16 with SMTP id m16mr21888767pfh.72.1507174417049; Wed, 04 Oct 2017 20:33:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507174417; cv=none; d=google.com; s=arc-20160816; b=av7L+YFfdeXo4BFLf6XbtWfOxQwQ5g/Jr+qDui9i/TrEmHCri+ypNuRoxHb7iJBYzc 4qViqfrzO4TW2RcbeewMF4ynVDojYCdlQ/57fQ0s4Fe3aSN1Somi/Wy09+DC6ReSjLof 4lyGfmGOYb/Zog9rRTRkBruhJ0qNYaGnPqRoWSym/TrSzmybAmamu1MSUBod2Mqbqhef 9WTj5BCG7tb/p8rWmWfo0q0y8xHcfl9o4PsuXZ0oOOASOB4H/HBscqrQbta2h2TYvuh7 pP9U3M/543Nacsbl+PpaRxEC6aLbYZnNcai0vmj9E/99GoFN+Sv0q4QzEl6MSExNDpxK RvPg== 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=c2guXmLQ5B8l1g8rjeyT+a78yYXcrk6ReQQd5IPConU=; b=ayBuP2Ynfc+/pDgJo9gL5ds3MsCr2DT4dh1+tUBvkRTwCNsNdaEaqzQnG01JSQYb6/ Nhwj5+Dx94Zb3Ud3z2ZMNvj0gNtzVYpMhceg1ydZYZCqpXM+SNuQIJUy1uz6qdL2+unX Sq4XxbBf7ZSw8q/bXYdTEWqnPQrfpd2ysB2lwBWfZSCY/zBaXZPgAW/FMd2UaL8CvFh6 3mbSZqnxl+95/S8kyNAWujZQhrM0AVw5ktg8aB8dsh9k1gqOXtABCluGIwsCraMYFnaV jkoAtg8pIN6QhxdWpQWECzx73JB9+QTxphU5Kj/4aagqIdqVa4dzTw4g0/MF6d7fpyv3 Y7Hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=I0u5rm01; 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=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l7si3332769pgn.342.2017.10.04.20.33.36; Wed, 04 Oct 2017 20:33:37 -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=@linaro.org header.s=google header.b=I0u5rm01; 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=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751557AbdJEDdf (ORCPT + 26 others); Wed, 4 Oct 2017 23:33:35 -0400 Received: from mail-pg0-f42.google.com ([74.125.83.42]:53431 "EHLO mail-pg0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751434AbdJEDdK (ORCPT ); Wed, 4 Oct 2017 23:33:10 -0400 Received: by mail-pg0-f42.google.com with SMTP id y192so253684pgd.10 for ; Wed, 04 Oct 2017 20:33:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=c2guXmLQ5B8l1g8rjeyT+a78yYXcrk6ReQQd5IPConU=; b=I0u5rm01uXEn2BPfuPScrXZI6PIPEQSYTzxZB9PFSCYU0my9faIAEhOYIVictJL+my woQfxFPwDT/pkKc4+wYaEN9FtHWBlV6AIrUIOxyKRH2At1PwjpYFQ2uTh80x2hPBibxw lAM+IdV8PeFrXcMQ79c1iorv4gmWHL6fiNgIA= 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=c2guXmLQ5B8l1g8rjeyT+a78yYXcrk6ReQQd5IPConU=; b=jAJtVSDMJUX+B5eX7Yuv/0IBiogvEVHOcvuB+VB66joJAuAJnv0vQe9eM2UOlL9qpr IcuFQk51LvPVyW6eO3FT9ESkw7HEHBHc4B38+i3oF88V1vFTdtkxFoEFMVuv3aoxp/j4 LDtp0IDo8i+XbN6s8TDZR9nNVrT3flEHxKlcCmtoh2mgQ0a0LXC9eGJ8Q1MYi9pitMQ1 0+ymugKsBi2Jh9thwXf72+znJS79IpmkKGWTAFBQKXHfQzaXnS7wM87yusj5eNt2uQRr ttjMl/hVqeT9vjtBq59MbqJw2Vw8Y2n21NP7e2qTDAg09k0pQEDNAgaP9CasUvMNUGnh be2A== X-Gm-Message-State: AHPjjUg7me2yYyggJqooVVmfW35EVZE17UV7UmACn9+fGJFlTmREVcjz kAoRQpD6IWPgjfwfN7cGblFKHg== X-Google-Smtp-Source: AOwi7QBaMblh7QarpXz3kQKG9lu3vo515sqa+irWwu6ocOzrxu9u5mGTVFxp45Gt2579vGJp3i2arQ== X-Received: by 10.84.234.137 with SMTP id n9mr21927661plk.383.1507174390226; Wed, 04 Oct 2017 20:33:10 -0700 (PDT) Received: from localhost.localdomain (ip68-111-217-79.sd.sd.cox.net. [68.111.217.79]) by smtp.gmail.com with ESMTPSA id h70sm28945700pfc.51.2017.10.04.20.33.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Oct 2017 20:33:09 -0700 (PDT) From: Bjorn Andersson To: Andy Gross Cc: Anton Vorontsov , Colin Cross , David Brown , Frank Rowand , Kees Cook , Rob Herring , Tony Luck , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-soc@vger.kernel.org Subject: [PATCH v3 5/5] arm64: dts: msm8916: Mark rmtfs node as qcom, rmtfs-mem compatible Date: Wed, 4 Oct 2017 20:32:58 -0700 Message-Id: <20171005033258.12825-6-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20171005033258.12825-1-bjorn.andersson@linaro.org> References: <20171005033258.12825-1-bjorn.andersson@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that we have a binding defined for the shared file system memory use this to describe the rmtfs memory region. Signed-off-by: Bjorn Andersson --- Changes since v2: - None Changes since v1: - New patch arch/arm64/boot/dts/qcom/msm8916.dtsi | 3 +++ 1 file changed, 3 insertions(+) -- 2.12.0 diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi index 039991f80831..f6ae6f9b27e1 100644 --- a/arch/arm64/boot/dts/qcom/msm8916.dtsi +++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi @@ -69,8 +69,11 @@ }; rmtfs@86700000 { + compatible = "qcom,rmtfs-mem"; reg = <0x0 0x86700000 0x0 0xe0000>; no-map; + + qcom,client-id = <1>; }; rfsa@867e00000 {