lkml.org 
[lkml]   [2017]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 2/2] hwmon: xgene: Support PCC shared memory in IO region
Date
As the PCC shared memory could be in IO region which doesn't
support caching, this patch simply uses ioremap() for IO region.

Signed-off-by: Hoan Tran <hotran@apm.com>
---
drivers/hwmon/xgene-hwmon.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/hwmon/xgene-hwmon.c b/drivers/hwmon/xgene-hwmon.c
index 5cd327e..2dac1ed 100644
--- a/drivers/hwmon/xgene-hwmon.c
+++ b/drivers/hwmon/xgene-hwmon.c
@@ -32,6 +32,7 @@
#include <linux/kfifo.h>
#include <linux/mailbox_controller.h>
#include <linux/mailbox_client.h>
+#include <linux/memblock.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
@@ -135,6 +136,14 @@ static u16 xgene_word_tst_and_clr(u16 *addr, u16 mask)
return ret;
}

+static void __iomem *pcc_ioremap(phys_addr_t phys, size_t size)
+{
+ if (!memblock_is_memory(phys))
+ return ioremap(phys, size);
+
+ return memremap(phys, size, MEMREMAP_WB);
+}
+
static int xgene_hwmon_pcc_rd(struct xgene_hwmon_dev *ctx, u32 *msg)
{
struct acpi_pcct_shared_memory *generic_comm_base = ctx->pcc_comm_addr;
@@ -690,9 +699,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
*/
ctx->comm_base_addr = cppc_ss->base_address;
if (ctx->comm_base_addr) {
- ctx->pcc_comm_addr = memremap(ctx->comm_base_addr,
- cppc_ss->length,
- MEMREMAP_WB);
+ ctx->pcc_comm_addr = pcc_ioremap(ctx->comm_base_addr,
+ cppc_ss->length);
} else {
dev_err(&pdev->dev, "Failed to get PCC comm region\n");
rc = -ENODEV;
--
1.9.1
\
 
 \ /
  Last update: 2017-09-21 19:37    [W:0.042 / U:1.540 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site