aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/db8500-prcmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd/db8500-prcmu.c')
-rw-r--r--drivers/mfd/db8500-prcmu.c159
1 files changed, 77 insertions, 82 deletions
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index 02a15d7cb3b0..b5bd245ca892 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -412,7 +412,7 @@ struct clk_mgt {
412 412
413static DEFINE_SPINLOCK(clk_mgt_lock); 413static DEFINE_SPINLOCK(clk_mgt_lock);
414 414
415#define CLK_MGT_ENTRY(_name)[PRCMU_##_name] = { (PRCM_##_name##_MGT), 0 } 415#define CLK_MGT_ENTRY(_name)[PRCMU_##_name] = { (PRCM_##_name##_MGT_OFF), 0 }
416struct clk_mgt clk_mgt[PRCMU_NUM_REG_CLOCKS] = { 416struct clk_mgt clk_mgt[PRCMU_NUM_REG_CLOCKS] = {
417 CLK_MGT_ENTRY(SGACLK), 417 CLK_MGT_ENTRY(SGACLK),
418 CLK_MGT_ENTRY(UARTCLK), 418 CLK_MGT_ENTRY(UARTCLK),
@@ -499,45 +499,41 @@ int prcmu_enable_dsipll(void)
499 unsigned int plldsifreq; 499 unsigned int plldsifreq;
500 500
501 /* Clear DSIPLL_RESETN */ 501 /* Clear DSIPLL_RESETN */
502 writel(PRCMU_RESET_DSIPLL, (_PRCMU_BASE + PRCM_APE_RESETN_CLR)); 502 writel(PRCMU_RESET_DSIPLL, PRCM_APE_RESETN_CLR);
503 /* Unclamp DSIPLL in/out */ 503 /* Unclamp DSIPLL in/out */
504 writel(PRCMU_UNCLAMP_DSIPLL, (_PRCMU_BASE + PRCM_MMIP_LS_CLAMP_CLR)); 504 writel(PRCMU_UNCLAMP_DSIPLL, PRCM_MMIP_LS_CLAMP_CLR);
505 505
506 if (prcmu_is_u8400()) 506 if (prcmu_is_u8400())
507 plldsifreq = PRCMU_PLLDSI_FREQ_SETTING_U8400; 507 plldsifreq = PRCMU_PLLDSI_FREQ_SETTING_U8400;
508 else 508 else
509 plldsifreq = PRCMU_PLLDSI_FREQ_SETTING; 509 plldsifreq = PRCMU_PLLDSI_FREQ_SETTING;
510 /* Set DSI PLL FREQ */ 510 /* Set DSI PLL FREQ */
511 writel(plldsifreq, (_PRCMU_BASE + PRCM_PLLDSI_FREQ)); 511 writel(plldsifreq, PRCM_PLLDSI_FREQ);
512 writel(PRCMU_DSI_PLLOUT_SEL_SETTING, 512 writel(PRCMU_DSI_PLLOUT_SEL_SETTING, PRCM_DSI_PLLOUT_SEL);
513 (_PRCMU_BASE + PRCM_DSI_PLLOUT_SEL));
514 /* Enable Escape clocks */ 513 /* Enable Escape clocks */
515 writel(PRCMU_ENABLE_ESCAPE_CLOCK_DIV, 514 writel(PRCMU_ENABLE_ESCAPE_CLOCK_DIV, PRCM_DSITVCLK_DIV);
516 (_PRCMU_BASE + PRCM_DSITVCLK_DIV));
517 515
518 /* Start DSI PLL */ 516 /* Start DSI PLL */
519 writel(PRCMU_ENABLE_PLLDSI, (_PRCMU_BASE + PRCM_PLLDSI_ENABLE)); 517 writel(PRCMU_ENABLE_PLLDSI, PRCM_PLLDSI_ENABLE);
520 /* Reset DSI PLL */ 518 /* Reset DSI PLL */
521 writel(PRCMU_DSI_RESET_SW, (_PRCMU_BASE + PRCM_DSI_SW_RESET)); 519 writel(PRCMU_DSI_RESET_SW, PRCM_DSI_SW_RESET);
522 for (i = 0; i < 10; i++) { 520 for (i = 0; i < 10; i++) {
523 if ((readl(_PRCMU_BASE + PRCM_PLLDSI_LOCKP) & 521 if ((readl(PRCM_PLLDSI_LOCKP) & PRCMU_PLLDSI_LOCKP_LOCKED)
524 PRCMU_PLLDSI_LOCKP_LOCKED)
525 == PRCMU_PLLDSI_LOCKP_LOCKED) 522 == PRCMU_PLLDSI_LOCKP_LOCKED)
526 break; 523 break;
527 udelay(100); 524 udelay(100);
528 } 525 }
529 /* Set DSIPLL_RESETN */ 526 /* Set DSIPLL_RESETN */
530 writel(PRCMU_RESET_DSIPLL, (_PRCMU_BASE + PRCM_APE_RESETN_SET)); 527 writel(PRCMU_RESET_DSIPLL, PRCM_APE_RESETN_SET);
531 return 0; 528 return 0;
532} 529}
533 530
534int prcmu_disable_dsipll(void) 531int prcmu_disable_dsipll(void)
535{ 532{
536 /* Disable dsi pll */ 533 /* Disable dsi pll */
537 writel(PRCMU_DISABLE_PLLDSI, (_PRCMU_BASE + PRCM_PLLDSI_ENABLE)); 534 writel(PRCMU_DISABLE_PLLDSI, PRCM_PLLDSI_ENABLE);
538 /* Disable escapeclock */ 535 /* Disable escapeclock */
539 writel(PRCMU_DISABLE_ESCAPE_CLOCK_DIV, 536 writel(PRCMU_DISABLE_ESCAPE_CLOCK_DIV, PRCM_DSITVCLK_DIV);
540 (_PRCMU_BASE + PRCM_DSITVCLK_DIV));
541 return 0; 537 return 0;
542} 538}
543 539
@@ -554,15 +550,15 @@ int prcmu_set_display_clocks(void)
554 spin_lock_irqsave(&clk_mgt_lock, flags); 550 spin_lock_irqsave(&clk_mgt_lock, flags);
555 551
556 /* Grab the HW semaphore. */ 552 /* Grab the HW semaphore. */
557 while ((readl(_PRCMU_BASE + PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) 553 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0)
558 cpu_relax(); 554 cpu_relax();
559 555
560 writel(dsiclk, (_PRCMU_BASE + PRCM_HDMICLK_MGT)); 556 writel(dsiclk, PRCM_HDMICLK_MGT);
561 writel(PRCMU_DSI_LP_CLOCK_SETTING, (_PRCMU_BASE + PRCM_TVCLK_MGT)); 557 writel(PRCMU_DSI_LP_CLOCK_SETTING, PRCM_TVCLK_MGT);
562 writel(PRCMU_DPI_CLOCK_SETTING, (_PRCMU_BASE + PRCM_LCDCLK_MGT)); 558 writel(PRCMU_DPI_CLOCK_SETTING, PRCM_LCDCLK_MGT);
563 559
564 /* Release the HW semaphore. */ 560 /* Release the HW semaphore. */
565 writel(0, (_PRCMU_BASE + PRCM_SEM)); 561 writel(0, PRCM_SEM);
566 562
567 spin_unlock_irqrestore(&clk_mgt_lock, flags); 563 spin_unlock_irqrestore(&clk_mgt_lock, flags);
568 564
@@ -578,8 +574,8 @@ void prcmu_enable_spi2(void)
578 unsigned long flags; 574 unsigned long flags;
579 575
580 spin_lock_irqsave(&gpiocr_lock, flags); 576 spin_lock_irqsave(&gpiocr_lock, flags);
581 reg = readl(_PRCMU_BASE + PRCM_GPIOCR); 577 reg = readl(PRCM_GPIOCR);
582 writel(reg | PRCM_GPIOCR_SPI2_SELECT, _PRCMU_BASE + PRCM_GPIOCR); 578 writel(reg | PRCM_GPIOCR_SPI2_SELECT, PRCM_GPIOCR);
583 spin_unlock_irqrestore(&gpiocr_lock, flags); 579 spin_unlock_irqrestore(&gpiocr_lock, flags);
584} 580}
585 581
@@ -592,8 +588,8 @@ void prcmu_disable_spi2(void)
592 unsigned long flags; 588 unsigned long flags;
593 589
594 spin_lock_irqsave(&gpiocr_lock, flags); 590 spin_lock_irqsave(&gpiocr_lock, flags);
595 reg = readl(_PRCMU_BASE + PRCM_GPIOCR); 591 reg = readl(PRCM_GPIOCR);
596 writel(reg & ~PRCM_GPIOCR_SPI2_SELECT, _PRCMU_BASE + PRCM_GPIOCR); 592 writel(reg & ~PRCM_GPIOCR_SPI2_SELECT, PRCM_GPIOCR);
597 spin_unlock_irqrestore(&gpiocr_lock, flags); 593 spin_unlock_irqrestore(&gpiocr_lock, flags);
598} 594}
599 595
@@ -701,7 +697,7 @@ int prcmu_config_clkout(u8 clkout, u8 source, u8 div)
701 697
702 spin_lock_irqsave(&clkout_lock, flags); 698 spin_lock_irqsave(&clkout_lock, flags);
703 699
704 val = readl(_PRCMU_BASE + PRCM_CLKOCR); 700 val = readl(PRCM_CLKOCR);
705 if (val & div_mask) { 701 if (val & div_mask) {
706 if (div) { 702 if (div) {
707 if ((val & mask) != bits) { 703 if ((val & mask) != bits) {
@@ -715,7 +711,7 @@ int prcmu_config_clkout(u8 clkout, u8 source, u8 div)
715 } 711 }
716 } 712 }
717 } 713 }
718 writel((bits | (val & ~mask)), (_PRCMU_BASE + PRCM_CLKOCR)); 714 writel((bits | (val & ~mask)), PRCM_CLKOCR);
719 requests[clkout] += (div ? 1 : -1); 715 requests[clkout] += (div ? 1 : -1);
720 716
721unlock_and_return: 717unlock_and_return:
@@ -732,7 +728,7 @@ int prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll)
732 728
733 spin_lock_irqsave(&mb0_transfer.lock, flags); 729 spin_lock_irqsave(&mb0_transfer.lock, flags);
734 730
735 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(0)) 731 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(0))
736 cpu_relax(); 732 cpu_relax();
737 733
738 writeb(MB0H_POWER_STATE_TRANS, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB0)); 734 writeb(MB0H_POWER_STATE_TRANS, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB0));
@@ -741,7 +737,7 @@ int prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll)
741 writeb((keep_ulp_clk ? 1 : 0), 737 writeb((keep_ulp_clk ? 1 : 0),
742 (tcdm_base + PRCM_REQ_MB0_ULP_CLOCK_STATE)); 738 (tcdm_base + PRCM_REQ_MB0_ULP_CLOCK_STATE));
743 writeb(0, (tcdm_base + PRCM_REQ_MB0_DO_NOT_WFI)); 739 writeb(0, (tcdm_base + PRCM_REQ_MB0_DO_NOT_WFI));
744 writel(MBOX_BIT(0), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 740 writel(MBOX_BIT(0), PRCM_MBOX_CPU_SET);
745 741
746 spin_unlock_irqrestore(&mb0_transfer.lock, flags); 742 spin_unlock_irqrestore(&mb0_transfer.lock, flags);
747 743
@@ -770,12 +766,12 @@ static void config_wakeups(void)
770 return; 766 return;
771 767
772 for (i = 0; i < 2; i++) { 768 for (i = 0; i < 2; i++) {
773 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(0)) 769 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(0))
774 cpu_relax(); 770 cpu_relax();
775 writel(dbb_events, (tcdm_base + PRCM_REQ_MB0_WAKEUP_8500)); 771 writel(dbb_events, (tcdm_base + PRCM_REQ_MB0_WAKEUP_8500));
776 writel(abb_events, (tcdm_base + PRCM_REQ_MB0_WAKEUP_4500)); 772 writel(abb_events, (tcdm_base + PRCM_REQ_MB0_WAKEUP_4500));
777 writeb(header[i], (tcdm_base + PRCM_MBOX_HEADER_REQ_MB0)); 773 writeb(header[i], (tcdm_base + PRCM_MBOX_HEADER_REQ_MB0));
778 writel(MBOX_BIT(0), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 774 writel(MBOX_BIT(0), PRCM_MBOX_CPU_SET);
779 } 775 }
780 last_dbb_events = dbb_events; 776 last_dbb_events = dbb_events;
781 last_abb_events = abb_events; 777 last_abb_events = abb_events;
@@ -840,14 +836,14 @@ int prcmu_set_arm_opp(u8 opp)
840 836
841 mutex_lock(&mb1_transfer.lock); 837 mutex_lock(&mb1_transfer.lock);
842 838
843 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(1)) 839 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(1))
844 cpu_relax(); 840 cpu_relax();
845 841
846 writeb(MB1H_ARM_APE_OPP, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1)); 842 writeb(MB1H_ARM_APE_OPP, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1));
847 writeb(opp, (tcdm_base + PRCM_REQ_MB1_ARM_OPP)); 843 writeb(opp, (tcdm_base + PRCM_REQ_MB1_ARM_OPP));
848 writeb(APE_NO_CHANGE, (tcdm_base + PRCM_REQ_MB1_APE_OPP)); 844 writeb(APE_NO_CHANGE, (tcdm_base + PRCM_REQ_MB1_APE_OPP));
849 845
850 writel(MBOX_BIT(1), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 846 writel(MBOX_BIT(1), PRCM_MBOX_CPU_SET);
851 wait_for_completion(&mb1_transfer.work); 847 wait_for_completion(&mb1_transfer.work);
852 848
853 if ((mb1_transfer.ack.header != MB1H_ARM_APE_OPP) || 849 if ((mb1_transfer.ack.header != MB1H_ARM_APE_OPP) ||
@@ -876,7 +872,7 @@ int prcmu_get_arm_opp(void)
876 */ 872 */
877int prcmu_get_ddr_opp(void) 873int prcmu_get_ddr_opp(void)
878{ 874{
879 return readb(_PRCMU_BASE + PRCM_DDR_SUBSYS_APE_MINBW); 875 return readb(PRCM_DDR_SUBSYS_APE_MINBW);
880} 876}
881 877
882/** 878/**
@@ -892,7 +888,7 @@ int prcmu_set_ddr_opp(u8 opp)
892 return -EINVAL; 888 return -EINVAL;
893 /* Changing the DDR OPP can hang the hardware pre-v21 */ 889 /* Changing the DDR OPP can hang the hardware pre-v21 */
894 if (cpu_is_u8500v20_or_later() && !cpu_is_u8500v20()) 890 if (cpu_is_u8500v20_or_later() && !cpu_is_u8500v20())
895 writeb(opp, (_PRCMU_BASE + PRCM_DDR_SUBSYS_APE_MINBW)); 891 writeb(opp, PRCM_DDR_SUBSYS_APE_MINBW);
896 892
897 return 0; 893 return 0;
898} 894}
@@ -909,14 +905,14 @@ int prcmu_set_ape_opp(u8 opp)
909 905
910 mutex_lock(&mb1_transfer.lock); 906 mutex_lock(&mb1_transfer.lock);
911 907
912 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(1)) 908 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(1))
913 cpu_relax(); 909 cpu_relax();
914 910
915 writeb(MB1H_ARM_APE_OPP, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1)); 911 writeb(MB1H_ARM_APE_OPP, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1));
916 writeb(ARM_NO_CHANGE, (tcdm_base + PRCM_REQ_MB1_ARM_OPP)); 912 writeb(ARM_NO_CHANGE, (tcdm_base + PRCM_REQ_MB1_ARM_OPP));
917 writeb(opp, (tcdm_base + PRCM_REQ_MB1_APE_OPP)); 913 writeb(opp, (tcdm_base + PRCM_REQ_MB1_APE_OPP));
918 914
919 writel(MBOX_BIT(1), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 915 writel(MBOX_BIT(1), PRCM_MBOX_CPU_SET);
920 wait_for_completion(&mb1_transfer.work); 916 wait_for_completion(&mb1_transfer.work);
921 917
922 if ((mb1_transfer.ack.header != MB1H_ARM_APE_OPP) || 918 if ((mb1_transfer.ack.header != MB1H_ARM_APE_OPP) ||
@@ -966,12 +962,12 @@ int prcmu_request_ape_opp_100_voltage(bool enable)
966 header = MB1H_RELEASE_APE_OPP_100_VOLT; 962 header = MB1H_RELEASE_APE_OPP_100_VOLT;
967 } 963 }
968 964
969 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(1)) 965 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(1))
970 cpu_relax(); 966 cpu_relax();
971 967
972 writeb(header, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1)); 968 writeb(header, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1));
973 969
974 writel(MBOX_BIT(1), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 970 writel(MBOX_BIT(1), PRCM_MBOX_CPU_SET);
975 wait_for_completion(&mb1_transfer.work); 971 wait_for_completion(&mb1_transfer.work);
976 972
977 if ((mb1_transfer.ack.header != header) || 973 if ((mb1_transfer.ack.header != header) ||
@@ -995,13 +991,13 @@ int prcmu_release_usb_wakeup_state(void)
995 991
996 mutex_lock(&mb1_transfer.lock); 992 mutex_lock(&mb1_transfer.lock);
997 993
998 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(1)) 994 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(1))
999 cpu_relax(); 995 cpu_relax();
1000 996
1001 writeb(MB1H_RELEASE_USB_WAKEUP, 997 writeb(MB1H_RELEASE_USB_WAKEUP,
1002 (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1)); 998 (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1));
1003 999
1004 writel(MBOX_BIT(1), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1000 writel(MBOX_BIT(1), PRCM_MBOX_CPU_SET);
1005 wait_for_completion(&mb1_transfer.work); 1001 wait_for_completion(&mb1_transfer.work);
1006 1002
1007 if ((mb1_transfer.ack.header != MB1H_RELEASE_USB_WAKEUP) || 1003 if ((mb1_transfer.ack.header != MB1H_RELEASE_USB_WAKEUP) ||
@@ -1048,7 +1044,7 @@ int prcmu_set_epod(u16 epod_id, u8 epod_state)
1048 mutex_lock(&mb2_transfer.lock); 1044 mutex_lock(&mb2_transfer.lock);
1049 1045
1050 /* wait for mailbox */ 1046 /* wait for mailbox */
1051 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(2)) 1047 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(2))
1052 cpu_relax(); 1048 cpu_relax();
1053 1049
1054 /* fill in mailbox */ 1050 /* fill in mailbox */
@@ -1058,7 +1054,7 @@ int prcmu_set_epod(u16 epod_id, u8 epod_state)
1058 1054
1059 writeb(MB2H_DPS, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB2)); 1055 writeb(MB2H_DPS, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB2));
1060 1056
1061 writel(MBOX_BIT(2), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1057 writel(MBOX_BIT(2), PRCM_MBOX_CPU_SET);
1062 1058
1063 /* 1059 /*
1064 * The current firmware version does not handle errors correctly, 1060 * The current firmware version does not handle errors correctly,
@@ -1145,13 +1141,13 @@ static int request_sysclk(bool enable)
1145 1141
1146 spin_lock_irqsave(&mb3_transfer.lock, flags); 1142 spin_lock_irqsave(&mb3_transfer.lock, flags);
1147 1143
1148 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(3)) 1144 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(3))
1149 cpu_relax(); 1145 cpu_relax();
1150 1146
1151 writeb((enable ? ON : OFF), (tcdm_base + PRCM_REQ_MB3_SYSCLK_MGT)); 1147 writeb((enable ? ON : OFF), (tcdm_base + PRCM_REQ_MB3_SYSCLK_MGT));
1152 1148
1153 writeb(MB3H_SYSCLK, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB3)); 1149 writeb(MB3H_SYSCLK, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB3));
1154 writel(MBOX_BIT(3), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1150 writel(MBOX_BIT(3), PRCM_MBOX_CPU_SET);
1155 1151
1156 spin_unlock_irqrestore(&mb3_transfer.lock, flags); 1152 spin_unlock_irqrestore(&mb3_transfer.lock, flags);
1157 1153
@@ -1177,7 +1173,7 @@ static int request_timclk(bool enable)
1177 1173
1178 if (!enable) 1174 if (!enable)
1179 val |= PRCM_TCR_STOP_TIMERS; 1175 val |= PRCM_TCR_STOP_TIMERS;
1180 writel(val, (_PRCMU_BASE + PRCM_TCR)); 1176 writel(val, PRCM_TCR);
1181 1177
1182 return 0; 1178 return 0;
1183} 1179}
@@ -1190,7 +1186,7 @@ static int request_reg_clock(u8 clock, bool enable)
1190 spin_lock_irqsave(&clk_mgt_lock, flags); 1186 spin_lock_irqsave(&clk_mgt_lock, flags);
1191 1187
1192 /* Grab the HW semaphore. */ 1188 /* Grab the HW semaphore. */
1193 while ((readl(_PRCMU_BASE + PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) 1189 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0)
1194 cpu_relax(); 1190 cpu_relax();
1195 1191
1196 val = readl(_PRCMU_BASE + clk_mgt[clock].offset); 1192 val = readl(_PRCMU_BASE + clk_mgt[clock].offset);
@@ -1203,7 +1199,7 @@ static int request_reg_clock(u8 clock, bool enable)
1203 writel(val, (_PRCMU_BASE + clk_mgt[clock].offset)); 1199 writel(val, (_PRCMU_BASE + clk_mgt[clock].offset));
1204 1200
1205 /* Release the HW semaphore. */ 1201 /* Release the HW semaphore. */
1206 writel(0, (_PRCMU_BASE + PRCM_SEM)); 1202 writel(0, PRCM_SEM);
1207 1203
1208 spin_unlock_irqrestore(&clk_mgt_lock, flags); 1204 spin_unlock_irqrestore(&clk_mgt_lock, flags);
1209 1205
@@ -1238,7 +1234,7 @@ int prcmu_config_esram0_deep_sleep(u8 state)
1238 1234
1239 mutex_lock(&mb4_transfer.lock); 1235 mutex_lock(&mb4_transfer.lock);
1240 1236
1241 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(4)) 1237 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(4))
1242 cpu_relax(); 1238 cpu_relax();
1243 1239
1244 writeb(MB4H_MEM_ST, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4)); 1240 writeb(MB4H_MEM_ST, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4));
@@ -1248,7 +1244,7 @@ int prcmu_config_esram0_deep_sleep(u8 state)
1248 (tcdm_base + PRCM_REQ_MB4_DDR_ST_AP_DEEP_IDLE)); 1244 (tcdm_base + PRCM_REQ_MB4_DDR_ST_AP_DEEP_IDLE));
1249 writeb(state, (tcdm_base + PRCM_REQ_MB4_ESRAM0_ST)); 1245 writeb(state, (tcdm_base + PRCM_REQ_MB4_ESRAM0_ST));
1250 1246
1251 writel(MBOX_BIT(4), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1247 writel(MBOX_BIT(4), PRCM_MBOX_CPU_SET);
1252 wait_for_completion(&mb4_transfer.work); 1248 wait_for_completion(&mb4_transfer.work);
1253 1249
1254 mutex_unlock(&mb4_transfer.lock); 1250 mutex_unlock(&mb4_transfer.lock);
@@ -1260,13 +1256,13 @@ int prcmu_config_hotdog(u8 threshold)
1260{ 1256{
1261 mutex_lock(&mb4_transfer.lock); 1257 mutex_lock(&mb4_transfer.lock);
1262 1258
1263 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(4)) 1259 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(4))
1264 cpu_relax(); 1260 cpu_relax();
1265 1261
1266 writeb(threshold, (tcdm_base + PRCM_REQ_MB4_HOTDOG_THRESHOLD)); 1262 writeb(threshold, (tcdm_base + PRCM_REQ_MB4_HOTDOG_THRESHOLD));
1267 writeb(MB4H_HOTDOG, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4)); 1263 writeb(MB4H_HOTDOG, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4));
1268 1264
1269 writel(MBOX_BIT(4), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1265 writel(MBOX_BIT(4), PRCM_MBOX_CPU_SET);
1270 wait_for_completion(&mb4_transfer.work); 1266 wait_for_completion(&mb4_transfer.work);
1271 1267
1272 mutex_unlock(&mb4_transfer.lock); 1268 mutex_unlock(&mb4_transfer.lock);
@@ -1278,7 +1274,7 @@ int prcmu_config_hotmon(u8 low, u8 high)
1278{ 1274{
1279 mutex_lock(&mb4_transfer.lock); 1275 mutex_lock(&mb4_transfer.lock);
1280 1276
1281 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(4)) 1277 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(4))
1282 cpu_relax(); 1278 cpu_relax();
1283 1279
1284 writeb(low, (tcdm_base + PRCM_REQ_MB4_HOTMON_LOW)); 1280 writeb(low, (tcdm_base + PRCM_REQ_MB4_HOTMON_LOW));
@@ -1287,7 +1283,7 @@ int prcmu_config_hotmon(u8 low, u8 high)
1287 (tcdm_base + PRCM_REQ_MB4_HOTMON_CONFIG)); 1283 (tcdm_base + PRCM_REQ_MB4_HOTMON_CONFIG));
1288 writeb(MB4H_HOTMON, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4)); 1284 writeb(MB4H_HOTMON, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4));
1289 1285
1290 writel(MBOX_BIT(4), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1286 writel(MBOX_BIT(4), PRCM_MBOX_CPU_SET);
1291 wait_for_completion(&mb4_transfer.work); 1287 wait_for_completion(&mb4_transfer.work);
1292 1288
1293 mutex_unlock(&mb4_transfer.lock); 1289 mutex_unlock(&mb4_transfer.lock);
@@ -1299,13 +1295,13 @@ static int config_hot_period(u16 val)
1299{ 1295{
1300 mutex_lock(&mb4_transfer.lock); 1296 mutex_lock(&mb4_transfer.lock);
1301 1297
1302 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(4)) 1298 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(4))
1303 cpu_relax(); 1299 cpu_relax();
1304 1300
1305 writew(val, (tcdm_base + PRCM_REQ_MB4_HOT_PERIOD)); 1301 writew(val, (tcdm_base + PRCM_REQ_MB4_HOT_PERIOD));
1306 writeb(MB4H_HOT_PERIOD, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4)); 1302 writeb(MB4H_HOT_PERIOD, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB4));
1307 1303
1308 writel(MBOX_BIT(4), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1304 writel(MBOX_BIT(4), PRCM_MBOX_CPU_SET);
1309 wait_for_completion(&mb4_transfer.work); 1305 wait_for_completion(&mb4_transfer.work);
1310 1306
1311 mutex_unlock(&mb4_transfer.lock); 1307 mutex_unlock(&mb4_transfer.lock);
@@ -1345,7 +1341,7 @@ int prcmu_set_clock_divider(u8 clock, u8 divider)
1345 spin_lock_irqsave(&clk_mgt_lock, flags); 1341 spin_lock_irqsave(&clk_mgt_lock, flags);
1346 1342
1347 /* Grab the HW semaphore. */ 1343 /* Grab the HW semaphore. */
1348 while ((readl(_PRCMU_BASE + PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0) 1344 while ((readl(PRCM_SEM) & PRCM_SEM_PRCM_SEM) != 0)
1349 cpu_relax(); 1345 cpu_relax();
1350 1346
1351 val = readl(_PRCMU_BASE + clk_mgt[clock].offset); 1347 val = readl(_PRCMU_BASE + clk_mgt[clock].offset);
@@ -1354,7 +1350,7 @@ int prcmu_set_clock_divider(u8 clock, u8 divider)
1354 writel(val, (_PRCMU_BASE + clk_mgt[clock].offset)); 1350 writel(val, (_PRCMU_BASE + clk_mgt[clock].offset));
1355 1351
1356 /* Release the HW semaphore. */ 1352 /* Release the HW semaphore. */
1357 writel(0, (_PRCMU_BASE + PRCM_SEM)); 1353 writel(0, PRCM_SEM);
1358 1354
1359 spin_unlock_irqrestore(&clk_mgt_lock, flags); 1355 spin_unlock_irqrestore(&clk_mgt_lock, flags);
1360 1356
@@ -1380,7 +1376,7 @@ int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
1380 1376
1381 mutex_lock(&mb5_transfer.lock); 1377 mutex_lock(&mb5_transfer.lock);
1382 1378
1383 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(5)) 1379 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(5))
1384 cpu_relax(); 1380 cpu_relax();
1385 1381
1386 writeb(PRCMU_I2C_READ(slave), (tcdm_base + PRCM_REQ_MB5_I2C_SLAVE_OP)); 1382 writeb(PRCMU_I2C_READ(slave), (tcdm_base + PRCM_REQ_MB5_I2C_SLAVE_OP));
@@ -1388,7 +1384,7 @@ int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
1388 writeb(reg, (tcdm_base + PRCM_REQ_MB5_I2C_REG)); 1384 writeb(reg, (tcdm_base + PRCM_REQ_MB5_I2C_REG));
1389 writeb(0, (tcdm_base + PRCM_REQ_MB5_I2C_VAL)); 1385 writeb(0, (tcdm_base + PRCM_REQ_MB5_I2C_VAL));
1390 1386
1391 writel(MBOX_BIT(5), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1387 writel(MBOX_BIT(5), PRCM_MBOX_CPU_SET);
1392 1388
1393 if (!wait_for_completion_timeout(&mb5_transfer.work, 1389 if (!wait_for_completion_timeout(&mb5_transfer.work,
1394 msecs_to_jiffies(20000))) { 1390 msecs_to_jiffies(20000))) {
@@ -1426,7 +1422,7 @@ int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
1426 1422
1427 mutex_lock(&mb5_transfer.lock); 1423 mutex_lock(&mb5_transfer.lock);
1428 1424
1429 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(5)) 1425 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(5))
1430 cpu_relax(); 1426 cpu_relax();
1431 1427
1432 writeb(PRCMU_I2C_WRITE(slave), (tcdm_base + PRCM_REQ_MB5_I2C_SLAVE_OP)); 1428 writeb(PRCMU_I2C_WRITE(slave), (tcdm_base + PRCM_REQ_MB5_I2C_SLAVE_OP));
@@ -1434,7 +1430,7 @@ int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
1434 writeb(reg, (tcdm_base + PRCM_REQ_MB5_I2C_REG)); 1430 writeb(reg, (tcdm_base + PRCM_REQ_MB5_I2C_REG));
1435 writeb(*value, (tcdm_base + PRCM_REQ_MB5_I2C_VAL)); 1431 writeb(*value, (tcdm_base + PRCM_REQ_MB5_I2C_VAL));
1436 1432
1437 writel(MBOX_BIT(5), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1433 writel(MBOX_BIT(5), PRCM_MBOX_CPU_SET);
1438 1434
1439 if (!wait_for_completion_timeout(&mb5_transfer.work, 1435 if (!wait_for_completion_timeout(&mb5_transfer.work,
1440 msecs_to_jiffies(20000))) { 1436 msecs_to_jiffies(20000))) {
@@ -1459,14 +1455,13 @@ void prcmu_ac_wake_req(void)
1459 1455
1460 mutex_lock(&mb0_transfer.ac_wake_lock); 1456 mutex_lock(&mb0_transfer.ac_wake_lock);
1461 1457
1462 val = readl(_PRCMU_BASE + PRCM_HOSTACCESS_REQ); 1458 val = readl(PRCM_HOSTACCESS_REQ);
1463 if (val & PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ) 1459 if (val & PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ)
1464 goto unlock_and_return; 1460 goto unlock_and_return;
1465 1461
1466 atomic_set(&ac_wake_req_state, 1); 1462 atomic_set(&ac_wake_req_state, 1);
1467 1463
1468 writel((val | PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ), 1464 writel((val | PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ), PRCM_HOSTACCESS_REQ);
1469 (_PRCMU_BASE + PRCM_HOSTACCESS_REQ));
1470 1465
1471 if (!wait_for_completion_timeout(&mb0_transfer.ac_wake_work, 1466 if (!wait_for_completion_timeout(&mb0_transfer.ac_wake_work,
1472 msecs_to_jiffies(20000))) { 1467 msecs_to_jiffies(20000))) {
@@ -1487,12 +1482,12 @@ void prcmu_ac_sleep_req()
1487 1482
1488 mutex_lock(&mb0_transfer.ac_wake_lock); 1483 mutex_lock(&mb0_transfer.ac_wake_lock);
1489 1484
1490 val = readl(_PRCMU_BASE + PRCM_HOSTACCESS_REQ); 1485 val = readl(PRCM_HOSTACCESS_REQ);
1491 if (!(val & PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ)) 1486 if (!(val & PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ))
1492 goto unlock_and_return; 1487 goto unlock_and_return;
1493 1488
1494 writel((val & ~PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ), 1489 writel((val & ~PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ),
1495 (_PRCMU_BASE + PRCM_HOSTACCESS_REQ)); 1490 PRCM_HOSTACCESS_REQ);
1496 1491
1497 if (!wait_for_completion_timeout(&mb0_transfer.ac_wake_work, 1492 if (!wait_for_completion_timeout(&mb0_transfer.ac_wake_work,
1498 msecs_to_jiffies(20000))) { 1493 msecs_to_jiffies(20000))) {
@@ -1520,7 +1515,7 @@ bool prcmu_is_ac_wake_requested(void)
1520void prcmu_system_reset(u16 reset_code) 1515void prcmu_system_reset(u16 reset_code)
1521{ 1516{
1522 writew(reset_code, (tcdm_base + PRCM_SW_RST_REASON)); 1517 writew(reset_code, (tcdm_base + PRCM_SW_RST_REASON));
1523 writel(1, (_PRCMU_BASE + PRCM_APE_SOFTRST)); 1518 writel(1, PRCM_APE_SOFTRST);
1524} 1519}
1525 1520
1526/** 1521/**
@@ -1530,11 +1525,11 @@ void prcmu_modem_reset(void)
1530{ 1525{
1531 mutex_lock(&mb1_transfer.lock); 1526 mutex_lock(&mb1_transfer.lock);
1532 1527
1533 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(1)) 1528 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(1))
1534 cpu_relax(); 1529 cpu_relax();
1535 1530
1536 writeb(MB1H_RESET_MODEM, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1)); 1531 writeb(MB1H_RESET_MODEM, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB1));
1537 writel(MBOX_BIT(1), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1532 writel(MBOX_BIT(1), PRCM_MBOX_CPU_SET);
1538 wait_for_completion(&mb1_transfer.work); 1533 wait_for_completion(&mb1_transfer.work);
1539 1534
1540 /* 1535 /*
@@ -1551,11 +1546,11 @@ static void ack_dbb_wakeup(void)
1551 1546
1552 spin_lock_irqsave(&mb0_transfer.lock, flags); 1547 spin_lock_irqsave(&mb0_transfer.lock, flags);
1553 1548
1554 while (readl(_PRCMU_BASE + PRCM_MBOX_CPU_VAL) & MBOX_BIT(0)) 1549 while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(0))
1555 cpu_relax(); 1550 cpu_relax();
1556 1551
1557 writeb(MB0H_READ_WAKEUP_ACK, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB0)); 1552 writeb(MB0H_READ_WAKEUP_ACK, (tcdm_base + PRCM_MBOX_HEADER_REQ_MB0));
1558 writel(MBOX_BIT(0), (_PRCMU_BASE + PRCM_MBOX_CPU_SET)); 1553 writel(MBOX_BIT(0), PRCM_MBOX_CPU_SET);
1559 1554
1560 spin_unlock_irqrestore(&mb0_transfer.lock, flags); 1555 spin_unlock_irqrestore(&mb0_transfer.lock, flags);
1561} 1556}
@@ -1600,7 +1595,7 @@ static bool read_mailbox_0(void)
1600 r = false; 1595 r = false;
1601 break; 1596 break;
1602 } 1597 }
1603 writel(MBOX_BIT(0), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1598 writel(MBOX_BIT(0), PRCM_ARM_IT1_CLR);
1604 return r; 1599 return r;
1605} 1600}
1606 1601
@@ -1613,7 +1608,7 @@ static bool read_mailbox_1(void)
1613 PRCM_ACK_MB1_CURRENT_APE_OPP); 1608 PRCM_ACK_MB1_CURRENT_APE_OPP);
1614 mb1_transfer.ack.ape_voltage_status = readb(tcdm_base + 1609 mb1_transfer.ack.ape_voltage_status = readb(tcdm_base +
1615 PRCM_ACK_MB1_APE_VOLTAGE_STATUS); 1610 PRCM_ACK_MB1_APE_VOLTAGE_STATUS);
1616 writel(MBOX_BIT(1), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1611 writel(MBOX_BIT(1), PRCM_ARM_IT1_CLR);
1617 complete(&mb1_transfer.work); 1612 complete(&mb1_transfer.work);
1618 return false; 1613 return false;
1619} 1614}
@@ -1621,14 +1616,14 @@ static bool read_mailbox_1(void)
1621static bool read_mailbox_2(void) 1616static bool read_mailbox_2(void)
1622{ 1617{
1623 mb2_transfer.ack.status = readb(tcdm_base + PRCM_ACK_MB2_DPS_STATUS); 1618 mb2_transfer.ack.status = readb(tcdm_base + PRCM_ACK_MB2_DPS_STATUS);
1624 writel(MBOX_BIT(2), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1619 writel(MBOX_BIT(2), PRCM_ARM_IT1_CLR);
1625 complete(&mb2_transfer.work); 1620 complete(&mb2_transfer.work);
1626 return false; 1621 return false;
1627} 1622}
1628 1623
1629static bool read_mailbox_3(void) 1624static bool read_mailbox_3(void)
1630{ 1625{
1631 writel(MBOX_BIT(3), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1626 writel(MBOX_BIT(3), PRCM_ARM_IT1_CLR);
1632 return false; 1627 return false;
1633} 1628}
1634 1629
@@ -1650,7 +1645,7 @@ static bool read_mailbox_4(void)
1650 break; 1645 break;
1651 } 1646 }
1652 1647
1653 writel(MBOX_BIT(4), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1648 writel(MBOX_BIT(4), PRCM_ARM_IT1_CLR);
1654 1649
1655 if (do_complete) 1650 if (do_complete)
1656 complete(&mb4_transfer.work); 1651 complete(&mb4_transfer.work);
@@ -1662,20 +1657,20 @@ static bool read_mailbox_5(void)
1662{ 1657{
1663 mb5_transfer.ack.status = readb(tcdm_base + PRCM_ACK_MB5_I2C_STATUS); 1658 mb5_transfer.ack.status = readb(tcdm_base + PRCM_ACK_MB5_I2C_STATUS);
1664 mb5_transfer.ack.value = readb(tcdm_base + PRCM_ACK_MB5_I2C_VAL); 1659 mb5_transfer.ack.value = readb(tcdm_base + PRCM_ACK_MB5_I2C_VAL);
1665 writel(MBOX_BIT(5), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1660 writel(MBOX_BIT(5), PRCM_ARM_IT1_CLR);
1666 complete(&mb5_transfer.work); 1661 complete(&mb5_transfer.work);
1667 return false; 1662 return false;
1668} 1663}
1669 1664
1670static bool read_mailbox_6(void) 1665static bool read_mailbox_6(void)
1671{ 1666{
1672 writel(MBOX_BIT(6), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1667 writel(MBOX_BIT(6), PRCM_ARM_IT1_CLR);
1673 return false; 1668 return false;
1674} 1669}
1675 1670
1676static bool read_mailbox_7(void) 1671static bool read_mailbox_7(void)
1677{ 1672{
1678 writel(MBOX_BIT(7), (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 1673 writel(MBOX_BIT(7), PRCM_ARM_IT1_CLR);
1679 return false; 1674 return false;
1680} 1675}
1681 1676
@@ -1696,7 +1691,7 @@ static irqreturn_t prcmu_irq_handler(int irq, void *data)
1696 u8 n; 1691 u8 n;
1697 irqreturn_t r; 1692 irqreturn_t r;
1698 1693
1699 bits = (readl(_PRCMU_BASE + PRCM_ARM_IT1_VAL) & ALL_MBOX_BITS); 1694 bits = (readl(PRCM_ARM_IT1_VAL) & ALL_MBOX_BITS);
1700 if (unlikely(!bits)) 1695 if (unlikely(!bits))
1701 return IRQ_NONE; 1696 return IRQ_NONE;
1702 1697
@@ -2025,7 +2020,7 @@ static int __init db8500_prcmu_probe(struct platform_device *pdev)
2025 return -ENODEV; 2020 return -ENODEV;
2026 2021
2027 /* Clean up the mailbox interrupts after pre-kernel code. */ 2022 /* Clean up the mailbox interrupts after pre-kernel code. */
2028 writel(ALL_MBOX_BITS, (_PRCMU_BASE + PRCM_ARM_IT1_CLR)); 2023 writel(ALL_MBOX_BITS, PRCM_ARM_IT1_CLR);
2029 2024
2030 err = request_threaded_irq(IRQ_DB8500_PRCMU1, prcmu_irq_handler, 2025 err = request_threaded_irq(IRQ_DB8500_PRCMU1, prcmu_irq_handler,
2031 prcmu_irq_thread_fn, IRQF_NO_SUSPEND, "prcmu", NULL); 2026 prcmu_irq_thread_fn, IRQF_NO_SUSPEND, "prcmu", NULL);