Skip to content

Commit 3f00d3e

Browse files
author
Linus Torvalds
committed
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
2 parents 407cf84 + a637a11 commit 3f00d3e

File tree

38 files changed

+1896
-917
lines changed

38 files changed

+1896
-917
lines changed

arch/mips/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -958,7 +958,7 @@ config SOC_PNX8550
958958
bool
959959
select DMA_NONCOHERENT
960960
select HW_HAS_PCI
961-
select SYS_HAS_CPU_R4X00
961+
select SYS_HAS_CPU_MIPS32_R1
962962
select SYS_SUPPORTS_32BIT_KERNEL
963963

964964
config SWAP_IO_SPACE

arch/mips/boot/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
mkboot
2+
elf2ecoff
3+
zImage
4+
zImage.tmp

arch/mips/configs/pnx8550-jbs_defconfig

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,15 +129,15 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
129129
#
130130
# CPU selection
131131
#
132-
# CONFIG_CPU_MIPS32_R1 is not set
132+
CONFIG_CPU_MIPS32_R1=y
133133
# CONFIG_CPU_MIPS32_R2 is not set
134134
# CONFIG_CPU_MIPS64_R1 is not set
135135
# CONFIG_CPU_MIPS64_R2 is not set
136136
# CONFIG_CPU_R3000 is not set
137137
# CONFIG_CPU_TX39XX is not set
138138
# CONFIG_CPU_VR41XX is not set
139139
# CONFIG_CPU_R4300 is not set
140-
CONFIG_CPU_R4X00=y
140+
# CONFIG_CPU_R4X00 is not set
141141
# CONFIG_CPU_TX49XX is not set
142142
# CONFIG_CPU_R5000 is not set
143143
# CONFIG_CPU_R5432 is not set
@@ -148,10 +148,11 @@ CONFIG_CPU_R4X00=y
148148
# CONFIG_CPU_RM7000 is not set
149149
# CONFIG_CPU_RM9000 is not set
150150
# CONFIG_CPU_SB1 is not set
151-
CONFIG_SYS_HAS_CPU_R4X00=y
151+
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
152+
CONFIG_CPU_MIPS32=y
153+
CONFIG_CPU_MIPSR1=y
152154
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
153155
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
154-
CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
155156

156157
#
157158
# Kernel type
@@ -162,11 +163,11 @@ CONFIG_PAGE_SIZE_4KB=y
162163
# CONFIG_PAGE_SIZE_8KB is not set
163164
# CONFIG_PAGE_SIZE_16KB is not set
164165
# CONFIG_PAGE_SIZE_64KB is not set
166+
CONFIG_CPU_HAS_PREFETCH=y
165167
# CONFIG_MIPS_MT is not set
166168
# CONFIG_64BIT_PHYS_ADDR is not set
167169
# CONFIG_CPU_ADVANCED is not set
168170
CONFIG_CPU_HAS_LLSC=y
169-
CONFIG_CPU_HAS_LLDSCD=y
170171
CONFIG_CPU_HAS_SYNC=y
171172
CONFIG_GENERIC_HARDIRQS=y
172173
CONFIG_GENERIC_IRQ_PROBE=y

arch/mips/configs/pnx8550-v2pci_defconfig

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,15 +128,15 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
128128
#
129129
# CPU selection
130130
#
131-
# CONFIG_CPU_MIPS32_R1 is not set
131+
CONFIG_CPU_MIPS32_R1=y
132132
# CONFIG_CPU_MIPS32_R2 is not set
133133
# CONFIG_CPU_MIPS64_R1 is not set
134134
# CONFIG_CPU_MIPS64_R2 is not set
135135
# CONFIG_CPU_R3000 is not set
136136
# CONFIG_CPU_TX39XX is not set
137137
# CONFIG_CPU_VR41XX is not set
138138
# CONFIG_CPU_R4300 is not set
139-
CONFIG_CPU_R4X00=y
139+
# CONFIG_CPU_R4X00 is not set
140140
# CONFIG_CPU_TX49XX is not set
141141
# CONFIG_CPU_R5000 is not set
142142
# CONFIG_CPU_R5432 is not set
@@ -147,10 +147,11 @@ CONFIG_CPU_R4X00=y
147147
# CONFIG_CPU_RM7000 is not set
148148
# CONFIG_CPU_RM9000 is not set
149149
# CONFIG_CPU_SB1 is not set
150-
CONFIG_SYS_HAS_CPU_R4X00=y
150+
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
151+
CONFIG_CPU_MIPS32=y
152+
CONFIG_CPU_MIPSR1=y
151153
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
152154
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
153-
CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
154155

