123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- From: Arend van Spriel <[email protected]>
- Date: Wed, 27 May 2015 19:31:41 +0200
- Subject: [PATCH] brcmfmac: fix invalid access to struct acpi_device fields
- The fields of struct acpi_device are only known when CONFIG_ACPI is
- defined. Fix this by using a helper function. This will resolve the
- issue found in linux-next:
- ../brcmfmac/bcmsdh.c: In function 'brcmf_ops_sdio_probe':
- ../brcmfmac/bcmsdh.c:1139:7: error: dereferencing pointer to incomplete type
- adev->flags.power_manageable = 0;
- ^
- Fixes: f0992ace680c ("brcmfmac: prohibit ACPI power management ...")
- Cc: Fu, Zhonghui <[email protected]>
- Reported-by: Stephen Rothwell <[email protected]>
- Signed-off-by: Arend van Spriel <[email protected]>
- Signed-off-by: Kalle Valo <[email protected]>
- ---
- --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
- +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
- @@ -1117,6 +1117,18 @@ MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_id
- static struct brcmfmac_sdio_platform_data *brcmfmac_sdio_pdata;
-
-
- +static void brcmf_sdiod_acpi_set_power_manageable(struct device *dev,
- + int val)
- +{
- +#if IS_ENABLED(CONFIG_ACPI)
- + struct acpi_device *adev;
- +
- + adev = ACPI_COMPANION(dev);
- + if (adev)
- + adev->flags.power_manageable = 0;
- +#endif
- +}
- +
- static int brcmf_ops_sdio_probe(struct sdio_func *func,
- const struct sdio_device_id *id)
- {
- @@ -1124,7 +1136,6 @@ static int brcmf_ops_sdio_probe(struct s
- struct brcmf_sdio_dev *sdiodev;
- struct brcmf_bus *bus_if;
- struct device *dev;
- - struct acpi_device *adev;
-
- brcmf_dbg(SDIO, "Enter\n");
- brcmf_dbg(SDIO, "Class=%x\n", func->class);
- @@ -1132,11 +1143,9 @@ static int brcmf_ops_sdio_probe(struct s
- brcmf_dbg(SDIO, "sdio device ID: 0x%04x\n", func->device);
- brcmf_dbg(SDIO, "Function#: %d\n", func->num);
-
- - /* prohibit ACPI power management for this device */
- dev = &func->dev;
- - adev = ACPI_COMPANION(dev);
- - if (adev)
- - adev->flags.power_manageable = 0;
- + /* prohibit ACPI power management for this device */
- + brcmf_sdiod_acpi_set_power_manageable(dev, 0);
-
- /* Consume func num 1 but dont do anything with it. */
- if (func->num == 1)
|