linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul Bolle <pebolle@tiscali.nl>
To: Matt Mackall <mpm@selenic.com>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Jamie Iles <jamie@jamieiles.com>
Cc: Richard Weinberger <richard@nod.at>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] hwrng: remove unbuildable picoxcell TRNG
Date: Tue, 15 Apr 2014 10:55:18 +0200	[thread overview]
Message-ID: <1397552118.1985.16.camel@x220> (raw)
In-Reply-To: <1391977683.25855.27.camel@x220>

The driver for the "Picochip picoXcell true random number generator" was
added in v2.6.39. Its Kconfig symbol has always depended on
PICOXCELL_PC3X3. But that Kconfig symbol has never been part of the
tree. This means this driver has never been buildable. Let's remove it.
It can be re-added if its dependencies are actually part of the tree.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
---
Tested only by grepping the tree!

 drivers/char/hw_random/Kconfig         |  12 ---
 drivers/char/hw_random/Makefile        |   1 -
 drivers/char/hw_random/picoxcell-rng.c | 181 ---------------------------------
 3 files changed, 194 deletions(-)
 delete mode 100644 drivers/char/hw_random/picoxcell-rng.c

diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 244759bbd7b7..d994c85a923c 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -251,18 +251,6 @@ config HW_RANDOM_NOMADIK
 
 	  If unsure, say Y.
 
-config HW_RANDOM_PICOXCELL
-	tristate "Picochip picoXcell true random number generator support"
-	depends on HW_RANDOM && ARCH_PICOXCELL && PICOXCELL_PC3X3
-	---help---
-	  This driver provides kernel-side support for the Random Number
-	  Generator hardware found on Picochip PC3x3 and later devices.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called picoxcell-rng.
-
-	  If unsure, say Y.
-
 config HW_RANDOM_PPC4XX
 	tristate "PowerPC 4xx generic true random number generator support"
 	depends on HW_RANDOM && PPC && 4xx
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index 3ae7755a52e7..199ed283e149 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -22,7 +22,6 @@ obj-$(CONFIG_HW_RANDOM_TX4939) += tx4939-rng.o
 obj-$(CONFIG_HW_RANDOM_MXC_RNGA) += mxc-rnga.o
 obj-$(CONFIG_HW_RANDOM_OCTEON) += octeon-rng.o
 obj-$(CONFIG_HW_RANDOM_NOMADIK) += nomadik-rng.o
-obj-$(CONFIG_HW_RANDOM_PICOXCELL) += picoxcell-rng.o
 obj-$(CONFIG_HW_RANDOM_PPC4XX) += ppc4xx-rng.o
 obj-$(CONFIG_HW_RANDOM_PSERIES) += pseries-rng.o
 obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o