155156
#
156157
# Kernel type
@@ -161,6 +162,7 @@ CONFIG_PAGE_SIZE_4KB=y
161162
# CONFIG_PAGE_SIZE_8KB is not set
162163
# CONFIG_PAGE_SIZE_16KB is not set
163164
# CONFIG_PAGE_SIZE_64KB is not set
165+
CONFIG_CPU_HAS_PREFETCH=y
164166
# CONFIG_MIPS_MT is not set
165167
# CONFIG_64BIT_PHYS_ADDR is not set
166168
CONFIG_CPU_ADVANCED=y

arch/mips/ddb5xxx/common/rtc_ds1386.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ rtc_ds1386_get_time(void)
4141
u8 byte;
4242
u8 temp;
4343
unsigned int year, month, day, hour, minute, second;
44+
unsigned long flags;
4445

46+
spin_lock_irqsave(&rtc_lock, flags);
4547
/* let us freeze external registers */
4648
byte = READ_RTC(0xB);
4749
byte &= 0x3f;
@@ -60,6 +62,7 @@ rtc_ds1386_get_time(void)
6062
/* enable time transfer */
6163
byte |= 0x80;
6264
WRITE_RTC(0xB, byte);
65+
spin_unlock_irqrestore(&rtc_lock, flags);
6366

6467
/* calc hour */
6568
if (temp & 0x40) {
@@ -81,7 +84,9 @@ rtc_ds1386_set_time(unsigned long t)
8184
u8 byte;
8285
u8 temp;
8386
u8 year, month, day, hour, minute, second;
87+
unsigned long flags;
8488

89+
spin_lock_irqsave(&rtc_lock, flags);
8590
/* let us freeze external registers */
8691
byte = READ_RTC(0xB);
8792
byte &= 0x3f;
@@ -133,6 +138,7 @@ rtc_ds1386_set_time(unsigned long t)
133138
if (second != READ_RTC(0x1)) {
134139
WRITE_RTC(0x1, second);
135140
}
141+
spin_unlock_irqrestore(&rtc_lock, flags);
136142

137143
return 0;
138144
}

arch/mips/dec/time.c

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,25 @@
3737
#include <asm/dec/machtype.h>
3838

3939

