Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pmdomain: raspberrypi-power: Add logging to rpi_firmware_set_power

The Raspberry Pi power driver heavily relies on the logging of the
underlying firmware driver. This results in disadvantages like unspecific
error messages or limited debugging options. So implement the logging for
the most important function rpi_firmware_set_power.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Link: https://lore.kernel.org/r/20240728114200.75559-5-wahrenst@gmx.net
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Stefan Wahren and committed by
Ulf Hansson
eb3896ea 49d2a1ec

+20 -14
+20 -14
drivers/pmdomain/bcm/raspberrypi-power.c
··· 48 48 * Asks the firmware to enable or disable power on a specific power 49 49 * domain. 50 50 */ 51 - static int rpi_firmware_set_power(struct rpi_power_domain *rpi_domain, bool on) 51 + static int rpi_firmware_set_power(struct generic_pm_domain *domain, bool on) 52 52 { 53 + struct rpi_power_domain *rpi_domain = 54 + container_of(domain, struct rpi_power_domain, base); 55 + bool old_interface = rpi_domain->old_interface; 53 56 struct rpi_power_domain_packet packet; 57 + int ret; 54 58 55 59 packet.domain = rpi_domain->domain; 56 60 packet.state = on; 57 - return rpi_firmware_property(rpi_domain->fw, 58 - rpi_domain->old_interface ? 59 - RPI_FIRMWARE_SET_POWER_STATE : 60 - RPI_FIRMWARE_SET_DOMAIN_STATE, 61 - &packet, sizeof(packet)); 61 + 62 + ret = rpi_firmware_property(rpi_domain->fw, old_interface ? 63 + RPI_FIRMWARE_SET_POWER_STATE : 64 + RPI_FIRMWARE_SET_DOMAIN_STATE, 65 + &packet, sizeof(packet)); 66 + if (ret) 67 + dev_err(&domain->dev, "Failed to set %s to %u (%d)\n", 68 + old_interface ? "power" : "domain", on, ret); 69 + else 70 + dev_dbg(&domain->dev, "Set %s to %u\n", 71 + old_interface ? "power" : "domain", on); 72 + 73 + return ret; 62 74 } 63 75 64 76 static int rpi_domain_off(struct generic_pm_domain *domain) 65 77 { 66 - struct rpi_power_domain *rpi_domain = 67 - container_of(domain, struct rpi_power_domain, base); 68 - 69 - return rpi_firmware_set_power(rpi_domain, false); 78 + return rpi_firmware_set_power(domain, false); 70 79 } 71 80 72 81 static int rpi_domain_on(struct generic_pm_domain *domain) 73 82 { 74 - struct rpi_power_domain *rpi_domain = 75 - container_of(domain, struct rpi_power_domain, base); 76 - 77 - return rpi_firmware_set_power(rpi_domain, true); 83 + return rpi_firmware_set_power(domain, true); 78 84 } 79 85 80 86 static void rpi_common_init_power_domain(struct rpi_power_domains *rpi_domains,