diff --git a/drivers/char/hw_random/picoxcell-rng.c b/drivers/char/hw_random/picoxcell-rng.c
deleted file mode 100644
index eab5448ad56f..000000000000
--- a/drivers/char/hw_random/picoxcell-rng.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 2010-2011 Picochip Ltd., Jamie Iles
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * All enquiries to support@picochip.com
- */
-#include <linux/clk.h>
-#include <linux/delay.h>
-#include <linux/err.h>
-#include <linux/hw_random.h>
-#include <linux/io.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-
-#define DATA_REG_OFFSET		0x0200
-#define CSR_REG_OFFSET		0x0278
-#define CSR_OUT_EMPTY_MASK	(1 << 24)
-#define CSR_FAULT_MASK		(1 << 1)
-#define TRNG_BLOCK_RESET_MASK	(1 << 0)
-#define TAI_REG_OFFSET		0x0380
-
-/*
- * The maximum amount of time in microseconds to spend waiting for data if the
- * core wants us to wait.  The TRNG should generate 32 bits every 320ns so a
- * timeout of 20us seems reasonable.  The TRNG does builtin tests of the data
- * for randomness so we can't always assume there is data present.
- */
-#define PICO_TRNG_TIMEOUT		20
-
-static void __iomem *rng_base;
-static struct clk *rng_clk;
-static struct device *rng_dev;
-
-static inline u32 picoxcell_trng_read_csr(void)
-{
-	return __raw_readl(rng_base + CSR_REG_OFFSET);
-}
-
-static inline bool picoxcell_trng_is_empty(void)
-{
-	return picoxcell_trng_read_csr() & CSR_OUT_EMPTY_MASK;
-}
-
-/*
- * Take the random number generator out of reset and make sure the interrupts
- * are masked. We shouldn't need to get large amounts of random bytes so just
- * poll the status register. The hardware generates 32 bits every 320ns so we
- * shouldn't have to wait long enough to warrant waiting for an IRQ.
- */
-static void picoxcell_trng_start(void)
-{
-	__raw_writel(0, rng_base + TAI_REG_OFFSET);
-	__raw_writel(0, rng_base + CSR_REG_OFFSET);
-}
-
-static void picoxcell_trng_reset(void)
-{
-	__raw_writel(TRNG_BLOCK_RESET_MASK, rng_base + CSR_REG_OFFSET);
-	__raw_writel(TRNG_BLOCK_RESET_MASK, rng_base + TAI_REG_OFFSET);
-	picoxcell_trng_start();
-}
-
-/*
- * Get some random data from the random number generator. The hw_random core
- * layer provides us with locking.
- */
-static int picoxcell_trng_read(struct hwrng *rng, void *buf, size_t max,
-			       bool wait)
-{
-	int i;
-
-	/* Wait for some data to become available. */
-	for (i = 0; i < PICO_TRNG_TIMEOUT && picoxcell_trng_is_empty(); ++i) {
-		if (!wait)
-			return 0;
-
-		udelay(1);
-	}
-
-	if (picoxcell_trng_read_csr() & CSR_FAULT_MASK) {
-		dev_err(rng_dev, "fault detected, resetting TRNG\n");
-		picoxcell_trng_reset();
-		return -EIO;
-	}
-
-	if (i == PICO_TRNG_TIMEOUT)
-		return 0;
-
-	*(u32 *)buf = __raw_readl(rng_base + DATA_REG_OFFSET);
-	return sizeof(u32);
-}
-
-static struct hwrng picoxcell_trng = {
-	.name		= "picoxcell",
-	.read		= picoxcell_trng_read,
-};
-
-static int picoxcell_trng_probe(struct platform_device *pdev)
-{
-	int ret;
-	struct resource *mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-
-	rng_base = devm_ioremap_resource(&pdev->dev, mem);
-	if (IS_ERR(rng_base))
-		return PTR_ERR(rng_base);
-
-	rng_clk = devm_clk_get(&pdev->dev, NULL);
-	if (IS_ERR(rng_clk)) {
-		dev_warn(&pdev->dev, "no clk\n");
-		return PTR_ERR(rng_clk);
-	}
-
-	ret = clk_enable(rng_clk);
-	if (ret) {
-		dev_warn(&pdev->dev, "unable to enable clk\n");
-		return ret;
-	}
-
-	picoxcell_trng_start();
-	ret = hwrng_register(&picoxcell_trng);
-	if (ret)
-		goto err_register;
-
-	rng_dev = &pdev->dev;
-	dev_info(&pdev->dev, "pixoxcell random number generator active\n");
-
-	return 0;
-
-err_register:
-	clk_disable(rng_clk);
-	return ret;
-}
-
-static int picoxcell_trng_remove(struct platform_device *pdev)
-{
-	hwrng_unregister(&picoxcell_trng);
-	clk_disable(rng_clk);
-
-	return 0;
-}
-
-#ifdef CONFIG_PM
-static int picoxcell_trng_suspend(struct device *dev)
-{
-	clk_disable(rng_clk);
-
-	return 0;
-}
-
-static int picoxcell_trng_resume(struct device *dev)
-{
-	return clk_enable(rng_clk);
-}
-
-static const struct dev_pm_ops picoxcell_trng_pm_ops = {
-	.suspend	= picoxcell_trng_suspend,
-	.resume		= picoxcell_trng_resume,
-};
-#endif /* CONFIG_PM */
-
-static struct platform_driver picoxcell_trng_driver = {
-	.probe		= picoxcell_trng_probe,
-	.remove		= picoxcell_trng_remove,
-	.driver		= {
-		.name	= "picoxcell-trng",
-		.owner	= THIS_MODULE,
-#ifdef CONFIG_PM
-		.pm	= &picoxcell_trng_pm_ops,
-#endif /* CONFIG_PM */
-	},
-};
-
-module_platform_driver(picoxcell_trng_driver);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Jamie Iles");
-MODULE_DESCRIPTION("Picochip picoXcell TRNG driver");
-- 
1.9.0


  reply	other threads:[~2014-04-15  8:55 UTC|newest]

