Thread (26 messages) 26 messages, 6 authors, 2024-10-25

Re: [PATCH v17 4/8] drm: bridge: Cadence: Add MHDP8501 DP/HDMI driver

From: Sandor Yu <hidden>
Date: 2024-09-29 02:34:25
Also in: dri-devel, linux-devicetree, linux-phy, lkml

Hi Dmitry,

Thanks for your comments,
On Tue, Sep 24, 2024 at 12:16:27PM GMT, Maxime Ripard wrote:
quoted
On Tue, Sep 24, 2024 at 03:36:49PM GMT, Sandor Yu wrote:
quoted
+static int cdns_mhdp8501_read_hpd(struct cdns_mhdp8501_device
+*mhdp) {
+   u8 status;
+   int ret;
+
+   mutex_lock(&mhdp_mailbox_mutex);
+
+   ret = cdns_mhdp_mailbox_send(&mhdp->base,
MB_MODULE_ID_GENERAL,
quoted
quoted
+                                GENERAL_GET_HPD_STATE, 0,
NULL);
quoted
quoted
+   if (ret)
+           goto err_get_hpd;
+
+   ret = cdns_mhdp_mailbox_recv_header(&mhdp->base,
MB_MODULE_ID_GENERAL,
quoted
quoted
+                                       GENERAL_GET_HPD_STATE,
+                                       sizeof(status));
+   if (ret)
+           goto err_get_hpd;
+
+   ret = cdns_mhdp_mailbox_recv_data(&mhdp->base, &status,
sizeof(status));
quoted
quoted
+   if (ret)
+           goto err_get_hpd;
+
+   mutex_unlock(&mhdp_mailbox_mutex);
That's better I guess, but it's still not a good API design. If you
can't have concurrent accesses, then cdns_mhdp_mailbox_send et al.
should take the mutex themselves.
I think that a proper API might be:

int cdns_mhdp_mailbox_send_recv(struct cdns_mhdp_device *mhdp,
                        u8 module_id, u8 opcode,
                        u16 size, const u8 *message,
                        u16 buf_size, u8 *buf);

Internally it should take the lock, exchange the data, then return.
Thank you for your great suggestion. It seems like this should be able to solve the current problem.
I need to check each existing FW access functions one by one to see if they can all work under this API function.

B.R
Sandor
--
With best wishes
Dmitry
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help