* [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver @ 2016-06-10 8:21 Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 1/3] char: hw_random: Add Amlogic Meson Hardware Random Generator Neil Armstrong ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Neil Armstrong @ 2016-06-10 8:21 UTC (permalink / raw) To: Matt Mackall, Herbert Xu Cc: Neil Armstrong, linux-arm-kernel, linux-amlogic, linux-kernel, linux-crypto Add support for the Amlogic Meson SoCs Hardware Random generator as a hw_random char driver. The generator is a single 32bit wide register. Also adds the Meson GXBB SoC DTSI node and corresponding DT bindings. Changes since v1 at http://lkml.kernel.org/r/1464943621-18278-1-git-send-email-narmstrong@baylibre.com : - change to depend on ARCH_MESON || COMPILE_TEST - check buffer max size in read Neil Armstrong (3): char: hw_random: Add Amlogic Meson Hardware Random Generator dt-bindings: hwrng: Add Amlogic Meson Hardware Random Generator bindings ARM64: dts: meson-gxbb: Add Hardware Random Generator node .../devicetree/bindings/rng/amlogic,meson-rng.txt | 14 +++ arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 5 + drivers/char/hw_random/Kconfig | 14 +++ drivers/char/hw_random/Makefile | 1 + drivers/char/hw_random/meson-rng.c | 131 +++++++++++++++++++++ 5 files changed, 165 insertions(+) create mode 100644 Documentation/devicetree/bindings/rng/amlogic,meson-rng.txt create mode 100644 drivers/char/hw_random/meson-rng.c -- 2.7.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 1/3] char: hw_random: Add Amlogic Meson Hardware Random Generator 2016-06-10 8:21 [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Neil Armstrong @ 2016-06-10 8:21 ` Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 2/3] dt-bindings: hwrng: Add Amlogic Meson Hardware Random Generator bindings Neil Armstrong ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: Neil Armstrong @ 2016-06-10 8:21 UTC (permalink / raw) To: Matt Mackall, Herbert Xu Cc: Neil Armstrong, linux-arm-kernel, linux-amlogic, linux-kernel, linux-crypto Add support for the Amlogic Meson SoCs hardware random generator. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- drivers/char/hw_random/Kconfig | 14 ++++ drivers/char/hw_random/Makefile | 1 + drivers/char/hw_random/meson-rng.c | 131 +++++++++++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+) create mode 100644 drivers/char/hw_random/meson-rng.c diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig index ac51149..8558a61 100644 --- a/drivers/char/hw_random/Kconfig +++ b/drivers/char/hw_random/Kconfig @@ -396,6 +396,20 @@ config HW_RANDOM_PIC32 If unsure, say Y. +config HW_RANDOM_MESON + tristate "Amlogic Meson Random Number Generator support" + depends on HW_RANDOM + depends on ARCH_MESON || COMPILE_TEST + default y + ---help--- + This driver provides kernel-side support for the Random Number + Generator hardware found on Amlogic Meson SoCs. + + To compile this driver as a module, choose M here. the + module will be called meson-rng. + + If unsure, say Y. + endif # HW_RANDOM config UML_RANDOM diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile index 63022b4..04bb0b0 100644 --- a/drivers/char/hw_random/Makefile +++ b/drivers/char/hw_random/Makefile @@ -34,3 +34,4 @@ obj-$(CONFIG_HW_RANDOM_ST) += st-rng.o obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o obj-$(CONFIG_HW_RANDOM_STM32) += stm32-rng.o obj-$(CONFIG_HW_RANDOM_PIC32) += pic32-rng.o +obj-$(CONFIG_HW_RANDOM_MESON) += meson-rng.o diff --git a/drivers/char/hw_random/meson-rng.c b/drivers/char/hw_random/meson-rng.c new file mode 100644 index 0000000..0cfd81b --- /dev/null +++ b/drivers/char/hw_random/meson-rng.c @@ -0,0 +1,131 @@ +/* + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * GPL LICENSE SUMMARY + * + * Copyright (c) 2016 BayLibre, SAS. + * Author: Neil Armstrong <narmstrong@baylibre.com> + * Copyright (C) 2014 Amlogic, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + * The full GNU General Public License is included in this distribution + * in the file called COPYING. + * + * BSD LICENSE + * + * Copyright (c) 2016 BayLibre, SAS. + * Author: Neil Armstrong <narmstrong@baylibre.com> + * Copyright (C) 2014 Amlogic, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include <linux/err.h> +#include <linux/module.h> +#include <linux/io.h> +#include <linux/platform_device.h> +#include <linux/hw_random.h> +#include <linux/slab.h> +#include <linux/types.h> +#include <linux/of.h> + +#define RNG_DATA 0x00 + +struct meson_rng_data { + void __iomem *base; + struct platform_device *pdev; + struct hwrng rng; +}; + +static int meson_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) +{ + struct meson_rng_data *data = + container_of(rng, struct meson_rng_data, rng); + + if (max < sizeof(u32)) + return 0; + + *(u32 *)buf = readl_relaxed(data->base + RNG_DATA); + + return sizeof(u32); +} + +static int meson_rng_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct meson_rng_data *data; + struct resource *res; + + data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + data->pdev = pdev; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + data->base = devm_ioremap_resource(dev, res); + if (IS_ERR(data->base)) + return PTR_ERR(data->base); + + data->rng.name = pdev->name; + data->rng.read = meson_rng_read; + + platform_set_drvdata(pdev, data); + + return devm_hwrng_register(dev, &data->rng); +} + +static const struct of_device_id meson_rng_of_match[] = { + { .compatible = "amlogic,meson-rng", }, + {}, +}; + +static struct platform_driver meson_rng_driver = { + .probe = meson_rng_probe, + .driver = { + .name = "meson-rng", + .of_match_table = meson_rng_of_match, + }, +}; + +module_platform_driver(meson_rng_driver); + +MODULE_ALIAS("platform:meson-rng"); +MODULE_DESCRIPTION("Meson H/W Random Number Generator driver"); +MODULE_AUTHOR("Lawrence Mok <lawrence.mok@amlogic.com>"); +MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>"); +MODULE_LICENSE("Dual BSD/GPL"); -- 2.7.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/3] dt-bindings: hwrng: Add Amlogic Meson Hardware Random Generator bindings 2016-06-10 8:21 [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 1/3] char: hw_random: Add Amlogic Meson Hardware Random Generator Neil Armstrong @ 2016-06-10 8:21 ` Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 3/3] ARM64: dts: meson-gxbb: Add Hardware Random Generator node Neil Armstrong 2016-06-13 12:31 ` [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Herbert Xu 3 siblings, 0 replies; 9+ messages in thread From: Neil Armstrong @ 2016-06-10 8:21 UTC (permalink / raw) To: Matt Mackall, Herbert Xu Cc: Neil Armstrong, linux-arm-kernel, linux-amlogic, linux-kernel, linux-crypto, devicetree Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- .../devicetree/bindings/rng/amlogic,meson-rng.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Documentation/devicetree/bindings/rng/amlogic,meson-rng.txt diff --git a/Documentation/devicetree/bindings/rng/amlogic,meson-rng.txt b/Documentation/devicetree/bindings/rng/amlogic,meson-rng.txt new file mode 100644 index 0000000..202f2d0 --- /dev/null +++ b/Documentation/devicetree/bindings/rng/amlogic,meson-rng.txt @@ -0,0 +1,14 @@ +Amlogic Meson Random number generator +===================================== + +Required properties: + +- compatible : should be "amlogic,meson-rng" +- reg : Specifies base physical address and size of the registers. + +Example: + +rng { + compatible = "amlogic,meson-rng"; + reg = <0x0 0xc8834000 0x0 0x4>; +}; -- 2.7.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/3] ARM64: dts: meson-gxbb: Add Hardware Random Generator node 2016-06-10 8:21 [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 1/3] char: hw_random: Add Amlogic Meson Hardware Random Generator Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 2/3] dt-bindings: hwrng: Add Amlogic Meson Hardware Random Generator bindings Neil Armstrong @ 2016-06-10 8:21 ` Neil Armstrong 2016-06-13 22:09 ` Kevin Hilman 2016-06-13 12:31 ` [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Herbert Xu 3 siblings, 1 reply; 9+ messages in thread From: Neil Armstrong @ 2016-06-10 8:21 UTC (permalink / raw) To: Matt Mackall, Herbert Xu Cc: Neil Armstrong, linux-arm-kernel, linux-amlogic, linux-kernel, linux-crypto, devicetree Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi index 832815d..8353621 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi @@ -167,6 +167,11 @@ }; }; + rng { + compatible = "amlogic,meson-rng"; + reg = <0x0 0xc8834000 0x0 0x4>; + }; + apb: apb@d0000000 { compatible = "simple-bus"; reg = <0x0 0xd0000000 0x0 0x200000>; -- 2.7.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/3] ARM64: dts: meson-gxbb: Add Hardware Random Generator node 2016-06-10 8:21 ` [PATCH v2 3/3] ARM64: dts: meson-gxbb: Add Hardware Random Generator node Neil Armstrong @ 2016-06-13 22:09 ` Kevin Hilman 2016-06-14 4:59 ` Neil Armstrong 0 siblings, 1 reply; 9+ messages in thread From: Kevin Hilman @ 2016-06-13 22:09 UTC (permalink / raw) To: Neil Armstrong Cc: Matt Mackall, Herbert Xu, devicetree, linux-kernel, linux-crypto, linux-amlogic, linux-arm-kernel Hi Neil, Neil Armstrong <narmstrong@baylibre.com> writes: > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> > --- > arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi > index 832815d..8353621 100644 > --- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi > +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi > @@ -167,6 +167,11 @@ > }; > }; > > + rng { > + compatible = "amlogic,meson-rng"; > + reg = <0x0 0xc8834000 0x0 0x4>; > + }; This should be under the periphs bus, with an offset of 0x0 instead of at the top level. See the for-next branch in the linux-amlogic tree[1] which has separate busses for periphs and hiu. Kevin [1] git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic.git ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/3] ARM64: dts: meson-gxbb: Add Hardware Random Generator node 2016-06-13 22:09 ` Kevin Hilman @ 2016-06-14 4:59 ` Neil Armstrong 0 siblings, 0 replies; 9+ messages in thread From: Neil Armstrong @ 2016-06-14 4:59 UTC (permalink / raw) To: Kevin Hilman Cc: Matt Mackall, Herbert Xu, devicetree, linux-kernel, linux-crypto, linux-amlogic, linux-arm-kernel On 06/14/2016 12:09 AM, Kevin Hilman wrote: > Hi Neil, > > Neil Armstrong <narmstrong@baylibre.com> writes: > >> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> >> --- >> arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi >> index 832815d..8353621 100644 >> --- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi >> +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi >> @@ -167,6 +167,11 @@ >> }; >> }; >> >> + rng { >> + compatible = "amlogic,meson-rng"; >> + reg = <0x0 0xc8834000 0x0 0x4>; >> + }; > > This should be under the periphs bus, with an offset of 0x0 instead of > at the top level. > > See the for-next branch in the linux-amlogic tree[1] which has separate > busses for periphs and hiu. Yes, It was introduced lately. Herbert, I'll repost this patch separately to arm-soc directly rebased on [1]. Thanks, Neil > Kevin > > [1] git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic.git > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver 2016-06-10 8:21 [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Neil Armstrong ` (2 preceding siblings ...) 2016-06-10 8:21 ` [PATCH v2 3/3] ARM64: dts: meson-gxbb: Add Hardware Random Generator node Neil Armstrong @ 2016-06-13 12:31 ` Herbert Xu 2016-06-13 22:10 ` Kevin Hilman 3 siblings, 1 reply; 9+ messages in thread From: Herbert Xu @ 2016-06-13 12:31 UTC (permalink / raw) To: Neil Armstrong Cc: Matt Mackall, linux-arm-kernel, linux-amlogic, linux-kernel, linux-crypto On Fri, Jun 10, 2016 at 10:21:52AM +0200, Neil Armstrong wrote: > Add support for the Amlogic Meson SoCs Hardware Random generator as a hw_random char driver. > The generator is a single 32bit wide register. > Also adds the Meson GXBB SoC DTSI node and corresponding DT bindings. > > Changes since v1 at http://lkml.kernel.org/r/1464943621-18278-1-git-send-email-narmstrong@baylibre.com : > - change to depend on ARCH_MESON || COMPILE_TEST > - check buffer max size in read > > Neil Armstrong (3): > char: hw_random: Add Amlogic Meson Hardware Random Generator > dt-bindings: hwrng: Add Amlogic Meson Hardware Random Generator > bindings > ARM64: dts: meson-gxbb: Add Hardware Random Generator node All applied. Thanks. -- Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver 2016-06-13 12:31 ` [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Herbert Xu @ 2016-06-13 22:10 ` Kevin Hilman 2016-06-14 10:33 ` Herbert Xu 0 siblings, 1 reply; 9+ messages in thread From: Kevin Hilman @ 2016-06-13 22:10 UTC (permalink / raw) To: Herbert Xu Cc: Neil Armstrong, linux-crypto, linux-amlogic, linux-kernel, linux-arm-kernel, Matt Mackall Hi Herbert, Herbert Xu <herbert@gondor.apana.org.au> writes: > On Fri, Jun 10, 2016 at 10:21:52AM +0200, Neil Armstrong wrote: >> Add support for the Amlogic Meson SoCs Hardware Random generator as a hw_random char driver. >> The generator is a single 32bit wide register. >> Also adds the Meson GXBB SoC DTSI node and corresponding DT bindings. >> >> Changes since v1 at http://lkml.kernel.org/r/1464943621-18278-1-git-send-email-narmstrong@baylibre.com : >> - change to depend on ARCH_MESON || COMPILE_TEST >> - check buffer max size in read >> >> Neil Armstrong (3): >> char: hw_random: Add Amlogic Meson Hardware Random Generator >> dt-bindings: hwrng: Add Amlogic Meson Hardware Random Generator >> bindings >> ARM64: dts: meson-gxbb: Add Hardware Random Generator node > > All applied. Thanks. Could you take just the driver please? Due to lots of other activity in the DT, I'd prefer to send the DT & bindings though the arm-soc (via the amlogic tree.) Thanks, Kevin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver 2016-06-13 22:10 ` Kevin Hilman @ 2016-06-14 10:33 ` Herbert Xu 0 siblings, 0 replies; 9+ messages in thread From: Herbert Xu @ 2016-06-14 10:33 UTC (permalink / raw) To: Kevin Hilman Cc: Neil Armstrong, linux-crypto, linux-amlogic, linux-kernel, linux-arm-kernel, Matt Mackall On Mon, Jun 13, 2016 at 03:10:28PM -0700, Kevin Hilman wrote: > Could you take just the driver please? > > Due to lots of other activity in the DT, I'd prefer to send the DT & > bindings though the arm-soc (via the amlogic tree.) OK I will back out these two patches. Cheers, -- Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-06-14 10:33 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-06-10 8:21 [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 1/3] char: hw_random: Add Amlogic Meson Hardware Random Generator Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 2/3] dt-bindings: hwrng: Add Amlogic Meson Hardware Random Generator bindings Neil Armstrong 2016-06-10 8:21 ` [PATCH v2 3/3] ARM64: dts: meson-gxbb: Add Hardware Random Generator node Neil Armstrong 2016-06-13 22:09 ` Kevin Hilman 2016-06-14 4:59 ` Neil Armstrong 2016-06-13 12:31 ` [PATCH v2 0/3] hw_random: Add Amlogic Meson SoCs Random Generator driver Herbert Xu 2016-06-13 22:10 ` Kevin Hilman 2016-06-14 10:33 ` Herbert Xu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).