arm64: dts: qcom: sdm845: add required clocks on the gcc
[linux-2.6-microblaze.git] / drivers / soundwire / cadence_master.c
index 9fa5516..d05442e 100644 (file)
@@ -188,7 +188,7 @@ MODULE_PARM_DESC(cdns_mcp_int_mask, "Cadence MCP IntMask");
 #define CDNS_PDI_CONFIG_PORT                   GENMASK(4, 0)
 
 /* Driver defaults */
-#define CDNS_TX_TIMEOUT                                2000
+#define CDNS_TX_TIMEOUT                                500
 
 #define CDNS_SCP_RX_FIFOLEVEL                  0x2
 
@@ -483,11 +483,11 @@ cdns_fill_msg_resp(struct sdw_cdns *cdns,
        for (i = 0; i < count; i++) {
                if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) {
                        no_ack = 1;
-                       dev_dbg_ratelimited(cdns->dev, "Msg Ack not received\n");
-                       if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) {
-                               nack = 1;
-                               dev_err_ratelimited(cdns->dev, "Msg NACK received\n");
-                       }
+                       dev_vdbg(cdns->dev, "Msg Ack not received, cmd %d\n", i);
+               }
+               if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) {
+                       nack = 1;
+                       dev_err_ratelimited(cdns->dev, "Msg NACK received, cmd %d\n", i);
                }
        }
 
@@ -734,21 +734,18 @@ static void cdns_read_response(struct sdw_cdns *cdns)
 }
 
 static int cdns_update_slave_status(struct sdw_cdns *cdns,
-                                   u32 slave0, u32 slave1)
+                                   u64 slave_intstat)
 {
        enum sdw_slave_status status[SDW_MAX_DEVICES + 1];
        bool is_slave = false;
-       u64 slave;
        u32 mask;
        int i, set_status;
 
-       /* combine the two status */
-       slave = ((u64)slave1 << 32) | slave0;
        memset(status, 0, sizeof(status));
 
        for (i = 0; i <= SDW_MAX_DEVICES; i++) {
-               mask = (slave >> (i * CDNS_MCP_SLAVE_STATUS_NUM)) &
-                               CDNS_MCP_SLAVE_STATUS_BITS;
+               mask = (slave_intstat >> (i * CDNS_MCP_SLAVE_STATUS_NUM)) &
+                       CDNS_MCP_SLAVE_STATUS_BITS;
                if (!mask)
                        continue;
 
@@ -918,13 +915,17 @@ static void cdns_update_slave_status_work(struct work_struct *work)
        struct sdw_cdns *cdns =
                container_of(work, struct sdw_cdns, work);
        u32 slave0, slave1;
-
-       dev_dbg_ratelimited(cdns->dev, "Slave status change\n");
+       u64 slave_intstat;
 
        slave0 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT0);
        slave1 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT1);
 
-       cdns_update_slave_status(cdns, slave0, slave1);
+       /* combine the two status */
+       slave_intstat = ((u64)slave1 << 32) | slave0;
+
+       dev_dbg_ratelimited(cdns->dev, "Slave status change: 0x%llx\n", slave_intstat);
+
+       cdns_update_slave_status(cdns, slave_intstat);
        cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT0, slave0);
        cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT1, slave1);