aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>2017-10-29 05:49:54 -0400
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>2017-11-05 06:53:14 -0500
commit6cc8cbbc8868033f279b63e98b26b75eaa0006ab (patch)
tree89e548974a2a298c5f772ef7d2e64cbde5f02a1c
parentce7ff1cffdaf82354aca5f4c8691e5c85474fbde (diff)
platform/x86: intel_punit_ipc: Fix resource ioremap warning
For PUNIT device, ISPDRIVER_IPC and GTDDRIVER_IPC resources are not mandatory. So when PMC IPC driver creates a PUNIT device, if these resources are not available then it creates dummy resource entries for these missing resources. But during PUNIT device probe, doing ioremap on these dummy resources generates following warning messages. intel_punit_ipc: can't request region for resource [mem 0x00000000] intel_punit_ipc: can't request region for resource [mem 0x00000000] intel_punit_ipc: can't request region for resource [mem 0x00000000] intel_punit_ipc: can't request region for resource [mem 0x00000000] This patch fixes this issue by adding extra check for resource size before performing ioremap operation. Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-rw-r--r--drivers/platform/x86/intel_punit_ipc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/platform/x86/intel_punit_ipc.c b/drivers/platform/x86/intel_punit_ipc.c
index a47a41fc10ad..b5b890127479 100644
--- a/drivers/platform/x86/intel_punit_ipc.c
+++ b/drivers/platform/x86/intel_punit_ipc.c
@@ -252,28 +252,28 @@ static int intel_punit_get_bars(struct platform_device *pdev)
252 * - GTDRIVER_IPC BASE_IFACE 252 * - GTDRIVER_IPC BASE_IFACE
253 */ 253 */
254 res = platform_get_resource(pdev, IORESOURCE_MEM, 2); 254 res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
255 if (res) { 255 if (res && resource_size(res) > 1) {
256 addr = devm_ioremap_resource(&pdev->dev, res); 256 addr = devm_ioremap_resource(&pdev->dev, res);
257 if (!IS_ERR(addr)) 257 if (!IS_ERR(addr))
258 punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr; 258 punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr;
259 } 259 }
260 260
261 res = platform_get_resource(pdev, IORESOURCE_MEM, 3); 261 res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
262 if (res) { 262 if (res && resource_size(res) > 1) {
263 addr = devm_ioremap_resource(&pdev->dev, res); 263 addr = devm_ioremap_resource(&pdev->dev, res);
264 if (!IS_ERR(addr)) 264 if (!IS_ERR(addr))
265 punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr; 265 punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr;
266 } 266 }
267 267
268 res = platform_get_resource(pdev, IORESOURCE_MEM, 4); 268 res = platform_get_resource(pdev, IORESOURCE_MEM, 4);
269 if (res) { 269 if (res && resource_size(res) > 1) {
270 addr = devm_ioremap_resource(&pdev->dev, res); 270 addr = devm_ioremap_resource(&pdev->dev, res);
271 if (!IS_ERR(addr)) 271 if (!IS_ERR(addr))
272 punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr; 272 punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr;
273 } 273 }
274 274
275 res = platform_get_resource(pdev, IORESOURCE_MEM, 5); 275 res = platform_get_resource(pdev, IORESOURCE_MEM, 5);
276 if (res) { 276 if (res && resource_size(res) > 1) {
277 addr = devm_ioremap_resource(&pdev->dev, res); 277 addr = devm_ioremap_resource(&pdev->dev, res);
278 if (!IS_ERR(addr)) 278 if (!IS_ERR(addr))
279 punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr; 279 punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr;