aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/ab8500.c
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2013-03-21 11:59:02 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-03-22 07:03:17 -0400
commit33bc8f46a8ee3fc1836def9713933435b7ff0b90 (patch)
tree02d74c71398ee7accc9a3b602924eb10642811ca /drivers/regulator/ab8500.c
parent3c1b8438d4bc99269aba560739e3e6cb640584f4 (diff)
regulator: ab8500: Another push to synchronise recent AB8500 developments
This patch ensures that many of the recent developments pertaining to the AB8500 regulator device are propagated out into the public arena. It aims to update some of the existing initialisation values in accordance with internal ST-Ericsson code submissions. This single patch was originally a collection of updates which have been squashed together to aid with clarity. Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers/regulator/ab8500.c')
-rw-r--r--drivers/regulator/ab8500.c86
1 files changed, 53 insertions, 33 deletions
diff --git a/drivers/regulator/ab8500.c b/drivers/regulator/ab8500.c
index a847744f8c20..c7784c4bff4f 100644
--- a/drivers/regulator/ab8500.c
+++ b/drivers/regulator/ab8500.c
@@ -613,11 +613,19 @@ struct ab8500_reg_init {
613 613
614static struct ab8500_reg_init ab8500_reg_init[] = { 614static struct ab8500_reg_init ab8500_reg_init[] = {
615 /* 615 /*
616 * 0x30, VanaRequestCtrl 616 * 0x03, VarmRequestCtrl
617 * 0x0c, VapeRequestCtrl
618 * 0x30, Vsmps1RequestCtrl
619 * 0xc0, Vsmps2RequestCtrl
620 */
621 REG_INIT(AB8500_REGUREQUESTCTRL1, 0x03, 0x03, 0xff),
622 /*
623 * 0x03, Vsmps3RequestCtrl
617 * 0x0c, VpllRequestCtrl 624 * 0x0c, VpllRequestCtrl
625 * 0x30, VanaRequestCtrl
618 * 0xc0, VextSupply1RequestCtrl 626 * 0xc0, VextSupply1RequestCtrl
619 */ 627 */
620 REG_INIT(AB8500_REGUREQUESTCTRL2, 0x03, 0x04, 0xfc), 628 REG_INIT(AB8500_REGUREQUESTCTRL2, 0x03, 0x04, 0xff),
621 /* 629 /*
622 * 0x03, VextSupply2RequestCtrl 630 * 0x03, VextSupply2RequestCtrl
623 * 0x0c, VextSupply3RequestCtrl 631 * 0x0c, VextSupply3RequestCtrl
@@ -642,50 +650,71 @@ static struct ab8500_reg_init ab8500_reg_init[] = {
642 */ 650 */
643 REG_INIT(AB8500_REGUSYSCLKREQ1HPVALID1, 0x03, 0x07, 0xff), 651 REG_INIT(AB8500_REGUSYSCLKREQ1HPVALID1, 0x03, 0x07, 0xff),
644 /* 652 /*
653 * 0x01, VapeSysClkReq1HPValid
654 * 0x02, VarmSysClkReq1HPValid
655 * 0x04, VbbSysClkReq1HPValid
656 * 0x08, VmodSysClkReq1HPValid
645 * 0x10, VextSupply1SysClkReq1HPValid 657 * 0x10, VextSupply1SysClkReq1HPValid
646 * 0x20, VextSupply2SysClkReq1HPValid 658 * 0x20, VextSupply2SysClkReq1HPValid
647 * 0x40, VextSupply3SysClkReq1HPValid 659 * 0x40, VextSupply3SysClkReq1HPValid
648 */ 660 */
649 REG_INIT(AB8500_REGUSYSCLKREQ1HPVALID2, 0x03, 0x08, 0x70), 661 REG_INIT(AB8500_REGUSYSCLKREQ1HPVALID2, 0x03, 0x08, 0x7f),
650 /* 662 /*
663 * 0x01, Vsmps1HwHPReq1Valid
664 * 0x02, Vsmps2HwHPReq1Valid
665 * 0x04, Vsmps3HwHPReq1Valid
651 * 0x08, VanaHwHPReq1Valid 666 * 0x08, VanaHwHPReq1Valid
667 * 0x10, VpllHwHPReq1Valid
652 * 0x20, Vaux1HwHPReq1Valid 668 * 0x20, Vaux1HwHPReq1Valid
653 * 0x40, Vaux2HwHPReq1Valid 669 * 0x40, Vaux2HwHPReq1Valid
654 * 0x80, Vaux3HwHPReq1Valid 670 * 0x80, Vaux3HwHPReq1Valid
655 */ 671 */
656 REG_INIT(AB8500_REGUHWHPREQ1VALID1, 0x03, 0x09, 0xe8), 672 REG_INIT(AB8500_REGUHWHPREQ1VALID1, 0x03, 0x09, 0xff),
657 /* 673 /*
658 * 0x01, VextSupply1HwHPReq1Valid 674 * 0x01, VextSupply1HwHPReq1Valid
659 * 0x02, VextSupply2HwHPReq1Valid 675 * 0x02, VextSupply2HwHPReq1Valid
660 * 0x04, VextSupply3HwHPReq1Valid 676 * 0x04, VextSupply3HwHPReq1Valid
677 * 0x08, VmodHwHPReq1Valid
661 */ 678 */
662 REG_INIT(AB8500_REGUHWHPREQ1VALID2, 0x03, 0x0a, 0x07), 679 REG_INIT(AB8500_REGUHWHPREQ1VALID2, 0x03, 0x0a, 0x0f),
663 /* 680 /*
681 * 0x01, Vsmps1HwHPReq2Valid
682 * 0x02, Vsmps2HwHPReq2Valid
683 * 0x03, Vsmps3HwHPReq2Valid
664 * 0x08, VanaHwHPReq2Valid 684 * 0x08, VanaHwHPReq2Valid
685 * 0x10, VpllHwHPReq2Valid
665 * 0x20, Vaux1HwHPReq2Valid 686 * 0x20, Vaux1HwHPReq2Valid
666 * 0x40, Vaux2HwHPReq2Valid 687 * 0x40, Vaux2HwHPReq2Valid
667 * 0x80, Vaux3HwHPReq2Valid 688 * 0x80, Vaux3HwHPReq2Valid
668 */ 689 */
669 REG_INIT(AB8500_REGUHWHPREQ2VALID1, 0x03, 0x0b, 0xe8), 690 REG_INIT(AB8500_REGUHWHPREQ2VALID1, 0x03, 0x0b, 0xff),
670 /* 691 /*
671 * 0x01, VextSupply1HwHPReq2Valid 692 * 0x01, VextSupply1HwHPReq2Valid
672 * 0x02, VextSupply2HwHPReq2Valid 693 * 0x02, VextSupply2HwHPReq2Valid
673 * 0x04, VextSupply3HwHPReq2Valid 694 * 0x04, VextSupply3HwHPReq2Valid
695 * 0x08, VmodHwHPReq2Valid
674 */ 696 */
675 REG_INIT(AB8500_REGUHWHPREQ2VALID2, 0x03, 0x0c, 0x07), 697 REG_INIT(AB8500_REGUHWHPREQ2VALID2, 0x03, 0x0c, 0x0f),
676 /* 698 /*
699 * 0x01, VapeSwHPReqValid
700 * 0x02, VarmSwHPReqValid
701 * 0x04, Vsmps1SwHPReqValid
702 * 0x08, Vsmps2SwHPReqValid
703 * 0x10, Vsmps3SwHPReqValid
677 * 0x20, VanaSwHPReqValid 704 * 0x20, VanaSwHPReqValid
705 * 0x40, VpllSwHPReqValid
678 * 0x80, Vaux1SwHPReqValid 706 * 0x80, Vaux1SwHPReqValid
679 */ 707 */
680 REG_INIT(AB8500_REGUSWHPREQVALID1, 0x03, 0x0d, 0xa0), 708 REG_INIT(AB8500_REGUSWHPREQVALID1, 0x03, 0x0d, 0xff),
681 /* 709 /*
682 * 0x01, Vaux2SwHPReqValid 710 * 0x01, Vaux2SwHPReqValid
683 * 0x02, Vaux3SwHPReqValid 711 * 0x02, Vaux3SwHPReqValid
684 * 0x04, VextSupply1SwHPReqValid 712 * 0x04, VextSupply1SwHPReqValid
685 * 0x08, VextSupply2SwHPReqValid 713 * 0x08, VextSupply2SwHPReqValid
686 * 0x10, VextSupply3SwHPReqValid 714 * 0x10, VextSupply3SwHPReqValid
715 * 0x20, VmodSwHPReqValid
687 */ 716 */
688 REG_INIT(AB8500_REGUSWHPREQVALID2, 0x03, 0x0e, 0x1f), 717 REG_INIT(AB8500_REGUSWHPREQVALID2, 0x03, 0x0e, 0x3f),
689 /* 718 /*
690 * 0x02, SysClkReq2Valid1 719 * 0x02, SysClkReq2Valid1
691 * ... 720 * ...
@@ -719,36 +748,22 @@ static struct ab8500_reg_init ab8500_reg_init[] = {
719 */ 748 */
720 REG_INIT(AB8500_REGUCTRL1VAMIC, 0x03, 0x84, 0x03), 749 REG_INIT(AB8500_REGUCTRL1VAMIC, 0x03, 0x84, 0x03),
721 /* 750 /*
722 * 0x0c, VBBNRegu
723 * 0x03, VBBPRegu
724 * NOTE! PRCMU register
725 */
726 REG_INIT(AB8500_ARMREGU2, 0x04, 0x01, 0x0f),
727 /*
728 * 0x0c, VBBPSel1
729 * 0x03, VBBNSel1
730 * NOTE! PRCMU register
731 */
732 REG_INIT(AB8500_VBBSEL1, 0x04, 0x11, 0x0f),
733 /*
734 * 0x0c, VBBNSel2
735 * 0x03, VBBPSel2
736 * NOTE! PRCMU register
737 */
738 REG_INIT(AB8500_VBBSEL2, 0x04, 0x12, 0x0f),
739 /*
740 * 0x03, Vsmps1Regu 751 * 0x03, Vsmps1Regu
741 * 0x0c, Vsmps1SelCtrl 752 * 0x0c, Vsmps1SelCtrl
753 * 0x10, Vsmps1AutoMode
754 * 0x20, Vsmps1PWMMode
742 */ 755 */
743 REG_INIT(AB8500_VSMPS1REGU, 0x04, 0x03, 0x0f), 756 REG_INIT(AB8500_VSMPS1REGU, 0x04, 0x03, 0x3f),
744 /* 757 /*
745 * 0x03, Vsmps2Regu 758 * 0x03, Vsmps2Regu
746 * 0x0c, Vsmps2SelCtrl 759 * 0x0c, Vsmps2SelCtrl
760 * 0x10, Vsmps2AutoMode
761 * 0x20, Vsmps2PWMMode
747 */ 762 */
748 REG_INIT(AB8500_VSMPS2REGU, 0x04, 0x04, 0x0f), 763 REG_INIT(AB8500_VSMPS2REGU, 0x04, 0x04, 0x3f),
749 /* 764 /*
750 * 0x0c, VanaRegu
751 * 0x03, VpllRegu 765 * 0x03, VpllRegu
766 * 0x0c, VanaRegu
752 */ 767 */
753 REG_INIT(AB8500_VPLLVANAREGU, 0x04, 0x06, 0x0f), 768 REG_INIT(AB8500_VPLLVANAREGU, 0x04, 0x06, 0x0f),
754 /* 769 /*
@@ -788,13 +803,16 @@ static struct ab8500_reg_init ab8500_reg_init[] = {
788 REG_INIT(AB8500_VAUX2SEL, 0x04, 0x20, 0x0f), 803 REG_INIT(AB8500_VAUX2SEL, 0x04, 0x20, 0x0f),
789 /* 804 /*
790 * 0x07, Vaux3Sel 805 * 0x07, Vaux3Sel
806 * 0x30, Vrf1Sel
791 */ 807 */
792 REG_INIT(AB8500_VRF1VAUX3SEL, 0x04, 0x21, 0x07), 808 REG_INIT(AB8500_VRF1VAUX3SEL, 0x04, 0x21, 0x37),
793 /* 809 /*
794 * 0x01, VextSupply12LP 810 * 0x01, VextSupply12LP
795 */ 811 */
796 REG_INIT(AB8500_REGUCTRL2SPARE, 0x04, 0x22, 0x01), 812 REG_INIT(AB8500_REGUCTRL2SPARE, 0x04, 0x22, 0x01),
797 /* 813 /*
814 * 0x01, VpllDisch
815 * 0x02, Vrf1Disch
798 * 0x04, Vaux1Disch 816 * 0x04, Vaux1Disch
799 * 0x08, Vaux2Disch 817 * 0x08, Vaux2Disch
800 * 0x10, Vaux3Disch 818 * 0x10, Vaux3Disch
@@ -802,13 +820,15 @@ static struct ab8500_reg_init ab8500_reg_init[] = {
802 * 0x40, VTVoutDisch 820 * 0x40, VTVoutDisch
803 * 0x80, VaudioDisch 821 * 0x80, VaudioDisch
804 */ 822 */
805 REG_INIT(AB8500_REGUCTRLDISCH, 0x04, 0x43, 0xfc), 823 REG_INIT(AB8500_REGUCTRLDISCH, 0x04, 0x43, 0xff),
806 /* 824 /*
825 * 0x01, VsimDisch
807 * 0x02, VanaDisch 826 * 0x02, VanaDisch
808 * 0x04, VdmicPullDownEna 827 * 0x04, VdmicPullDownEna
828 * 0x08, VpllPullDownEna
809 * 0x10, VdmicDisch 829 * 0x10, VdmicDisch
810 */ 830 */
811 REG_INIT(AB8500_REGUCTRLDISCH2, 0x04, 0x44, 0x16), 831 REG_INIT(AB8500_REGUCTRLDISCH2, 0x04, 0x44, 0x1f),
812}; 832};
813 833
814static int ab8500_regulator_init_registers(struct platform_device *pdev, 834static int ab8500_regulator_init_registers(struct platform_device *pdev,