Thread overview: 173+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-09 18:47 Remove orphan kconfig symbols Richard Weinberger
2014-02-09 18:47 ` [PATCH 01/28] Remove CPU_MMP3 Richard Weinberger
2014-02-09 22:07   ` Paul Bolle
2014-02-11 21:30   ` Greg Kroah-Hartman
2014-02-11 22:01     ` Paul Bolle
2014-02-12  7:52       ` Geert Uytterhoeven
2014-02-09 18:47 ` [PATCH 02/28] Remove OF_I2C Richard Weinberger
2014-02-09 19:58   ` Paul Bolle
2014-03-13 21:39   ` Wolfram Sang
2014-02-09 18:47 ` [PATCH 03/28] Remove MACH_BCM2708 Richard Weinberger
2014-02-09 20:02   ` Paul Bolle
2014-02-09 18:47 ` [PATCH 04/28] Remove EXYNOS_DEV_SYSMMU Richard Weinberger
2014-02-09 20:08   ` Paul Bolle
2014-02-10  4:32     ` Sachin Kamat
2014-04-15  9:33       ` Paul Bolle
2014-02-09 18:47 ` [PATCH 05/28] Remove MPILIB_EXTRA Richard Weinberger
2014-02-09 20:18   ` Paul Bolle
2014-04-15  9:06     ` Paul Bolle
2014-04-15  9:21       ` Borislav Petkov
2014-06-18  8:09         ` Paul Bolle
2014-06-18  9:48           ` Borislav Petkov
2014-06-18 10:38             ` Jiri Kosina
2014-06-18 14:18               ` [PATCH] [TRIVIAL] " Paul Bolle
2014-02-09 18:47 ` [PATCH 06/28] Remove PICOXCELL_PC3X3 Richard Weinberger
2014-02-09 20:28   ` Paul Bolle
2014-04-15  8:55     ` Paul Bolle [this message]
2014-04-15 10:06       ` [PATCH] hwrng: remove unbuildable picoxcell TRNG Jamie Iles
2014-04-16 13:50         ` Herbert Xu
2014-02-09 18:47 ` [PATCH 07/28] Remove CPU_PXA988 Richard Weinberger
2014-02-09 22:24   ` Paul Bolle
     [not found]     ` <52F800B2.6010702@nod.at>
2014-04-15  7:47       ` Paul Bolle
2014-04-15  7:50         ` Richard Weinberger
2014-02-09 18:47 ` [PATCH 08/28] Remove SYS_HAS_DMA_OPS Richard Weinberger
2014-02-09 21:44   ` Paul Bolle
2014-02-09 18:47 ` [PATCH 09/28] Remove ATHEROS_AR231X Richard Weinberger
2014-02-09 19:09   ` Joe Perches
2014-02-09 19:43     ` Paul Bolle
     [not found]   ` <52F7D480.1050106@hauke-m.de>
