Commit 29d25854 authored by Marek Behún's avatar Marek Behún Committed by Arnd Bergmann

firmware: turris-mox-rwtm: Use macro constant instead of hardcoded 4096

The 4096 bytes limit in mox_hwrng_read() is due to the DMA buffer being
allocated to one PAGE_SIZE bytes. Use new local macro constant
RWTM_DMA_BUFFER_SIZE at allocation time and when used in mox_hwrng_read().

Use SZ_4K instead of PAGE_SIZE. Although PAGE_SIZE is never set to a
larger value on Armada 3720, it theoretically could, and this would be a
waste of space.
Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
Reviewed-by: default avatarAndy Shevchenko <andy@kernel.org>
Link: https://lore.kernel.org/r/20240831092050.23093-2-kabel@kernel.orgSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 47ac09b9
...@@ -11,14 +11,18 @@ ...@@ -11,14 +11,18 @@
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/hw_random.h> #include <linux/hw_random.h>
#include <linux/mailbox_client.h> #include <linux/mailbox_client.h>
#include <linux/minmax.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/sizes.h>
#include <linux/slab.h> #include <linux/slab.h>
#define DRIVER_NAME "turris-mox-rwtm" #define DRIVER_NAME "turris-mox-rwtm"
#define RWTM_DMA_BUFFER_SIZE SZ_4K
/* /*
* The macros and constants below come from Turris Mox's rWTM firmware code. * The macros and constants below come from Turris Mox's rWTM firmware code.
* This firmware is open source and it's sources can be found at * This firmware is open source and it's sources can be found at
...@@ -287,8 +291,7 @@ static int mox_hwrng_read(struct hwrng *rng, void *data, size_t max, bool wait) ...@@ -287,8 +291,7 @@ static int mox_hwrng_read(struct hwrng *rng, void *data, size_t max, bool wait)
struct armada_37xx_rwtm_tx_msg msg; struct armada_37xx_rwtm_tx_msg msg;
int ret; int ret;
if (max > 4096) max = min(max, RWTM_DMA_BUFFER_SIZE);
max = 4096;
msg.command = MBOX_CMD_GET_RANDOM; msg.command = MBOX_CMD_GET_RANDOM;
msg.args[0] = 1; msg.args[0] = 1;
...@@ -479,8 +482,8 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev) ...@@ -479,8 +482,8 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
rwtm->dev = dev; rwtm->dev = dev;
rwtm->buf = dmam_alloc_coherent(dev, PAGE_SIZE, &rwtm->buf_phys, rwtm->buf = dmam_alloc_coherent(dev, RWTM_DMA_BUFFER_SIZE,
GFP_KERNEL); &rwtm->buf_phys, GFP_KERNEL);
if (!rwtm->buf) if (!rwtm->buf)
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment