aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hsi
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-05-03 11:16:22 -0400
committerSebastian Reichel <sre@kernel.org>2016-05-09 16:45:18 -0400
commitc2f90a465df75254fb41bf6e7975464929c21e26 (patch)
treebe77abed7e909e37a015d493b399cecc48c94a1b /drivers/hsi
parentac8e3ff3a07cb8bf7a5ce4627c39a50e71dcd394 (diff)
HSI: omap-ssi: move omap_ssi_port_update_fclk
After the clk change support, the ssi omap ssi core driver now calls into the port driver to change fclk. This function was previously inside of an #ifdef, because it was only used when CONFIG_PM is enabled. Now it also gets used without power management support: drivers/hsi/built-in.o: In function `ssi_clk_event': omap_ssi_port.c:(.text+0x1bf8): undefined reference to `omap_ssi_port_update_fclk' This moves the function outside of the CONFIG_PM guard. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Fixes: 4bcf7414528a ("HSI: omap-ssi: add clk change support") Signed-off-by: Sebastian Reichel <sre@kernel.org>
Diffstat (limited to 'drivers/hsi')
-rw-r--r--drivers/hsi/controllers/omap_ssi_port.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/drivers/hsi/controllers/omap_ssi_port.c b/drivers/hsi/controllers/omap_ssi_port.c
index ca7139eaaa1d..6b8f7739768a 100644
--- a/drivers/hsi/controllers/omap_ssi_port.c
+++ b/drivers/hsi/controllers/omap_ssi_port.c
@@ -1253,6 +1253,23 @@ static int ssi_port_remove(struct platform_device *pd)
1253 return 0; 1253 return 0;
1254} 1254}
1255 1255
1256static int ssi_restore_divisor(struct omap_ssi_port *omap_port)
1257{
1258 writel_relaxed(omap_port->sst.divisor,
1259 omap_port->sst_base + SSI_SST_DIVISOR_REG);
1260
1261 return 0;
1262}
1263
1264void omap_ssi_port_update_fclk(struct hsi_controller *ssi,
1265 struct omap_ssi_port *omap_port)
1266{
1267 /* update divisor */
1268 u32 div = ssi_calculate_div(ssi);
1269 omap_port->sst.divisor = div;
1270 ssi_restore_divisor(omap_port);
1271}
1272
1256#ifdef CONFIG_PM 1273#ifdef CONFIG_PM
1257static int ssi_save_port_ctx(struct omap_ssi_port *omap_port) 1274static int ssi_save_port_ctx(struct omap_ssi_port *omap_port)
1258{ 1275{
@@ -1305,24 +1322,6 @@ static int ssi_restore_port_mode(struct omap_ssi_port *omap_port)
1305 return 0; 1322 return 0;
1306} 1323}
1307 1324
1308static int ssi_restore_divisor(struct omap_ssi_port *omap_port)
1309{
1310 writel_relaxed(omap_port->sst.divisor,
1311 omap_port->sst_base + SSI_SST_DIVISOR_REG);
1312
1313 return 0;
1314}
1315
1316void omap_ssi_port_update_fclk(struct hsi_controller *ssi,
1317 struct omap_ssi_port *omap_port)
1318{
1319 /* update divisor */
1320 u32 div = ssi_calculate_div(ssi);
1321 omap_port->sst.divisor = div;
1322 ssi_restore_divisor(omap_port);
1323}
1324EXPORT_SYMBOL_GPL(omap_ssi_port_update_fclk);
1325
1326static int omap_ssi_port_runtime_suspend(struct device *dev) 1325static int omap_ssi_port_runtime_suspend(struct device *dev)
1327{ 1326{
1328 struct hsi_port *port = dev_get_drvdata(dev); 1327 struct hsi_port *port = dev_get_drvdata(dev);