2014-02-09 20:03     ` Richard Weinberger
2014-02-10 12:05       ` Sergey Ryazanov
2014-02-10 12:17         ` Oleksij Rempel
2014-02-10 12:38           ` Sergey Ryazanov
2014-02-10 22:37             ` Florian Fainelli
2014-02-10 23:43               ` Sergey Ryazanov
2014-02-12 10:50                 ` Sergey Ryazanov
2014-02-13 20:14                   ` John W. Linville
2014-04-15 17:08                     ` Paul Bolle
2014-04-16  9:20                       ` Sergey Ryazanov
2014-06-18 10:25                         ` Paul Bolle
2014-06-18 11:10                           ` Sergey Ryazanov
2014-06-18 11:46                             ` Paul Bolle
2014-06-18 13:15                               ` [ath5k-devel] " Holger Schurig
2014-06-18 13:42                                 ` Paul Bolle
2014-09-05 10:10                               ` Paul Bolle
2014-09-05 11:12                                 ` Sergey Ryazanov
2014-09-05 11:33                                   ` Paul Bolle
2014-09-05 12:02                                     ` Sergey Ryazanov
2014-09-09 18:27                                       ` John W. Linville
2014-09-10  8:53                                         ` [PATCH] [RESEND] ath5k: Remove AHB bus support Paul Bolle
2014-09-26 17:45                                           ` John W. Linville
2014-09-10 10:33                                         ` [PATCH 09/28] Remove ATHEROS_AR231X Sergey Ryazanov
2014-09-10 11:36                                           ` Jiri Slaby
2014-09-10 12:19                                             ` Sergey Ryazanov
2014-09-11 19:21                                               ` John W. Linville
2014-09-15 18:45                                                 ` John W. Linville
2014-09-16 20:26                                                   ` Paul Bolle
2014-09-16 20:33                                                     ` John W. Linville
2014-02-09 18:47 ` [PATCH 10/28] Remove SH_MOBILE Richard Weinberger
2014-02-09 20:32   ` Paul Bolle
2014-02-09 18:47 ` [PATCH 11/28] Remove ARCH_SUPPORTS_MSI Richard Weinberger
2014-02-09 20:35   ` Paul Bolle
2014-02-09 18:47 ` [PATCH 12/28] Remove GENERIC_TIME Richard Weinberger
2014-02-09 18:57   ` Alexander Shiyan
2014-02-09 20:02     ` Richard Weinberger
2014-02-19  6:12       ` Christian Daudt
2014-02-09 18:47 ` [PATCH 13/28] Remove S3C24XX_GPIO_EXTRA64 Richard Weinberger
2014-02-11  3:29   ` Kukjin Kim
2014-02-09 18:47 ` [PATCH 15/28] Remove TI_AEMIF Richard Weinberger
2014-02-09 20:54   ` Paul Bolle
2014-02-11 19:04     ` Brian Norris
2014-02-11 19:42       ` Ivan Khoronzhuk
2014-02-09 18:47 ` [PATCH 16/28] Remove GENERIC_HAS_IOMAP Richard Weinberger
2014-02-09 20:59   ` Paul Bolle
2014-02-09 21:37     ` Guenter Roeck
2014-02-10  2:24   ` Lennox Wu
2014-04-15  9:19     ` Paul Bolle
2014-04-16 17:29       ` Lennox Wu
2014-04-16 18:30         ` Paul Bolle
2014-06-18  9:10           ` Paul Bolle
2014-06-18 19:53             ` Lennox Wu
2014-09-05  9:32               ` Paul Bolle
2014-09-05 13:57                 ` Guenter Roeck
2014-09-05 14:00                   ` Richard Weinberger
2014-09-05 18:23                     ` Lennox Wu
2014-02-09 18:47 ` [PATCH 17/28] Remove USE_GENERIC_SMP_HELPERS Richard Weinberger
2014-02-09 21:04   ` Paul Bolle
2014-02-09 18:47 ` [PATCH 18/28] Remove MN10300_PROC_MN2WS0038 Richard Weinberger
2014-02-09 20:44   ` Paul Bolle
2014-02-09 18:47 ` [PATCH 19/28] Remove SI4713 Richard Weinberger
2014-02-09 19:13   ` Hans Verkuil
2014-02-09 20:03     ` Richard Weinberger
2014-02-09 18:47 ` [PATCH 20/28] Remove OMAP_PM_SRF Richard Weinberger
2014-02-09 19:55   ` Paul Bolle
2014-02-09 18:47 ` [PATCH 21/28] Remove CPU_SUBTYPE_SH7764 Richard Weinberger
2014-02-09 21:36   ` Paul Bolle
2014-04-15  9:39     ` Paul Bolle
2014-04-15  9:55       ` Geert Uytterhoeven
2014-06-18  9:32         ` [PATCH] " Paul Bolle
2014-06-18 19:08           ` Paul Bolle
2014-02-09 18:48 ` [PATCH 22/28] Remove S3C24XX_GPIO_EXTRA128 Richard Weinberger
2014-02-11  3:31   ` Kukjin Kim
2014-02-13 22:57     ` Kukjin Kim
2014-02-09 18:48 ` [PATCH 23/28] Remove MACH_OMAP_H4_OTG Richard Weinberger
2014-02-09 19:57   ` Aaro Koskinen
2014-02-09 18:48 ` [PATCH 24/28] Remove DEPRECATED Richard Weinberger
2014-02-09 19:38   ` Paul Bolle
2014-02-09 20:04     ` Richard Weinberger
2014-02-09 20:15       ` Paul Bolle
2014-02-09 20:21         ` Richard Weinberger
2014-02-10  8:49           ` Geert Uytterhoeven
2014-02-10  8:52             ` Richard Weinberger
2014-06-18  8:47               ` Paul Bolle
2014-02-09 21:35       ` Guenter Roeck
2014-02-09 21:38         ` Richard Weinberger
2014-02-09 21:54           ` Gene Heskett
2014-02-09 22:11             ` Paul Bolle
2014-02-09 22:41               ` Gene Heskett
2014-02-09 22:48                 ` Paul Bolle
2014-02-09 23:05                   ` Gene Heskett
2014-02-10  3:07                     ` Ken Moffat
2014-02-10  3:13                       ` Randy Dunlap
2014-02-10  3:46                         ` Gene Heskett
2014-02-10  3:57                           ` Randy Dunlap
2014-02-10  4:14                             ` make oldfonfig broken Gene Heskett
2014-02-10  4:17                               ` Randy Dunlap
2014-02-10  4:32                                 ` Gene Heskett
2014-02-10  5:01                                   ` Randy Dunlap
2014-02-10  9:52                                     ` Gene Heskett
2014-02-10 20:21                                     ` Gene Heskett
2014-02-10 22:55                                       ` Randy Dunlap
2014-02-11  0:13                                         ` Gene Heskett
2014-02-11  2:18                                           ` Randy Dunlap
2014-02-11 18:22                                           ` Randy Dunlap
2014-02-11 19:45                                             ` Gene Heskett
2014-02-11 20:10                                             ` Gene Heskett
2014-02-09 23:16           ` [PATCH 24/28] Remove DEPRECATED Guenter Roeck
2014-02-09 18:48 ` [PATCH 26/28] Remove LOCAL_TIMERS Richard Weinberger
2014-02-09 22:38   ` Paul Bolle
2014-02-09 18:48 ` [PATCH 27/28] Remove ARC_HAS_COH_RTSC Richard Weinberger
2014-02-09 19:46   ` Paul Bolle
2014-02-10  4:35     ` Vineet Gupta
2014-02-10 13:48       ` Paul Bolle
2014-02-10 14:06         ` Vineet Gupta
2014-02-10 15:08           ` Paul Bolle
2014-02-10  4:23   ` Vineet Gupta
2014-02-09 18:48 ` [PATCH 28/28] Remove LOCAL_TIMERS Richard Weinberger
2014-02-09 22:49   ` Paul Bolle
2014-02-10  0:58 ` Remove orphan kconfig symbols Paul Bolle
2014-02-10 11:00   ` Mark Brown
2014-02-10 13:16     ` Paul Bolle
     [not found] ` <1391971686-9517-15-git-send-email-richard@nod.at>
2014-02-10 11:41   ` [PATCH 14/28] Remove MACH_SMDKC210 Mark Brown
2014-02-10 13:31     ` Paul Bolle
2014-02-10 14:12       ` Mark Brown
2014-02-10 15:30         ` Paul Bolle
2014-02-10 16:36           ` Mark Brown
2014-02-10 22:09             ` Paul Bolle
2014-02-12 16:04               ` Mark Brown
2014-02-28 21:43                 ` Paul Bolle
2014-03-01  3:53                   ` Mark Brown
2014-02-10 14:58 ` [PATCH 18/28] Remove MN10300_PROC_MN2WS0038 David Howells
2014-04-15  9:13   ` Paul Bolle
2014-06-18  9:42     ` Paul Bolle
2014-09-05  9:45       ` Paul Bolle
2014-09-12 12:36         ` [PATCH] [TRIVIAL] " Paul Bolle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1397552118.1985.16.camel@x220 \
    --to=pebolle@tiscali.nl \
    --cc=herbert@gondor.apana.org.au \
    --cc=jamie@jamieiles.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --cc=richard@nod.at \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).