aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2005-10-10 11:38:52 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-10 11:38:52 -0400
commiteb1b74e097db51a213600e8c776db754d7056e6a (patch)
treeb16c3b9c42e01a3b5affb70621de6587f4dd4651 /arch
parent50f72b57946d565db74fae71bac23f3f319311c8 (diff)
parent7dead80cbee3259e3a9f25bfc65c8dc769a19e0e (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/common/scoop.c20
-rw-r--r--arch/arm/mach-pxa/corgi.c1
-rw-r--r--arch/arm/mach-sa1100/collie.c6
-rw-r--r--arch/arm/mm/alignment.c11
-rw-r--r--arch/arm/tools/mach-types90
5 files changed, 118 insertions, 10 deletions
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c
index d3a04c2a2c85..9e5245c702de 100644
--- a/arch/arm/common/scoop.c
+++ b/arch/arm/common/scoop.c
@@ -26,6 +26,8 @@ struct scoop_pcmcia_dev *scoop_devs;
26struct scoop_dev { 26struct scoop_dev {
27 void *base; 27 void *base;
28 spinlock_t scoop_lock; 28 spinlock_t scoop_lock;
29 unsigned short suspend_clr;
30 unsigned short suspend_set;
29 u32 scoop_gpwr; 31 u32 scoop_gpwr;
30}; 32};
31 33
@@ -90,14 +92,24 @@ EXPORT_SYMBOL(reset_scoop);
90EXPORT_SYMBOL(read_scoop_reg); 92EXPORT_SYMBOL(read_scoop_reg);
91EXPORT_SYMBOL(write_scoop_reg); 93EXPORT_SYMBOL(write_scoop_reg);
92 94
95static void check_scoop_reg(struct scoop_dev *sdev)
96{
97 unsigned short mcr;
98
99 mcr = SCOOP_REG(sdev->base, SCOOP_MCR);
100 if ((mcr & 0x100) == 0)
101 SCOOP_REG(sdev->base, SCOOP_MCR) = 0x0101;
102}
103
93#ifdef CONFIG_PM 104#ifdef CONFIG_PM
94static int scoop_suspend(struct device *dev, pm_message_t state, uint32_t level) 105static int scoop_suspend(struct device *dev, pm_message_t state, uint32_t level)
95{ 106{
96 if (level == SUSPEND_POWER_DOWN) { 107 if (level == SUSPEND_POWER_DOWN) {
97 struct scoop_dev *sdev = dev_get_drvdata(dev); 108 struct scoop_dev *sdev = dev_get_drvdata(dev);
98 109
99 sdev->scoop_gpwr = SCOOP_REG(sdev->base,SCOOP_GPWR); 110 check_scoop_reg(sdev);
100 SCOOP_REG(sdev->base,SCOOP_GPWR) = 0; 111 sdev->scoop_gpwr = SCOOP_REG(sdev->base, SCOOP_GPWR);
112 SCOOP_REG(sdev->base, SCOOP_GPWR) = (sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set;
101 } 113 }
102 return 0; 114 return 0;
103} 115}
@@ -107,6 +119,7 @@ static int scoop_resume(struct device *dev, uint32_t level)
107 if (level == RESUME_POWER_ON) { 119 if (level == RESUME_POWER_ON) {
108 struct scoop_dev *sdev = dev_get_drvdata(dev); 120 struct scoop_dev *sdev = dev_get_drvdata(dev);
109 121
122 check_scoop_reg(sdev);
110 SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr; 123 SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr;
111 } 124 }
112 return 0; 125 return 0;
@@ -151,6 +164,9 @@ int __init scoop_probe(struct device *dev)
151 SCOOP_REG(devptr->base, SCOOP_GPCR) = inf->io_dir & 0xffff; 164 SCOOP_REG(devptr->base, SCOOP_GPCR) = inf->io_dir & 0xffff;
152 SCOOP_REG(devptr->base, SCOOP_GPWR) = inf->io_out & 0xffff; 165 SCOOP_REG(devptr->base, SCOOP_GPWR) = inf->io_out & 0xffff;
153 166
167 devptr->suspend_clr = inf->suspend_clr;
168 devptr->suspend_set = inf->suspend_set;
169
154 return 0; 170 return 0;
155} 171}
156 172
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index be37586cb1b0..60c8b9d8bb9c 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -36,6 +36,7 @@
36#include <asm/arch/mmc.h> 36#include <asm/arch/mmc.h>
37#include <asm/arch/udc.h> 37#include <asm/arch/udc.h>
38#include <asm/arch/corgi.h> 38#include <asm/arch/corgi.h>
39#include <asm/arch/sharpsl.h>
39 40
40#include <asm/mach/sharpsl_param.h> 41#include <asm/mach/sharpsl_param.h>
41#include <asm/hardware/scoop.h> 42#include <asm/hardware/scoop.h>
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
index 25d6a4e27533..6ecab7e2c238 100644
--- a/arch/arm/mach-sa1100/collie.c
+++ b/arch/arm/mach-sa1100/collie.c
@@ -111,11 +111,11 @@ static struct mtd_partition collie_partitions[] = {
111 111
112static void collie_set_vpp(int vpp) 112static void collie_set_vpp(int vpp)
113{ 113{
114 write_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR, read_scoop_reg(SCOOP_GPCR) | COLLIE_SCP_VPEN); 114 write_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR) | COLLIE_SCP_VPEN);
115 if (vpp) 115 if (vpp)
116 write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) | COLLIE_SCP_VPEN); 116 write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR) | COLLIE_SCP_VPEN);
117 else 117 else
118 write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) & ~COLLIE_SCP_VPEN); 118 write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR) & ~COLLIE_SCP_VPEN);
119} 119}
120 120
121static struct flash_platform_data collie_flash_data = { 121static struct flash_platform_data collie_flash_data = {
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c
index 4b39d867ac14..f35e69e9c65c 100644
--- a/arch/arm/mm/alignment.c
+++ b/arch/arm/mm/alignment.c
@@ -330,6 +330,9 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr,
330{ 330{
331 unsigned int rd = RD_BITS(instr); 331 unsigned int rd = RD_BITS(instr);
332 332
333 if (((rd & 1) == 1) || (rd == 14))
334 goto bad;
335
333 ai_dword += 1; 336 ai_dword += 1;
334 337
335 if (user_mode(regs)) 338 if (user_mode(regs))
@@ -361,7 +364,8 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr,
361 } 364 }
362 365
363 return TYPE_LDST; 366 return TYPE_LDST;
364 367 bad:
368 return TYPE_ERROR;
365 fault: 369 fault:
366 return TYPE_FAULT; 370 return TYPE_FAULT;
367} 371}
@@ -663,6 +667,8 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
663 else if ((instr & 0x001000f0) == 0x000000d0 || /* LDRD */ 667 else if ((instr & 0x001000f0) == 0x000000d0 || /* LDRD */
664 (instr & 0x001000f0) == 0x000000f0) /* STRD */ 668 (instr & 0x001000f0) == 0x000000f0) /* STRD */
665 handler = do_alignment_ldrdstrd; 669 handler = do_alignment_ldrdstrd;
670 else if ((instr & 0x01f00ff0) == 0x01000090) /* SWP */
671 goto swp;
666 else 672 else
667 goto bad; 673 goto bad;
668 break; 674 break;
@@ -733,6 +739,9 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
733 do_bad_area(current, current->mm, addr, fsr, regs); 739 do_bad_area(current, current->mm, addr, fsr, regs);
734 return 0; 740 return 0;
735 741
742 swp:
743 printk(KERN_ERR "Alignment trap: not handling swp instruction\n");
744
736 bad: 745 bad:
737 /* 746 /*
738 * Oops, we didn't handle the instruction. 747 * Oops, we didn't handle the instruction.
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
index 6d3a79e5fef8..ae7c64b8cec3 100644
--- a/arch/arm/tools/mach-types
+++ b/arch/arm/tools/mach-types
@@ -2,11 +2,17 @@
2# 2#
3# This file is linux/arch/arm/tools/mach-types 3# This file is linux/arch/arm/tools/mach-types
4# 4#
5# Up to date versions of this file can be obtained from:
6#
7# http://www.arm.linux.org.uk/developer/machines/?action=download
8#
5# Please do not send patches to this file; it is automatically generated! 9# Please do not send patches to this file; it is automatically generated!
6# To add an entry into this database, please see Documentation/arm/README, 10# To add an entry into this database, please see Documentation/arm/README,
7# or contact rmk@arm.linux.org.uk 11# or visit:
12#
13# http://www.arm.linux.org.uk/developer/machines/?action=new
8# 14#
9# Last update: Thu Jun 23 20:19:33 2005 15# Last update: Mon Oct 10 09:46:25 2005
10# 16#
11# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number 17# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
12# 18#
@@ -421,7 +427,7 @@ mt02 MACH_MT02 MT02 410
421mport3s MACH_MPORT3S MPORT3S 411 427mport3s MACH_MPORT3S MPORT3S 411
422ra_alpha MACH_RA_ALPHA RA_ALPHA 412 428ra_alpha MACH_RA_ALPHA RA_ALPHA 412
423xcep MACH_XCEP XCEP 413 429xcep MACH_XCEP XCEP 413
424arcom_mercury MACH_ARCOM_MERCURY ARCOM_MERCURY 414 430arcom_vulcan MACH_ARCOM_VULCAN ARCOM_VULCAN 414
425stargate MACH_STARGATE STARGATE 415 431stargate MACH_STARGATE STARGATE 415
426armadilloj MACH_ARMADILLOJ ARMADILLOJ 416 432armadilloj MACH_ARMADILLOJ ARMADILLOJ 416
427elroy_jack MACH_ELROY_JACK ELROY_JACK 417 433elroy_jack MACH_ELROY_JACK ELROY_JACK 417
@@ -454,7 +460,7 @@ esl_sarva MACH_ESL_SARVA ESL_SARVA 443
454xm250 MACH_XM250 XM250 444 460xm250 MACH_XM250 XM250 444
455t6tc1xb MACH_T6TC1XB T6TC1XB 445 461t6tc1xb MACH_T6TC1XB T6TC1XB 445
456ess710 MACH_ESS710 ESS710 446 462ess710 MACH_ESS710 ESS710 446
457mx3ads MACH_MX3ADS MX3ADS 447 463mx31ads MACH_MX3ADS MX3ADS 447
458himalaya MACH_HIMALAYA HIMALAYA 448 464himalaya MACH_HIMALAYA HIMALAYA 448
459bolfenk MACH_BOLFENK BOLFENK 449 465bolfenk MACH_BOLFENK BOLFENK 449
460at91rm9200kr MACH_AT91RM9200KR AT91RM9200KR 450 466at91rm9200kr MACH_AT91RM9200KR AT91RM9200KR 450
@@ -787,3 +793,79 @@ ez_ixp42x MACH_EZ_IXP42X EZ_IXP42X 778
787tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779 793tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779
788universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780 794universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780
789hicoarm9 MACH_HICOARM9 HICOARM9 781 795hicoarm9 MACH_HICOARM9 HICOARM9 781
796pnx4008 MACH_PNX4008 PNX4008 782
797kws6000 MACH_KWS6000 KWS6000 783
798portux920t MACH_PORTUX920T PORTUX920T 784
799ez_x5 MACH_EZ_X5 EZ_X5 785
800omap_rudolph MACH_OMAP_RUDOLPH OMAP_RUDOLPH 786
801cpuat91 MACH_CPUAT91 CPUAT91 787
802rea9200 MACH_REA9200 REA9200 788
803acts_pune_sa1110 MACH_ACTS_PUNE_SA1110 ACTS_PUNE_SA1110 789
804ixp425 MACH_IXP425 IXP425 790
805argonplusodyssey MACH_ODYSSEY ODYSSEY 791
806perch MACH_PERCH PERCH 792
807eis05r1 MACH_EIS05R1 EIS05R1 793
808pepperpad MACH_PEPPERPAD PEPPERPAD 794
809sb3010 MACH_SB3010 SB3010 795
810rm9200 MACH_RM9200 RM9200 796
811dma03 MACH_DMA03 DMA03 797
812road_s101 MACH_ROAD_S101 ROAD_S101 798
813iq_nextgen_a MACH_IQ_NEXTGEN_A IQ_NEXTGEN_A 799
814iq_nextgen_b MACH_IQ_NEXTGEN_B IQ_NEXTGEN_B 800
815iq_nextgen_c MACH_IQ_NEXTGEN_C IQ_NEXTGEN_C 801
816iq_nextgen_d MACH_IQ_NEXTGEN_D IQ_NEXTGEN_D 802
817iq_nextgen_e MACH_IQ_NEXTGEN_E IQ_NEXTGEN_E 803
818mallow_at91 MACH_MALLOW_AT91 MALLOW_AT91 804
819cybertracker MACH_CYBERTRACKER CYBERTRACKER 805
820gesbc931x MACH_GESBC931X GESBC931X 806
821centipad MACH_CENTIPAD CENTIPAD 807
822armsoc MACH_ARMSOC ARMSOC 808
823se4200 MACH_SE4200 SE4200 809
824ems197a MACH_EMS197A EMS197A 810
825micro9 MACH_MICRO9 MICRO9 811
826micro9l MACH_MICRO9L MICRO9L 812
827uc5471dsp MACH_UC5471DSP UC5471DSP 813
828sj5471eng MACH_SJ5471ENG SJ5471ENG 814
829none MACH_CMPXA26X CMPXA26X 815
830nc MACH_NC NC 816
831omap_palmte MACH_OMAP_PALMTE OMAP_PALMTE 817
832ajax52x MACH_AJAX52X AJAX52X 818
833siriustar MACH_SIRIUSTAR SIRIUSTAR 819
834iodata_hdlg MACH_IODATA_HDLG IODATA_HDLG 820
835at91rm9200utl MACH_AT91RM9200UTL AT91RM9200UTL 821
836biosafe MACH_BIOSAFE BIOSAFE 822
837mp1000 MACH_MP1000 MP1000 823
838parsy MACH_PARSY PARSY 824
839ccxp270 MACH_CCXP CCXP 825
840omap_gsample MACH_OMAP_GSAMPLE OMAP_GSAMPLE 826
841realview_eb MACH_REALVIEW_EB REALVIEW_EB 827
842samoa MACH_SAMOA SAMOA 828
843t3xscale MACH_T3XSCALE T3XSCALE 829
844i878 MACH_I878 I878 830
845borzoi MACH_BORZOI BORZOI 831
846gecko MACH_GECKO GECKO 832
847ds101 MACH_DS101 DS101 833
848omap_palmtt2 MACH_OMAP_PALMTT2 OMAP_PALMTT2 834
849xscale_palmld MACH_XSCALE_PALMLD XSCALE_PALMLD 835
850cc9c MACH_CC9C CC9C 836
851sbc1670 MACH_SBC1670 SBC1670 837
852ixdp28x5 MACH_IXDP28X5 IXDP28X5 838
853omap_palmtt MACH_OMAP_PALMTT OMAP_PALMTT 839
854ml696k MACH_ML696K ML696K 840
855arcom_zeus MACH_ARCOM_ZEUS ARCOM_ZEUS 841
856osiris MACH_OSIRIS OSIRIS 842
857maestro MACH_MAESTRO MAESTRO 843
858tunge2 MACH_TUNGE2 TUNGE2 844
859ixbbm MACH_IXBBM IXBBM 845
860mx27 MACH_MX27 MX27 846
861ax8004 MACH_AX8004 AX8004 847
862at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848
863loft MACH_LOFT LOFT 849
864magpie MACH_MAGPIE MAGPIE 850
865mx21 MACH_MX21 MX21 851
866mb87m3400 MACH_MB87M3400 MB87M3400 852
867mguard_delta MACH_MGUARD_DELTA MGUARD_DELTA 853
868davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_DVDP 854
869htcuniversal MACH_HTCUNIVERSAL HTCUNIVERSAL 855
870tpad MACH_TPAD TPAD 856
871roverp3 MACH_ROVERP3 ROVERP3 857