| From foo@baz Sun Jun 17 12:07:33 CEST 2018 |
| From: Geert Uytterhoeven <geert@linux-m68k.org> |
| Date: Sun, 8 Apr 2018 11:05:15 +0200 |
| Subject: soc: bcm2835: Make !RASPBERRYPI_FIRMWARE dummies return failure |
| |
| From: Geert Uytterhoeven <geert@linux-m68k.org> |
| |
| [ Upstream commit 144345a4a8c3b497a3f60d3af9d6071a37660186 ] |
| |
| If CONFIG_RASPBERRYPI_FIRMWARE=n: |
| |
| drivers/gpio/gpio-raspberrypi-exp.c: In function ‘rpi_exp_gpio_get_polarity’: |
| drivers/gpio/gpio-raspberrypi-exp.c:71: warning: ‘get.polarity’ is used uninitialized in this function |
| drivers/gpio/gpio-raspberrypi-exp.c: In function ‘rpi_exp_gpio_get_direction’: |
| drivers/gpio/gpio-raspberrypi-exp.c:150: warning: ‘get.direction’ is used uninitialized in this function |
| |
| The dummy firmware interface functions return 0, which means success, |
| causing subsequent code to make use of the never initialized output |
| parameter. |
| |
| Fix this by making the dummy functions return an error code (-ENOSYS) |
| instead. |
| |
| Note that this assumes the firmware always fills in the requested data |
| in the CONFIG_RASPBERRYPI_FIRMWARE=y case. |
| |
| Fixes: d45f1a563b92dac7 ("staging: vc04_services: fix up rpi firmware functions") |
| Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> |
| Reviewed-by: Eric Anholt <eric@anholt.net> |
| Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| include/soc/bcm2835/raspberrypi-firmware.h | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/include/soc/bcm2835/raspberrypi-firmware.h |
| +++ b/include/soc/bcm2835/raspberrypi-firmware.h |
| @@ -125,13 +125,13 @@ struct rpi_firmware *rpi_firmware_get(st |
| static inline int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, |
| void *data, size_t len) |
| { |
| - return 0; |
| + return -ENOSYS; |
| } |
| |
| static inline int rpi_firmware_property_list(struct rpi_firmware *fw, |
| void *data, size_t tag_size) |
| { |
| - return 0; |
| + return -ENOSYS; |
| } |
| |
| static inline struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node) |