40+
/*
41+
* Returns true if a clock update is in progress
42+
*/
43+
static inline unsigned char dec_rtc_is_updating(void)
44+
{
45+
unsigned char uip;
46+
unsigned long flags;
47+
48+
spin_lock_irqsave(&rtc_lock, flags);
49+
uip = (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP);
50+
spin_unlock_irqrestore(&rtc_lock, flags);
51+
return uip;
52+
}
53+
4054
static unsigned long dec_rtc_get_time(void)
4155
{
4256
unsigned int year, mon, day, hour, min, sec, real_year;
4357
int i;
58+
unsigned long flags;
4459

4560
/* The Linux interpretation of the DS1287 clock register contents:
4661
* When the Update-In-Progress (UIP) flag goes from 1 to 0, the
@@ -49,11 +64,12 @@ static unsigned long dec_rtc_get_time(void)
4964
*/
5065
/* read RTC exactly on falling edge of update flag */
5166
for (i = 0; i < 1000000; i++) /* may take up to 1 second... */
52-
if (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP)
67+
if (dec_rtc_is_updating())
5368
break;
5469
for (i = 0; i < 1000000; i++) /* must try at least 2.228 ms */
55-
if (!(CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP))
70+
if (!dec_rtc_is_updating())
5671
break;
72+
spin_lock_irqsave(&rtc_lock, flags);
5773
/* Isn't this overkill? UIP above should guarantee consistency */
5874
do {
5975
sec = CMOS_READ(RTC_SECONDS);
@@ -77,6 +93,7 @@ static unsigned long dec_rtc_get_time(void)
7793
* of unused BBU RAM locations.
7894
*/
7995
real_year = CMOS_READ(RTC_DEC_YEAR);
96+
spin_unlock_irqrestore(&rtc_lock, flags);
8097
year += real_year - 72 + 2000;
8198

8299
return mktime(year, mon, day, hour, min, sec);
@@ -95,6 +112,8 @@ static int dec_rtc_set_mmss(unsigned long nowtime)
95112
int real_seconds, real_minutes, cmos_minutes;
96113
unsigned char save_control, save_freq_select;
97114

115+
/* irq are locally disabled here */
116+
spin_lock(&rtc_lock);
98117
/* tell the clock it's being set */
99118
save_control = CMOS_READ(RTC_CONTROL);
100119
CMOS_WRITE((save_control | RTC_SET), RTC_CONTROL);
@@ -141,6 +160,7 @@ static int dec_rtc_set_mmss(unsigned long nowtime)
141160
*/
142161
CMOS_WRITE(save_control, RTC_CONTROL);
143162
CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT);
163+
spin_unlock(&rtc_lock);
144164

145165
return retval;
146166
}

arch/mips/jmr3927/common/rtc_ds1742.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ rtc_ds1742_get_time(void)
5757
{
5858
unsigned int year, month, day, hour, minute, second;
5959
unsigned int century;
60+
unsigned long flags;
6061

62+
spin_lock_irqsave(&rtc_lock, flags);
6163
CMOS_WRITE(RTC_READ, RTC_CONTROL);
6264
second = BCD2BIN(CMOS_READ(RTC_SECONDS) & RTC_SECONDS_MASK);
6365
minute = BCD2BIN(CMOS_READ(RTC_MINUTES));
@@ -67,6 +69,7 @@ rtc_ds1742_get_time(void)
6769
year = BCD2BIN(CMOS_READ(RTC_YEAR));
6870
century = BCD2BIN(CMOS_READ(RTC_CENTURY) & RTC_CENTURY_MASK);
6971
CMOS_WRITE(0, RTC_CONTROL);
72+
spin_unlock_irqrestore(&rtc_lock, flags);
7073

7174
year += century * 100;
7275

@@ -81,7 +84,9 @@ rtc_ds1742_set_time(unsigned long t)
8184
u8 year, month, day, hour, minute, second;
8285
u8 cmos_year, cmos_month, cmos_day, cmos_hour, cmos_minute, cmos_second;
8386
int cmos_century;
87+
unsigned long flags;
8488

89+
spin_lock_irqsave(&rtc_lock, flags);
8590
CMOS_WRITE(RTC_READ, RTC_CONTROL);
8691
cmos_second = (u8)(CMOS_READ(RTC_SECONDS) & RTC_SECONDS_MASK);
8792
cmos_minute = (u8)CMOS_READ(RTC_MINUTES);
@@ -139,6 +144,7 @@ rtc_ds1742_set_time(unsigned long t)
139144

140145
/* RTC_CENTURY and RTC_CONTROL share same address... */
141146
CMOS_WRITE(cmos_century, RTC_CONTROL);
147+
spin_unlock_irqrestore(&rtc_lock, flags);
142148

143149
return 0;
144150
}

arch/mips/kernel/irixsig.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -502,8 +502,7 @@ asmlinkage int irix_sigpoll_sys(unsigned long __user *set,
502502
while(1) {
503503
long tmp = 0;
504504

505-
current->state = TASK_INTERRUPTIBLE;
506-
expire = schedule_timeout(expire);
505+
expire = schedule_timeout_interruptible(expire);
507506

508507
for (i=0; i<=4; i++)
509508
tmp |= (current->pending.signal.sig[i] & kset.sig[i]);

0 commit comments

Comments
 (0)