diff options
| -rw-r--r-- | drivers/soc/tegra/powergate-bpmp.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/soc/tegra/powergate-bpmp.c b/drivers/soc/tegra/powergate-bpmp.c index 8fc356039401..82c7e27cd8bb 100644 --- a/drivers/soc/tegra/powergate-bpmp.c +++ b/drivers/soc/tegra/powergate-bpmp.c | |||
| @@ -42,6 +42,7 @@ static int tegra_bpmp_powergate_set_state(struct tegra_bpmp *bpmp, | |||
| 42 | { | 42 | { |
| 43 | struct mrq_pg_request request; | 43 | struct mrq_pg_request request; |
| 44 | struct tegra_bpmp_message msg; | 44 | struct tegra_bpmp_message msg; |
| 45 | int err; | ||
| 45 | 46 | ||
| 46 | memset(&request, 0, sizeof(request)); | 47 | memset(&request, 0, sizeof(request)); |
| 47 | request.cmd = CMD_PG_SET_STATE; | 48 | request.cmd = CMD_PG_SET_STATE; |
| @@ -53,7 +54,13 @@ static int tegra_bpmp_powergate_set_state(struct tegra_bpmp *bpmp, | |||
| 53 | msg.tx.data = &request; | 54 | msg.tx.data = &request; |
| 54 | msg.tx.size = sizeof(request); | 55 | msg.tx.size = sizeof(request); |
| 55 | 56 | ||
| 56 | return tegra_bpmp_transfer(bpmp, &msg); | 57 | err = tegra_bpmp_transfer(bpmp, &msg); |
| 58 | if (err < 0) | ||
| 59 | return err; | ||
| 60 | else if (msg.rx.ret < 0) | ||
| 61 | return -EINVAL; | ||
| 62 | |||
| 63 | return 0; | ||
| 57 | } | 64 | } |
| 58 | 65 | ||
| 59 | static int tegra_bpmp_powergate_get_state(struct tegra_bpmp *bpmp, | 66 | static int tegra_bpmp_powergate_get_state(struct tegra_bpmp *bpmp, |
| @@ -80,6 +87,8 @@ static int tegra_bpmp_powergate_get_state(struct tegra_bpmp *bpmp, | |||
| 80 | err = tegra_bpmp_transfer(bpmp, &msg); | 87 | err = tegra_bpmp_transfer(bpmp, &msg); |
| 81 | if (err < 0) | 88 | if (err < 0) |
| 82 | return PG_STATE_OFF; | 89 | return PG_STATE_OFF; |
| 90 | else if (msg.rx.ret < 0) | ||
| 91 | return -EINVAL; | ||
| 83 | 92 | ||
| 84 | return response.get_state.state; | 93 | return response.get_state.state; |
| 85 | } | 94 | } |
| @@ -106,6 +115,8 @@ static int tegra_bpmp_powergate_get_max_id(struct tegra_bpmp *bpmp) | |||
| 106 | err = tegra_bpmp_transfer(bpmp, &msg); | 115 | err = tegra_bpmp_transfer(bpmp, &msg); |
| 107 | if (err < 0) | 116 | if (err < 0) |
| 108 | return err; | 117 | return err; |
| 118 | else if (msg.rx.ret < 0) | ||
| 119 | return -EINVAL; | ||
| 109 | 120 | ||
| 110 | return response.get_max_id.max_id; | 121 | return response.get_max_id.max_id; |
| 111 | } | 122 | } |
| @@ -132,7 +143,7 @@ static char *tegra_bpmp_powergate_get_name(struct tegra_bpmp *bpmp, | |||
| 132 | msg.rx.size = sizeof(response); | 143 | msg.rx.size = sizeof(response); |
| 133 | 144 | ||
| 134 | err = tegra_bpmp_transfer(bpmp, &msg); | 145 | err = tegra_bpmp_transfer(bpmp, &msg); |
| 135 | if (err < 0) | 146 | if (err < 0 || msg.rx.ret < 0) |
| 136 | return NULL; | 147 | return NULL; |
| 137 | 148 | ||
| 138 | return kstrdup(response.get_name.name, GFP_KERNEL); | 149 | return kstrdup(response.get_name.name, GFP_KERNEL); |
