Skip to content

Commit eb3896e

Browse files
lategoodbyestorulf
authored andcommitted
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Ulf Hansson <[email protected]>
1 parent 49d2a1e commit eb3896e

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

drivers/pmdomain/bcm/raspberrypi-power.c

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,33 +48,39 @@ struct rpi_power_domain_packet {
4848
* Asks the firmware to enable or disable power on a specific power
4949
* domain.
5050
*/
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)
5252
{
53+
struct rpi_power_domain *rpi_domain =
54+
container_of(domain, struct rpi_power_domain, base);
55+
bool old_interface = rpi_domain->old_interface;
5356
struct rpi_power_domain_packet packet;
57+
int ret;
5458

5559
packet.domain = rpi_domain->domain;
5660
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;
6274
}
6375

6476
static int rpi_domain_off(struct generic_pm_domain *domain)
6577
{
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);
7079
}
7180

7281
static int rpi_domain_on(struct generic_pm_domain *domain)
7382
{
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);
7884
}
7985

8086
static void rpi_common_init_power_domain(struct rpi_power_domains *rpi_domains,

0 commit comments

Comments
 (0)