aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mfd/db8500-prcmu.c42
-rw-r--r--include/linux/mfd/db8500-prcmu.h61
-rw-r--r--include/linux/mfd/dbx500-prcmu.h175
3 files changed, 204 insertions, 74 deletions
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index 12519935da62..5179abf94729 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -884,23 +884,23 @@ int db8500_prcmu_get_arm_opp(void)
884} 884}
885 885
886/** 886/**
887 * prcmu_get_ddr_opp - get the current DDR OPP 887 * db8500_prcmu_get_ddr_opp - get the current DDR OPP
888 * 888 *
889 * Returns: the current DDR OPP 889 * Returns: the current DDR OPP
890 */ 890 */
891int prcmu_get_ddr_opp(void) 891int db8500_prcmu_get_ddr_opp(void)
892{ 892{
893 return readb(PRCM_DDR_SUBSYS_APE_MINBW); 893 return readb(PRCM_DDR_SUBSYS_APE_MINBW);
894} 894}
895 895
896/** 896/**
897 * set_ddr_opp - set the appropriate DDR OPP 897 * db8500_set_ddr_opp - set the appropriate DDR OPP
898 * @opp: The new DDR operating point to which transition is to be made 898 * @opp: The new DDR operating point to which transition is to be made
899 * Returns: 0 on success, non-zero on failure 899 * Returns: 0 on success, non-zero on failure
900 * 900 *
901 * This function sets the operating point of the DDR. 901 * This function sets the operating point of the DDR.
902 */ 902 */
903int prcmu_set_ddr_opp(u8 opp) 903int db8500_prcmu_set_ddr_opp(u8 opp)
904{ 904{
905 if (opp < DDR_100_OPP || opp > DDR_25_OPP) 905 if (opp < DDR_100_OPP || opp > DDR_25_OPP)
906 return -EINVAL; 906 return -EINVAL;
@@ -911,13 +911,13 @@ int prcmu_set_ddr_opp(u8 opp)
911 return 0; 911 return 0;
912} 912}
913/** 913/**
914 * set_ape_opp - set the appropriate APE OPP 914 * db8500_set_ape_opp - set the appropriate APE OPP
915 * @opp: The new APE operating point to which transition is to be made 915 * @opp: The new APE operating point to which transition is to be made
916 * Returns: 0 on success, non-zero on failure 916 * Returns: 0 on success, non-zero on failure
917 * 917 *
918 * This function sets the operating point of the APE. 918 * This function sets the operating point of the APE.
919 */ 919 */
920int prcmu_set_ape_opp(u8 opp) 920int db8500_prcmu_set_ape_opp(u8 opp)
921{ 921{
922 int r = 0; 922 int r = 0;
923 923
@@ -943,11 +943,11 @@ int prcmu_set_ape_opp(u8 opp)
943} 943}
944 944
945/** 945/**
946 * prcmu_get_ape_opp - get the current APE OPP 946 * db8500_prcmu_get_ape_opp - get the current APE OPP
947 * 947 *
948 * Returns: the current APE OPP 948 * Returns: the current APE OPP
949 */ 949 */
950int prcmu_get_ape_opp(void) 950int db8500_prcmu_get_ape_opp(void)
951{ 951{
952 return readb(tcdm_base + PRCM_ACK_MB1_CURRENT_APE_OPP); 952 return readb(tcdm_base + PRCM_ACK_MB1_CURRENT_APE_OPP);
953} 953}
@@ -1451,7 +1451,7 @@ int db8500_prcmu_config_esram0_deep_sleep(u8 state)
1451 return 0; 1451 return 0;
1452} 1452}
1453 1453
1454int prcmu_config_hotdog(u8 threshold) 1454int db8500_prcmu_config_hotdog(u8 threshold)
1455{ 1455{
1456 mutex_lock(&mb4_transfer.lock); 1456 mutex_lock(&mb4_transfer.lock);
1457 1457
@@ -1469,7 +1469,7 @@ int prcmu_config_hotdog(u8 threshold)
1469 return 0; 1469 return 0;
1470} 1470}
1471 1471
1472int prcmu_config_hotmon(u8 low, u8 high) 1472int db8500_prcmu_config_hotmon(u8 low, u8 high)
1473{ 1473{
1474 mutex_lock(&mb4_transfer.lock); 1474 mutex_lock(&mb4_transfer.lock);
1475 1475
@@ -1508,7 +1508,7 @@ static int config_hot_period(u16 val)
1508 return 0; 1508 return 0;
1509} 1509}
1510 1510
1511int prcmu_start_temp_sense(u16 cycles32k) 1511int db8500_prcmu_start_temp_sense(u16 cycles32k)
1512{ 1512{
1513 if (cycles32k == 0xFFFF) 1513 if (cycles32k == 0xFFFF)
1514 return -EINVAL; 1514 return -EINVAL;
@@ -1516,7 +1516,7 @@ int prcmu_start_temp_sense(u16 cycles32k)
1516 return config_hot_period(cycles32k); 1516 return config_hot_period(cycles32k);
1517} 1517}
1518 1518
1519int prcmu_stop_temp_sense(void) 1519int db8500_prcmu_stop_temp_sense(void)
1520{ 1520{
1521 return config_hot_period(0xFFFF); 1521 return config_hot_period(0xFFFF);
1522} 1522}
@@ -1545,7 +1545,7 @@ static int prcmu_a9wdog(u8 cmd, u8 d0, u8 d1, u8 d2, u8 d3)
1545 1545
1546} 1546}
1547 1547
1548int prcmu_config_a9wdog(u8 num, bool sleep_auto_off) 1548int db8500_prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
1549{ 1549{
1550 BUG_ON(num == 0 || num > 0xf); 1550 BUG_ON(num == 0 || num > 0xf);
1551 return prcmu_a9wdog(MB4H_A9WDOG_CONF, num, 0, 0, 1551 return prcmu_a9wdog(MB4H_A9WDOG_CONF, num, 0, 0,
@@ -1553,17 +1553,17 @@ int prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
1553 A9WDOG_AUTO_OFF_DIS); 1553 A9WDOG_AUTO_OFF_DIS);
1554} 1554}
1555 1555
1556int prcmu_enable_a9wdog(u8 id) 1556int db8500_prcmu_enable_a9wdog(u8 id)
1557{ 1557{
1558 return prcmu_a9wdog(MB4H_A9WDOG_EN, id, 0, 0, 0); 1558 return prcmu_a9wdog(MB4H_A9WDOG_EN, id, 0, 0, 0);
1559} 1559}
1560 1560
1561int prcmu_disable_a9wdog(u8 id) 1561int db8500_prcmu_disable_a9wdog(u8 id)
1562{ 1562{
1563 return prcmu_a9wdog(MB4H_A9WDOG_DIS, id, 0, 0, 0); 1563 return prcmu_a9wdog(MB4H_A9WDOG_DIS, id, 0, 0, 0);
1564} 1564}
1565 1565
1566int prcmu_kick_a9wdog(u8 id) 1566int db8500_prcmu_kick_a9wdog(u8 id)
1567{ 1567{
1568 return prcmu_a9wdog(MB4H_A9WDOG_KICK, id, 0, 0, 0); 1568 return prcmu_a9wdog(MB4H_A9WDOG_KICK, id, 0, 0, 0);
1569} 1569}
@@ -1572,7 +1572,7 @@ int prcmu_kick_a9wdog(u8 id)
1572 * timeout is 28 bit, in ms. 1572 * timeout is 28 bit, in ms.
1573 */ 1573 */
1574#define MAX_WATCHDOG_TIMEOUT 131000 1574#define MAX_WATCHDOG_TIMEOUT 131000
1575int prcmu_load_a9wdog(u8 id, u32 timeout) 1575int db8500_prcmu_load_a9wdog(u8 id, u32 timeout)
1576{ 1576{
1577 if (timeout > MAX_WATCHDOG_TIMEOUT) 1577 if (timeout > MAX_WATCHDOG_TIMEOUT)
1578 /* 1578 /*
@@ -1825,9 +1825,9 @@ u16 db8500_prcmu_get_reset_code(void)
1825} 1825}
1826 1826
1827/** 1827/**
1828 * prcmu_reset_modem - ask the PRCMU to reset modem 1828 * db8500_prcmu_reset_modem - ask the PRCMU to reset modem
1829 */ 1829 */
1830void prcmu_modem_reset(void) 1830void db8500_prcmu_modem_reset(void)
1831{ 1831{
1832 mutex_lock(&mb1_transfer.lock); 1832 mutex_lock(&mb1_transfer.lock);
1833 1833
@@ -2147,7 +2147,7 @@ void __init db8500_prcmu_early_init(void)
2147 } 2147 }
2148} 2148}
2149 2149
2150static void __init db8500_prcmu_init_clkforce(void) 2150static void __init init_prcm_registers(void)
2151{ 2151{
2152 u32 val; 2152 u32 val;
2153 2153
@@ -2405,7 +2405,7 @@ static int __init db8500_prcmu_probe(struct platform_device *pdev)
2405 if (ux500_is_svp()) 2405 if (ux500_is_svp())
2406 return -ENODEV; 2406 return -ENODEV;
2407 2407
2408 db8500_prcmu_init_clkforce(); 2408 init_prcm_registers();
2409 2409
2410 /* Clean up the mailbox interrupts after pre-kernel code. */ 2410 /* Clean up the mailbox interrupts after pre-kernel code. */
2411 writel(ALL_MBOX_BITS, PRCM_ARM_IT1_CLR); 2411 writel(ALL_MBOX_BITS, PRCM_ARM_IT1_CLR);
diff --git a/include/linux/mfd/db8500-prcmu.h b/include/linux/mfd/db8500-prcmu.h
index 18959171f446..c5028f1246fc 100644
--- a/include/linux/mfd/db8500-prcmu.h
+++ b/include/linux/mfd/db8500-prcmu.h
@@ -512,13 +512,9 @@ int prcmu_set_rc_a2p(enum romcode_write);
512enum romcode_read prcmu_get_rc_p2a(void); 512enum romcode_read prcmu_get_rc_p2a(void);
513enum ap_pwrst prcmu_get_xp70_current_state(void); 513enum ap_pwrst prcmu_get_xp70_current_state(void);
514bool prcmu_has_arm_maxopp(void); 514bool prcmu_has_arm_maxopp(void);
515int prcmu_set_ape_opp(u8 opp);
516int prcmu_get_ape_opp(void);
517struct prcmu_fw_version *prcmu_get_fw_version(void); 515struct prcmu_fw_version *prcmu_get_fw_version(void);
518int prcmu_request_ape_opp_100_voltage(bool enable); 516int prcmu_request_ape_opp_100_voltage(bool enable);
519int prcmu_release_usb_wakeup_state(void); 517int prcmu_release_usb_wakeup_state(void);
520int prcmu_set_ddr_opp(u8 opp);
521int prcmu_get_ddr_opp(void);
522/* NOTE! Use regulator framework instead */ 518/* NOTE! Use regulator framework instead */
523int prcmu_set_hwacc(u16 hw_acc_dev, u8 state); 519int prcmu_set_hwacc(u16 hw_acc_dev, u8 state);
524void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, 520void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep,
@@ -527,24 +523,24 @@ bool prcmu_is_auto_pm_enabled(void);
527 523
528int prcmu_config_clkout(u8 clkout, u8 source, u8 div); 524int prcmu_config_clkout(u8 clkout, u8 source, u8 div);
529int prcmu_set_clock_divider(u8 clock, u8 divider); 525int prcmu_set_clock_divider(u8 clock, u8 divider);
530int prcmu_config_hotdog(u8 threshold); 526int db8500_prcmu_config_hotdog(u8 threshold);
531int prcmu_config_hotmon(u8 low, u8 high); 527int db8500_prcmu_config_hotmon(u8 low, u8 high);
532int prcmu_start_temp_sense(u16 cycles32k); 528int db8500_prcmu_start_temp_sense(u16 cycles32k);
533int prcmu_stop_temp_sense(void); 529int db8500_prcmu_stop_temp_sense(void);
534int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); 530int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
535int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); 531int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
536 532
537void prcmu_ac_wake_req(void); 533void prcmu_ac_wake_req(void);
538void prcmu_ac_sleep_req(void); 534void prcmu_ac_sleep_req(void);
539void prcmu_modem_reset(void); 535void db8500_prcmu_modem_reset(void);
540void prcmu_enable_spi2(void); 536void prcmu_enable_spi2(void);
541void prcmu_disable_spi2(void); 537void prcmu_disable_spi2(void);
542 538
543int prcmu_config_a9wdog(u8 num, bool sleep_auto_off); 539int db8500_prcmu_config_a9wdog(u8 num, bool sleep_auto_off);
544int prcmu_enable_a9wdog(u8 id); 540int db8500_prcmu_enable_a9wdog(u8 id);
545int prcmu_disable_a9wdog(u8 id); 541int db8500_prcmu_disable_a9wdog(u8 id);
546int prcmu_kick_a9wdog(u8 id); 542int db8500_prcmu_kick_a9wdog(u8 id);
547int prcmu_load_a9wdog(u8 id, u32 val); 543int db8500_prcmu_load_a9wdog(u8 id, u32 val);
548 544
549void db8500_prcmu_system_reset(u16 reset_code); 545void db8500_prcmu_system_reset(u16 reset_code);
550int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll); 546int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll);
@@ -561,6 +557,10 @@ u16 db8500_prcmu_get_reset_code(void);
561bool db8500_prcmu_is_ac_wake_requested(void); 557bool db8500_prcmu_is_ac_wake_requested(void);
562int db8500_prcmu_set_arm_opp(u8 opp); 558int db8500_prcmu_set_arm_opp(u8 opp);
563int db8500_prcmu_get_arm_opp(void); 559int db8500_prcmu_get_arm_opp(void);
560int db8500_prcmu_set_ape_opp(u8 opp);
561int db8500_prcmu_get_ape_opp(void);
562int db8500_prcmu_set_ddr_opp(u8 opp);
563int db8500_prcmu_get_ddr_opp(void);
564 564
565#else /* !CONFIG_MFD_DB8500_PRCMU */ 565#else /* !CONFIG_MFD_DB8500_PRCMU */
566 566
@@ -591,12 +591,12 @@ static inline struct prcmu_fw_version *prcmu_get_fw_version(void)
591 return NULL; 591 return NULL;
592} 592}
593 593
594static inline int prcmu_set_ape_opp(u8 opp) 594static inline int db8500_prcmu_set_ape_opp(u8 opp)
595{ 595{
596 return 0; 596 return 0;
597} 597}
598 598
599static inline int prcmu_get_ape_opp(void) 599static inline int db8500_prcmu_get_ape_opp(void)
600{ 600{
601 return APE_100_OPP; 601 return APE_100_OPP;
602} 602}
@@ -611,12 +611,12 @@ static inline int prcmu_release_usb_wakeup_state(void)
611 return 0; 611 return 0;
612} 612}
613 613
614static inline int prcmu_set_ddr_opp(u8 opp) 614static inline int db8500_prcmu_set_ddr_opp(u8 opp)
615{ 615{
616 return 0; 616 return 0;
617} 617}
618 618
619static inline int prcmu_get_ddr_opp(void) 619static inline int db8500_prcmu_get_ddr_opp(void)
620{ 620{
621 return DDR_100_OPP; 621 return DDR_100_OPP;
622} 622}
@@ -625,7 +625,6 @@ static inline int prcmu_set_hwacc(u16 hw_acc_dev, u8 state)
625{ 625{
626 return 0; 626 return 0;
627} 627}
628
629static inline void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, 628static inline void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep,
630 struct prcmu_auto_pm_config *idle) 629 struct prcmu_auto_pm_config *idle)
631{ 630{
@@ -646,22 +645,22 @@ static inline int prcmu_set_clock_divider(u8 clock, u8 divider)
646 return 0; 645 return 0;
647} 646}
648 647
649static inline int prcmu_config_hotdog(u8 threshold) 648static inline int db8500_prcmu_config_hotdog(u8 threshold)
650{ 649{
651 return 0; 650 return 0;
652} 651}
653 652
654static inline int prcmu_config_hotmon(u8 low, u8 high) 653static inline int db8500_prcmu_config_hotmon(u8 low, u8 high)
655{ 654{
656 return 0; 655 return 0;
657} 656}
658 657
659static inline int prcmu_start_temp_sense(u16 cycles32k) 658static inline int db8500_prcmu_start_temp_sense(u16 cycles32k)
660{ 659{
661 return 0; 660 return 0;
662} 661}
663 662
664static inline int prcmu_stop_temp_sense(void) 663static inline int db8500_prcmu_stop_temp_sense(void)
665{ 664{
666 return 0; 665 return 0;
667} 666}
@@ -680,7 +679,9 @@ static inline void prcmu_ac_wake_req(void) {}
680 679
681static inline void prcmu_ac_sleep_req(void) {} 680static inline void prcmu_ac_sleep_req(void) {}
682 681
683static inline void prcmu_modem_reset(void) {} 682static inline void db8500_prcmu_modem_reset(void) {}
683
684static inline void db8500_prcmu_system_reset(u16 reset_code) {}
684 685
685static inline int prcmu_enable_spi2(void) 686static inline int prcmu_enable_spi2(void)
686{ 687{
@@ -692,8 +693,6 @@ static inline int prcmu_disable_spi2(void)
692 return 0; 693 return 0;
693} 694}
694 695
695static inline void db8500_prcmu_system_reset(u16 reset_code) {}
696
697static inline int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, 696static inline int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk,
698 bool keep_ap_pll) 697 bool keep_ap_pll)
699{ 698{
@@ -741,27 +740,27 @@ static inline u16 db8500_prcmu_get_reset_code(void)
741 return 0; 740 return 0;
742} 741}
743 742
744static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off) 743static inline int db8500_prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
745{ 744{
746 return 0; 745 return 0;
747} 746}
748 747
749static inline int prcmu_enable_a9wdog(u8 id) 748static inline int db8500_prcmu_enable_a9wdog(u8 id)
750{ 749{
751 return 0; 750 return 0;
752} 751}
753 752
754static inline int prcmu_disable_a9wdog(u8 id) 753static inline int db8500_prcmu_disable_a9wdog(u8 id)
755{ 754{
756 return 0; 755 return 0;
757} 756}
758 757
759static inline int prcmu_kick_a9wdog(u8 id) 758static inline int db8500_prcmu_kick_a9wdog(u8 id)
760{ 759{
761 return 0; 760 return 0;
762} 761}
763 762
764static inline int prcmu_load_a9wdog(u8 id, u32 val) 763static inline int db8500_prcmu_load_a9wdog(u8 id, u32 val)
765{ 764{
766 return 0; 765 return 0;
767} 766}
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h
index bac942f959c1..f73b9d9d2a24 100644
--- a/include/linux/mfd/dbx500-prcmu.h
+++ b/include/linux/mfd/dbx500-prcmu.h
@@ -10,7 +10,7 @@
10 10
11#include <linux/interrupt.h> 11#include <linux/interrupt.h>
12#include <linux/notifier.h> 12#include <linux/notifier.h>
13#include <asm/mach-types.h> 13#include <linux/err.h>
14 14
15/* PRCMU Wakeup defines */ 15/* PRCMU Wakeup defines */
16enum prcmu_wakeup_index { 16enum prcmu_wakeup_index {
@@ -218,9 +218,11 @@ enum ddr_pwrst {
218 218
219#if defined(CONFIG_UX500_SOC_DB8500) || defined(CONFIG_UX500_SOC_DB5500) 219#if defined(CONFIG_UX500_SOC_DB8500) || defined(CONFIG_UX500_SOC_DB5500)
220 220
221#include <mach/id.h>
222
221static inline void __init prcmu_early_init(void) 223static inline void __init prcmu_early_init(void)
222{ 224{
223 if (machine_is_u5500()) 225 if (cpu_is_u5500())
224 return db5500_prcmu_early_init(); 226 return db5500_prcmu_early_init();
225 else 227 else
226 return db8500_prcmu_early_init(); 228 return db8500_prcmu_early_init();
@@ -229,7 +231,7 @@ static inline void __init prcmu_early_init(void)
229static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, 231static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk,
230 bool keep_ap_pll) 232 bool keep_ap_pll)
231{ 233{
232 if (machine_is_u5500()) 234 if (cpu_is_u5500())
233 return db5500_prcmu_set_power_state(state, keep_ulp_clk, 235 return db5500_prcmu_set_power_state(state, keep_ulp_clk,
234 keep_ap_pll); 236 keep_ap_pll);
235 else 237 else
@@ -239,7 +241,7 @@ static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk,
239 241
240static inline int prcmu_set_epod(u16 epod_id, u8 epod_state) 242static inline int prcmu_set_epod(u16 epod_id, u8 epod_state)
241{ 243{
242 if (machine_is_u5500()) 244 if (cpu_is_u5500())
243 return -EINVAL; 245 return -EINVAL;
244 else 246 else
245 return db8500_prcmu_set_epod(epod_id, epod_state); 247 return db8500_prcmu_set_epod(epod_id, epod_state);
@@ -247,7 +249,7 @@ static inline int prcmu_set_epod(u16 epod_id, u8 epod_state)
247 249
248static inline void prcmu_enable_wakeups(u32 wakeups) 250static inline void prcmu_enable_wakeups(u32 wakeups)
249{ 251{
250 if (machine_is_u5500()) 252 if (cpu_is_u5500())
251 db5500_prcmu_enable_wakeups(wakeups); 253 db5500_prcmu_enable_wakeups(wakeups);
252 else 254 else
253 db8500_prcmu_enable_wakeups(wakeups); 255 db8500_prcmu_enable_wakeups(wakeups);
@@ -260,7 +262,7 @@ static inline void prcmu_disable_wakeups(void)
260 262
261static inline void prcmu_config_abb_event_readout(u32 abb_events) 263static inline void prcmu_config_abb_event_readout(u32 abb_events)
262{ 264{
263 if (machine_is_u5500()) 265 if (cpu_is_u5500())
264 db5500_prcmu_config_abb_event_readout(abb_events); 266 db5500_prcmu_config_abb_event_readout(abb_events);
265 else 267 else
266 db8500_prcmu_config_abb_event_readout(abb_events); 268 db8500_prcmu_config_abb_event_readout(abb_events);
@@ -268,7 +270,7 @@ static inline void prcmu_config_abb_event_readout(u32 abb_events)
268 270
269static inline void prcmu_get_abb_event_buffer(void __iomem **buf) 271static inline void prcmu_get_abb_event_buffer(void __iomem **buf)
270{ 272{
271 if (machine_is_u5500()) 273 if (cpu_is_u5500())
272 db5500_prcmu_get_abb_event_buffer(buf); 274 db5500_prcmu_get_abb_event_buffer(buf);
273 else 275 else
274 db8500_prcmu_get_abb_event_buffer(buf); 276 db8500_prcmu_get_abb_event_buffer(buf);
@@ -281,20 +283,34 @@ int prcmu_config_clkout(u8 clkout, u8 source, u8 div);
281 283
282static inline int prcmu_request_clock(u8 clock, bool enable) 284static inline int prcmu_request_clock(u8 clock, bool enable)
283{ 285{
284 if (machine_is_u5500()) 286 if (cpu_is_u5500())
285 return db5500_prcmu_request_clock(clock, enable); 287 return db5500_prcmu_request_clock(clock, enable);
286 else 288 else
287 return db8500_prcmu_request_clock(clock, enable); 289 return db8500_prcmu_request_clock(clock, enable);
288} 290}
289 291
290int prcmu_set_ape_opp(u8 opp); 292unsigned long prcmu_clock_rate(u8 clock);
291int prcmu_get_ape_opp(void); 293long prcmu_round_clock_rate(u8 clock, unsigned long rate);
292int prcmu_set_ddr_opp(u8 opp); 294int prcmu_set_clock_rate(u8 clock, unsigned long rate);
293int prcmu_get_ddr_opp(void); 295
296static inline int prcmu_set_ddr_opp(u8 opp)
297{
298 if (cpu_is_u5500())
299 return -EINVAL;
300 else
301 return db8500_prcmu_set_ddr_opp(opp);
302}
303static inline int prcmu_get_ddr_opp(void)
304{
305 if (cpu_is_u5500())
306 return -EINVAL;
307 else
308 return db8500_prcmu_get_ddr_opp();
309}
294 310
295static inline int prcmu_set_arm_opp(u8 opp) 311static inline int prcmu_set_arm_opp(u8 opp)
296{ 312{
297 if (machine_is_u5500()) 313 if (cpu_is_u5500())
298 return -EINVAL; 314 return -EINVAL;
299 else 315 else
300 return db8500_prcmu_set_arm_opp(opp); 316 return db8500_prcmu_set_arm_opp(opp);
@@ -302,15 +318,31 @@ static inline int prcmu_set_arm_opp(u8 opp)
302 318
303static inline int prcmu_get_arm_opp(void) 319static inline int prcmu_get_arm_opp(void)
304{ 320{
305 if (machine_is_u5500()) 321 if (cpu_is_u5500())
306 return -EINVAL; 322 return -EINVAL;
307 else 323 else
308 return db8500_prcmu_get_arm_opp(); 324 return db8500_prcmu_get_arm_opp();
309} 325}
310 326
327static inline int prcmu_set_ape_opp(u8 opp)
328{
329 if (cpu_is_u5500())
330 return -EINVAL;
331 else
332 return db8500_prcmu_set_ape_opp(opp);
333}
334
335static inline int prcmu_get_ape_opp(void)
336{
337 if (cpu_is_u5500())
338 return -EINVAL;
339 else
340 return db8500_prcmu_get_ape_opp();
341}
342
311static inline void prcmu_system_reset(u16 reset_code) 343static inline void prcmu_system_reset(u16 reset_code)
312{ 344{
313 if (machine_is_u5500()) 345 if (cpu_is_u5500())
314 return db5500_prcmu_system_reset(reset_code); 346 return db5500_prcmu_system_reset(reset_code);
315 else 347 else
316 return db8500_prcmu_system_reset(reset_code); 348 return db8500_prcmu_system_reset(reset_code);
@@ -318,7 +350,7 @@ static inline void prcmu_system_reset(u16 reset_code)
318 350
319static inline u16 prcmu_get_reset_code(void) 351static inline u16 prcmu_get_reset_code(void)
320{ 352{
321 if (machine_is_u5500()) 353 if (cpu_is_u5500())
322 return db5500_prcmu_get_reset_code(); 354 return db5500_prcmu_get_reset_code();
323 else 355 else
324 return db8500_prcmu_get_reset_code(); 356 return db8500_prcmu_get_reset_code();
@@ -326,10 +358,17 @@ static inline u16 prcmu_get_reset_code(void)
326 358
327void prcmu_ac_wake_req(void); 359void prcmu_ac_wake_req(void);
328void prcmu_ac_sleep_req(void); 360void prcmu_ac_sleep_req(void);
329void prcmu_modem_reset(void); 361static inline void prcmu_modem_reset(void)
362{
363 if (cpu_is_u5500())
364 return;
365 else
366 return db8500_prcmu_modem_reset();
367}
368
330static inline bool prcmu_is_ac_wake_requested(void) 369static inline bool prcmu_is_ac_wake_requested(void)
331{ 370{
332 if (machine_is_u5500()) 371 if (cpu_is_u5500())
333 return db5500_prcmu_is_ac_wake_requested(); 372 return db5500_prcmu_is_ac_wake_requested();
334 else 373 else
335 return db8500_prcmu_is_ac_wake_requested(); 374 return db8500_prcmu_is_ac_wake_requested();
@@ -337,7 +376,7 @@ static inline bool prcmu_is_ac_wake_requested(void)
337 376
338static inline int prcmu_set_display_clocks(void) 377static inline int prcmu_set_display_clocks(void)
339{ 378{
340 if (machine_is_u5500()) 379 if (cpu_is_u5500())
341 return db5500_prcmu_set_display_clocks(); 380 return db5500_prcmu_set_display_clocks();
342 else 381 else
343 return db8500_prcmu_set_display_clocks(); 382 return db8500_prcmu_set_display_clocks();
@@ -345,7 +384,7 @@ static inline int prcmu_set_display_clocks(void)
345 384
346static inline int prcmu_disable_dsipll(void) 385static inline int prcmu_disable_dsipll(void)
347{ 386{
348 if (machine_is_u5500()) 387 if (cpu_is_u5500())
349 return db5500_prcmu_disable_dsipll(); 388 return db5500_prcmu_disable_dsipll();
350 else 389 else
351 return db8500_prcmu_disable_dsipll(); 390 return db8500_prcmu_disable_dsipll();
@@ -353,7 +392,7 @@ static inline int prcmu_disable_dsipll(void)
353 392
354static inline int prcmu_enable_dsipll(void) 393static inline int prcmu_enable_dsipll(void)
355{ 394{
356 if (machine_is_u5500()) 395 if (cpu_is_u5500())
357 return db5500_prcmu_enable_dsipll(); 396 return db5500_prcmu_enable_dsipll();
358 else 397 else
359 return db8500_prcmu_enable_dsipll(); 398 return db8500_prcmu_enable_dsipll();
@@ -361,11 +400,83 @@ static inline int prcmu_enable_dsipll(void)
361 400
362static inline int prcmu_config_esram0_deep_sleep(u8 state) 401static inline int prcmu_config_esram0_deep_sleep(u8 state)
363{ 402{
364 if (machine_is_u5500()) 403 if (cpu_is_u5500())
365 return -EINVAL; 404 return -EINVAL;
366 else 405 else
367 return db8500_prcmu_config_esram0_deep_sleep(state); 406 return db8500_prcmu_config_esram0_deep_sleep(state);
368} 407}
408
409static inline int prcmu_config_hotdog(u8 threshold)
410{
411 if (cpu_is_u5500())
412 return -EINVAL;
413 else
414 return db8500_prcmu_config_hotdog(threshold);
415}
416
417static inline int prcmu_config_hotmon(u8 low, u8 high)
418{
419 if (cpu_is_u5500())
420 return -EINVAL;
421 else
422 return db8500_prcmu_config_hotmon(low, high);
423}
424
425static inline int prcmu_start_temp_sense(u16 cycles32k)
426{
427 if (cpu_is_u5500())
428 return -EINVAL;
429 else
430 return db8500_prcmu_start_temp_sense(cycles32k);
431}
432
433static inline int prcmu_stop_temp_sense(void)
434{
435 if (cpu_is_u5500())
436 return -EINVAL;
437 else
438 return db8500_prcmu_stop_temp_sense();
439}
440
441static inline int prcmu_enable_a9wdog(u8 id)
442{
443 if (cpu_is_u5500())
444 return -EINVAL;
445 else
446 return db8500_prcmu_enable_a9wdog(id);
447}
448
449static inline int prcmu_disable_a9wdog(u8 id)
450{
451 if (cpu_is_u5500())
452 return -EINVAL;
453 else
454 return db8500_prcmu_disable_a9wdog(id);
455}
456
457static inline int prcmu_kick_a9wdog(u8 id)
458{
459 if (cpu_is_u5500())
460 return -EINVAL;
461 else
462 return db8500_prcmu_kick_a9wdog(id);
463}
464
465static inline int prcmu_load_a9wdog(u8 id, u32 timeout)
466{
467 if (cpu_is_u5500())
468 return -EINVAL;
469 else
470 return db8500_prcmu_load_a9wdog(id, timeout);
471}
472
473static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
474{
475 if (cpu_is_u5500())
476 return -EINVAL;
477 else
478 return db8500_prcmu_config_a9wdog(num, sleep_auto_off);
479}
369#else 480#else
370 481
371static inline void __init prcmu_early_init(void) {} 482static inline void __init prcmu_early_init(void) {}
@@ -480,6 +591,26 @@ static inline void prcmu_get_abb_event_buffer(void __iomem **buf)
480 *buf = NULL; 591 *buf = NULL;
481} 592}
482 593
594static inline int prcmu_config_hotdog(u8 threshold)
595{
596 return 0;
597}
598
599static inline int prcmu_config_hotmon(u8 low, u8 high)
600{
601 return 0;
602}
603
604static inline int prcmu_start_temp_sense(u16 cycles32k)
605{
606 return 0;
607}
608
609static inline int prcmu_stop_temp_sense(void)
610{
611 return 0;
612}
613
483#endif 614#endif
484 615
485/* PRCMU QoS APE OPP class */ 616/* PRCMU QoS APE OPP class */