diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2006-02-07 15:16:27 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-02-07 15:16:27 -0500 |
commit | 5d1769ac3d0ea5ff3a286b097c21faaf6a9e6859 (patch) | |
tree | 63429c2222a55509dc81269233bbe7a321bb86ed /arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | |
parent | 23a56e2cbec2860ef02d6720508fbcb07accc8b4 (diff) | |
parent | ce4b50f2fc62267eeaf331c41bc11b92d9bc7865 (diff) |
Merge branch 'master'
Diffstat (limited to 'arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c')
-rw-r--r-- | arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | 140 |
1 files changed, 95 insertions, 45 deletions
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c index 990fcb294bab..2ad6401d2af4 100644 --- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c +++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | |||
@@ -53,6 +53,8 @@ | |||
53 | #include <linux/interrupt.h> | 53 | #include <linux/interrupt.h> |
54 | #include <linux/pci.h> | 54 | #include <linux/pci.h> |
55 | #include <linux/timex.h> | 55 | #include <linux/timex.h> |
56 | #include <linux/pm.h> | ||
57 | |||
56 | #include <asm/bootinfo.h> | 58 | #include <asm/bootinfo.h> |
57 | #include <asm/page.h> | 59 | #include <asm/page.h> |
58 | #include <asm/io.h> | 60 | #include <asm/io.h> |
@@ -537,19 +539,10 @@ void tx4927_pci_setup(void) | |||
537 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI2, | 539 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI2, |
538 | "0x%08lx=mips_io_port_base", | 540 | "0x%08lx=mips_io_port_base", |
539 | mips_io_port_base); | 541 | mips_io_port_base); |
540 | |||
541 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI2, | ||
542 | "setup pci_io_resource to 0x%08lx 0x%08lx\n", | ||
543 | pci_io_resource.start, | ||
544 | pci_io_resource.end); | ||
545 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI2, | ||
546 | "setup pci_mem_resource to 0x%08lx 0x%08lx\n", | ||
547 | pci_mem_resource.start, | ||
548 | pci_mem_resource.end); | ||
549 | |||
550 | if (!called) { | 542 | if (!called) { |
551 | printk | 543 | printk |
552 | ("TX4927 PCIC -- DID:%04x VID:%04x RID:%02x Arbiter:%s\n", | 544 | ("%s PCIC -- DID:%04x VID:%04x RID:%02x Arbiter:%s\n", |
545 | toshiba_name, | ||
553 | (unsigned short) (tx4927_pcicptr->pciid >> 16), | 546 | (unsigned short) (tx4927_pcicptr->pciid >> 16), |
554 | (unsigned short) (tx4927_pcicptr->pciid & 0xffff), | 547 | (unsigned short) (tx4927_pcicptr->pciid & 0xffff), |
555 | (unsigned short) (tx4927_pcicptr->pciccrev & 0xff), | 548 | (unsigned short) (tx4927_pcicptr->pciccrev & 0xff), |
@@ -562,21 +555,52 @@ void tx4927_pci_setup(void) | |||
562 | (tx4927_ccfgptr->ccfg & TX4927_CCFG_PCI66) ? " PCI66" : ""); | 555 | (tx4927_ccfgptr->ccfg & TX4927_CCFG_PCI66) ? " PCI66" : ""); |
563 | if (tx4927_ccfgptr->pcfg & TX4927_PCFG_PCICLKEN_ALL) { | 556 | if (tx4927_ccfgptr->pcfg & TX4927_PCFG_PCICLKEN_ALL) { |
564 | int pciclk = 0; | 557 | int pciclk = 0; |
565 | switch ((unsigned long) tx4927_ccfgptr-> | 558 | if (mips_machtype == MACH_TOSHIBA_RBTX4937) |
566 | ccfg & TX4927_CCFG_PCIDIVMODE_MASK) { | 559 | switch ((unsigned long) tx4927_ccfgptr-> |
567 | case TX4927_CCFG_PCIDIVMODE_2_5: | 560 | ccfg & TX4937_CCFG_PCIDIVMODE_MASK) { |
568 | pciclk = tx4927_cpu_clock * 2 / 5; | 561 | case TX4937_CCFG_PCIDIVMODE_4: |
569 | break; | 562 | pciclk = tx4927_cpu_clock / 4; |
570 | case TX4927_CCFG_PCIDIVMODE_3: | 563 | break; |
571 | pciclk = tx4927_cpu_clock / 3; | 564 | case TX4937_CCFG_PCIDIVMODE_4_5: |
572 | break; | 565 | pciclk = tx4927_cpu_clock * 2 / 9; |
573 | case TX4927_CCFG_PCIDIVMODE_5: | 566 | break; |
574 | pciclk = tx4927_cpu_clock / 5; | 567 | case TX4937_CCFG_PCIDIVMODE_5: |
575 | break; | 568 | pciclk = tx4927_cpu_clock / 5; |
576 | case TX4927_CCFG_PCIDIVMODE_6: | 569 | break; |
577 | pciclk = tx4927_cpu_clock / 6; | 570 | case TX4937_CCFG_PCIDIVMODE_5_5: |
578 | break; | 571 | pciclk = tx4927_cpu_clock * 2 / 11; |
579 | } | 572 | break; |
573 | case TX4937_CCFG_PCIDIVMODE_8: | ||
574 | pciclk = tx4927_cpu_clock / 8; | ||
575 | break; | ||
576 | case TX4937_CCFG_PCIDIVMODE_9: | ||
577 | pciclk = tx4927_cpu_clock / 9; | ||
578 | break; | ||
579 | case TX4937_CCFG_PCIDIVMODE_10: | ||
580 | pciclk = tx4927_cpu_clock / 10; | ||
581 | break; | ||
582 | case TX4937_CCFG_PCIDIVMODE_11: | ||
583 | pciclk = tx4927_cpu_clock / 11; | ||
584 | break; | ||
585 | } | ||
586 | |||
587 | else | ||
588 | switch ((unsigned long) tx4927_ccfgptr-> | ||
589 | ccfg & TX4927_CCFG_PCIDIVMODE_MASK) { | ||
590 | case TX4927_CCFG_PCIDIVMODE_2_5: | ||
591 | pciclk = tx4927_cpu_clock * 2 / 5; | ||
592 | break; | ||
593 | case TX4927_CCFG_PCIDIVMODE_3: | ||
594 | pciclk = tx4927_cpu_clock / 3; | ||
595 | break; | ||
596 | case TX4927_CCFG_PCIDIVMODE_5: | ||
597 | pciclk = tx4927_cpu_clock / 5; | ||
598 | break; | ||
599 | case TX4927_CCFG_PCIDIVMODE_6: | ||
600 | pciclk = tx4927_cpu_clock / 6; | ||
601 | break; | ||
602 | } | ||
603 | |||
580 | printk("Internal(%dMHz)", pciclk / 1000000); | 604 | printk("Internal(%dMHz)", pciclk / 1000000); |
581 | } else { | 605 | } else { |
582 | int pciclk = 0; | 606 | int pciclk = 0; |
@@ -814,24 +838,40 @@ void __init toshiba_rbtx4927_setup(void) | |||
814 | ":ResetRoutines\n"); | 838 | ":ResetRoutines\n"); |
815 | _machine_restart = toshiba_rbtx4927_restart; | 839 | _machine_restart = toshiba_rbtx4927_restart; |
816 | _machine_halt = toshiba_rbtx4927_halt; | 840 | _machine_halt = toshiba_rbtx4927_halt; |
817 | _machine_power_off = toshiba_rbtx4927_power_off; | 841 | pm_power_off = toshiba_rbtx4927_power_off; |
818 | 842 | ||
819 | #ifdef CONFIG_PCI | 843 | #ifdef CONFIG_PCI |
820 | 844 | ||
821 | /* PCIC */ | 845 | /* PCIC */ |
822 | /* | 846 | /* |
823 | * ASSUMPTION: PCIDIVMODE is configured for PCI 33MHz or 66MHz. | 847 | * ASSUMPTION: PCIDIVMODE is configured for PCI 33MHz or 66MHz. |
824 | * PCIDIVMODE[12:11]'s initial value are given by S9[4:3] (ON:0, OFF:1). | 848 | * |
849 | * For TX4927: | ||
850 | * PCIDIVMODE[12:11]'s initial value is given by S9[4:3] (ON:0, OFF:1). | ||
825 | * CPU 166MHz: PCI 66MHz : PCIDIVMODE: 00 (1/2.5) | 851 | * CPU 166MHz: PCI 66MHz : PCIDIVMODE: 00 (1/2.5) |
826 | * CPU 200MHz: PCI 66MHz : PCIDIVMODE: 01 (1/3) | 852 | * CPU 200MHz: PCI 66MHz : PCIDIVMODE: 01 (1/3) |
827 | * CPU 166MHz: PCI 33MHz : PCIDIVMODE: 10 (1/5) | 853 | * CPU 166MHz: PCI 33MHz : PCIDIVMODE: 10 (1/5) |
828 | * CPU 200MHz: PCI 33MHz : PCIDIVMODE: 11 (1/6) | 854 | * CPU 200MHz: PCI 33MHz : PCIDIVMODE: 11 (1/6) |
829 | * i.e. S9[3]: ON (83MHz), OFF (100MHz) | 855 | * i.e. S9[3]: ON (83MHz), OFF (100MHz) |
856 | * | ||
857 | * For TX4937: | ||
858 | * PCIDIVMODE[12:11]'s initial value is given by S1[5:4] (ON:0, OFF:1) | ||
859 | * PCIDIVMODE[10] is 0. | ||
860 | * CPU 266MHz: PCI 33MHz : PCIDIVMODE: 000 (1/8) | ||
861 | * CPU 266MHz: PCI 66MHz : PCIDIVMODE: 001 (1/4) | ||
862 | * CPU 300MHz: PCI 33MHz : PCIDIVMODE: 010 (1/9) | ||
863 | * CPU 300MHz: PCI 66MHz : PCIDIVMODE: 011 (1/4.5) | ||
864 | * CPU 333MHz: PCI 33MHz : PCIDIVMODE: 100 (1/10) | ||
865 | * CPU 333MHz: PCI 66MHz : PCIDIVMODE: 101 (1/5) | ||
866 | * | ||
830 | */ | 867 | */ |
831 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI1, | 868 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI1, |
832 | "ccfg is %lx, DIV is %x\n", | 869 | "ccfg is %lx, PCIDIVMODE is %x\n", |
833 | (unsigned long) tx4927_ccfgptr-> | 870 | (unsigned long) tx4927_ccfgptr->ccfg, |
834 | ccfg, TX4927_CCFG_PCIDIVMODE_MASK); | 871 | (unsigned long) tx4927_ccfgptr->ccfg & |
872 | (mips_machtype == MACH_TOSHIBA_RBTX4937 ? | ||
873 | TX4937_CCFG_PCIDIVMODE_MASK : | ||
874 | TX4927_CCFG_PCIDIVMODE_MASK)); | ||
835 | 875 | ||
836 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI1, | 876 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI1, |
837 | "PCI66 mode is %lx, PCI mode is %lx, pci arb is %lx\n", | 877 | "PCI66 mode is %lx, PCI mode is %lx, pci arb is %lx\n", |
@@ -842,20 +882,30 @@ void __init toshiba_rbtx4927_setup(void) | |||
842 | (unsigned long) tx4927_ccfgptr-> | 882 | (unsigned long) tx4927_ccfgptr-> |
843 | ccfg & TX4927_CCFG_PCIXARB); | 883 | ccfg & TX4927_CCFG_PCIXARB); |
844 | 884 | ||
845 | TOSHIBA_RBTX4927_SETUP_DPRINTK(TOSHIBA_RBTX4927_SETUP_PCI1, | 885 | if (mips_machtype == MACH_TOSHIBA_RBTX4937) |
846 | "PCIDIVMODE is %lx\n", | 886 | switch ((unsigned long)tx4927_ccfgptr-> |
847 | (unsigned long) tx4927_ccfgptr-> | 887 | ccfg & TX4937_CCFG_PCIDIVMODE_MASK) { |
848 | ccfg & TX4927_CCFG_PCIDIVMODE_MASK); | 888 | case TX4937_CCFG_PCIDIVMODE_8: |
849 | 889 | case TX4937_CCFG_PCIDIVMODE_4: | |
850 | switch ((unsigned long) tx4927_ccfgptr-> | 890 | tx4927_cpu_clock = 266666666; /* 266MHz */ |
851 | ccfg & TX4927_CCFG_PCIDIVMODE_MASK) { | 891 | break; |
852 | case TX4927_CCFG_PCIDIVMODE_2_5: | 892 | case TX4937_CCFG_PCIDIVMODE_9: |
853 | case TX4927_CCFG_PCIDIVMODE_5: | 893 | case TX4937_CCFG_PCIDIVMODE_4_5: |
854 | tx4927_cpu_clock = 166000000; /* 166MHz */ | 894 | tx4927_cpu_clock = 300000000; /* 300MHz */ |
855 | break; | 895 | break; |
856 | default: | 896 | default: |
857 | tx4927_cpu_clock = 200000000; /* 200MHz */ | 897 | tx4927_cpu_clock = 333333333; /* 333MHz */ |
858 | } | 898 | } |
899 | else | ||
900 | switch ((unsigned long)tx4927_ccfgptr-> | ||
901 | ccfg & TX4927_CCFG_PCIDIVMODE_MASK) { | ||
902 | case TX4927_CCFG_PCIDIVMODE_2_5: | ||
903 | case TX4927_CCFG_PCIDIVMODE_5: | ||
904 | tx4927_cpu_clock = 166666666; /* 166MHz */ | ||
905 | break; | ||
906 | default: | ||
907 | tx4927_cpu_clock = 200000000; /* 200MHz */ | ||
908 | } | ||
859 | 909 | ||
860 | /* CCFG */ | 910 | /* CCFG */ |
861 | /* enable Timeout BusError */ | 911 | /* enable Timeout BusError */ |