diff options
| author | Ingo Molnar <mingo@kernel.org> | 2016-05-03 08:23:58 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2016-05-03 08:23:58 +0200 | 
| commit | b33f39e9d17dd7d636ebb38f9ce248f8a085ff49 (patch) | |
| tree | 906da63259959326e15cbd3bff032125816d3234 /drivers/platform/x86/intel_punit_ipc.c | |
| parent | bf92b1feb658f6a262daf3a87d790997a1dca0ff (diff) | |
| parent | 04974df8049fc4240d22759a91e035082ccd18b4 (diff) | |
Merge tag 'v4.6-rc6' into ras/core, to refresh the tree
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/platform/x86/intel_punit_ipc.c')
| -rw-r--r-- | drivers/platform/x86/intel_punit_ipc.c | 48 | 
1 files changed, 32 insertions, 16 deletions
diff --git a/drivers/platform/x86/intel_punit_ipc.c b/drivers/platform/x86/intel_punit_ipc.c index bd875409a02d..a47a41fc10ad 100644 --- a/drivers/platform/x86/intel_punit_ipc.c +++ b/drivers/platform/x86/intel_punit_ipc.c @@ -227,6 +227,11 @@ static int intel_punit_get_bars(struct platform_device *pdev)  	struct resource *res;  	void __iomem *addr; +	/* +	 * The following resources are required +	 * - BIOS_IPC BASE_DATA +	 * - BIOS_IPC BASE_IFACE +	 */  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	addr = devm_ioremap_resource(&pdev->dev, res);  	if (IS_ERR(addr)) @@ -239,29 +244,40 @@ static int intel_punit_get_bars(struct platform_device *pdev)  		return PTR_ERR(addr);  	punit_ipcdev->base[BIOS_IPC][BASE_IFACE] = addr; +	/* +	 * The following resources are optional +	 * - ISPDRIVER_IPC BASE_DATA +	 * - ISPDRIVER_IPC BASE_IFACE +	 * - GTDRIVER_IPC BASE_DATA +	 * - GTDRIVER_IPC BASE_IFACE +	 */  	res = platform_get_resource(pdev, IORESOURCE_MEM, 2); -	addr = devm_ioremap_resource(&pdev->dev, res); -	if (IS_ERR(addr)) -		return PTR_ERR(addr); -	punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr; +	if (res) { +		addr = devm_ioremap_resource(&pdev->dev, res); +		if (!IS_ERR(addr)) +			punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr; +	}  	res = platform_get_resource(pdev, IORESOURCE_MEM, 3); -	addr = devm_ioremap_resource(&pdev->dev, res); -	if (IS_ERR(addr)) -		return PTR_ERR(addr); -	punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr; +	if (res) { +		addr = devm_ioremap_resource(&pdev->dev, res); +		if (!IS_ERR(addr)) +			punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr; +	}  	res = platform_get_resource(pdev, IORESOURCE_MEM, 4); -	addr = devm_ioremap_resource(&pdev->dev, res); -	if (IS_ERR(addr)) -		return PTR_ERR(addr); -	punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr; +	if (res) { +		addr = devm_ioremap_resource(&pdev->dev, res); +		if (!IS_ERR(addr)) +			punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr; +	}  	res = platform_get_resource(pdev, IORESOURCE_MEM, 5); -	addr = devm_ioremap_resource(&pdev->dev, res); -	if (IS_ERR(addr)) -		return PTR_ERR(addr); -	punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr; +	if (res) { +		addr = devm_ioremap_resource(&pdev->dev, res); +		if (!IS_ERR(addr)) +			punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr; +	}  	return 0;  }  | 
