soundwire: cadence: Remove ret variable from sdw_cdns_irq()
[linux-2.6-microblaze.git] / drivers / soundwire / bus.c
index adcbf39..278a4fb 100644 (file)
@@ -492,7 +492,7 @@ int sdw_read_no_pm(struct sdw_slave *slave, u32 addr)
 }
 EXPORT_SYMBOL(sdw_read_no_pm);
 
-static int sdw_update_no_pm(struct sdw_slave *slave, u32 addr, u8 mask, u8 val)
+int sdw_update_no_pm(struct sdw_slave *slave, u32 addr, u8 mask, u8 val)
 {
        int tmp;
 
@@ -503,6 +503,21 @@ static int sdw_update_no_pm(struct sdw_slave *slave, u32 addr, u8 mask, u8 val)
        tmp = (tmp & ~mask) | val;
        return sdw_write_no_pm(slave, addr, tmp);
 }
+EXPORT_SYMBOL(sdw_update_no_pm);
+
+/* Read-Modify-Write Slave register */
+int sdw_update(struct sdw_slave *slave, u32 addr, u8 mask, u8 val)
+{
+       int tmp;
+
+       tmp = sdw_read(slave, addr);
+       if (tmp < 0)
+               return tmp;
+
+       tmp = (tmp & ~mask) | val;
+       return sdw_write(slave, addr, tmp);
+}
+EXPORT_SYMBOL(sdw_update);
 
 /**
  * sdw_nread() - Read "n" contiguous SDW Slave registers
@@ -881,7 +896,8 @@ static int sdw_bus_wait_for_clk_prep_deprep(struct sdw_bus *bus, u16 dev_num)
        do {
                val = sdw_bread_no_pm(bus, dev_num, SDW_SCP_STAT);
                if (val < 0) {
-                       dev_err(bus->dev, "SDW_SCP_STAT bread failed:%d\n", val);
+                       if (val != -ENODATA)
+                               dev_err(bus->dev, "SDW_SCP_STAT bread failed:%d\n", val);
                        return val;
                }
                val &= SDW_SCP_STAT_CLK_STP_NF;