| .. | .. |
|---|
| 110 | 110 | struct scmi_chan_info *cinfo = p; |
|---|
| 111 | 111 | struct scmi_mailbox *smbox = cinfo->transport_info; |
|---|
| 112 | 112 | |
|---|
| 113 | | - if (!IS_ERR(smbox->chan)) { |
|---|
| 113 | + if (smbox && !IS_ERR(smbox->chan)) { |
|---|
| 114 | 114 | mbox_free_channel(smbox->chan); |
|---|
| 115 | 115 | cinfo->transport_info = NULL; |
|---|
| 116 | 116 | smbox->chan = NULL; |
|---|
| .. | .. |
|---|
| 158 | 158 | shmem_fetch_response(smbox->shmem, xfer); |
|---|
| 159 | 159 | } |
|---|
| 160 | 160 | |
|---|
| 161 | +static void mailbox_fetch_notification(struct scmi_chan_info *cinfo, |
|---|
| 162 | + size_t max_len, struct scmi_xfer *xfer) |
|---|
| 163 | +{ |
|---|
| 164 | + struct scmi_mailbox *smbox = cinfo->transport_info; |
|---|
| 165 | + |
|---|
| 166 | + shmem_fetch_notification(smbox->shmem, max_len, xfer); |
|---|
| 167 | +} |
|---|
| 168 | + |
|---|
| 169 | +static void mailbox_clear_channel(struct scmi_chan_info *cinfo) |
|---|
| 170 | +{ |
|---|
| 171 | + struct scmi_mailbox *smbox = cinfo->transport_info; |
|---|
| 172 | + |
|---|
| 173 | + shmem_clear_channel(smbox->shmem); |
|---|
| 174 | +} |
|---|
| 175 | + |
|---|
| 161 | 176 | static bool |
|---|
| 162 | 177 | mailbox_poll_done(struct scmi_chan_info *cinfo, struct scmi_xfer *xfer) |
|---|
| 163 | 178 | { |
|---|
| .. | .. |
|---|
| 166 | 181 | return shmem_poll_done(smbox->shmem, xfer); |
|---|
| 167 | 182 | } |
|---|
| 168 | 183 | |
|---|
| 169 | | -static struct scmi_transport_ops scmi_mailbox_ops = { |
|---|
| 184 | +static const struct scmi_transport_ops scmi_mailbox_ops = { |
|---|
| 170 | 185 | .chan_available = mailbox_chan_available, |
|---|
| 171 | 186 | .chan_setup = mailbox_chan_setup, |
|---|
| 172 | 187 | .chan_free = mailbox_chan_free, |
|---|
| 173 | 188 | .send_message = mailbox_send_message, |
|---|
| 174 | 189 | .mark_txdone = mailbox_mark_txdone, |
|---|
| 175 | 190 | .fetch_response = mailbox_fetch_response, |
|---|
| 191 | + .fetch_notification = mailbox_fetch_notification, |
|---|
| 192 | + .clear_channel = mailbox_clear_channel, |
|---|
| 176 | 193 | .poll_done = mailbox_poll_done, |
|---|
| 177 | 194 | }; |
|---|
| 178 | 195 | |
|---|