diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2016-05-03 11:16:22 -0400 |
|---|---|---|
| committer | Sebastian Reichel <sre@kernel.org> | 2016-05-09 16:45:18 -0400 |
| commit | c2f90a465df75254fb41bf6e7975464929c21e26 (patch) | |
| tree | be77abed7e909e37a015d493b399cecc48c94a1b /drivers/hsi | |
| parent | ac8e3ff3a07cb8bf7a5ce4627c39a50e71dcd394 (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.c | 35 |
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 | ||
| 1256 | static 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 | |||
| 1264 | void 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 |
| 1257 | static int ssi_save_port_ctx(struct omap_ssi_port *omap_port) | 1274 | static 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 | ||
| 1308 | static 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 | |||
| 1316 | void 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 | } | ||
| 1324 | EXPORT_SYMBOL_GPL(omap_ssi_port_update_fclk); | ||
| 1325 | |||
| 1326 | static int omap_ssi_port_runtime_suspend(struct device *dev) | 1325 | static 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); |
