Merge branch 'master' of ../netdev/

This commit is contained in:
David S. Miller 2011-09-16 01:09:02 -04:00
commit 52b9aca7ae
241 changed files with 1881 additions and 1133 deletions

View File

@ -431,8 +431,7 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
void pm_runtime_irq_safe(struct device *dev); void pm_runtime_irq_safe(struct device *dev);
- set the power.irq_safe flag for the device, causing the runtime-PM - set the power.irq_safe flag for the device, causing the runtime-PM
suspend and resume callbacks (but not the idle callback) to be invoked callbacks to be invoked with interrupts off
with interrupts disabled
void pm_runtime_mark_last_busy(struct device *dev); void pm_runtime_mark_last_busy(struct device *dev);
- set the power.last_busy field to the current time - set the power.last_busy field to the current time

View File

@ -1278,7 +1278,6 @@ F: drivers/input/misc/ati_remote2.c
ATLX ETHERNET DRIVERS ATLX ETHERNET DRIVERS
M: Jay Cliburn <jcliburn@gmail.com> M: Jay Cliburn <jcliburn@gmail.com>
M: Chris Snook <chris.snook@gmail.com> M: Chris Snook <chris.snook@gmail.com>
M: Jie Yang <jie.yang@atheros.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
W: http://sourceforge.net/projects/atl1 W: http://sourceforge.net/projects/atl1
W: http://atl1.sourceforge.net W: http://atl1.sourceforge.net
@ -1574,7 +1573,6 @@ F: drivers/scsi/bfa/
BROCADE BNA 10 GIGABIT ETHERNET DRIVER BROCADE BNA 10 GIGABIT ETHERNET DRIVER
M: Rasesh Mody <rmody@brocade.com> M: Rasesh Mody <rmody@brocade.com>
M: Debashis Dutt <ddutt@brocade.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Supported S: Supported
F: drivers/net/bna/ F: drivers/net/bna/
@ -1758,7 +1756,6 @@ F: Documentation/zh_CN/
CISCO VIC ETHERNET NIC DRIVER CISCO VIC ETHERNET NIC DRIVER
M: Christian Benvenuti <benve@cisco.com> M: Christian Benvenuti <benve@cisco.com>
M: Vasanthy Kolluri <vkolluri@cisco.com>
M: Roopa Prabhu <roprabhu@cisco.com> M: Roopa Prabhu <roprabhu@cisco.com>
M: David Wang <dwang2@cisco.com> M: David Wang <dwang2@cisco.com>
S: Supported S: Supported
@ -1883,7 +1880,7 @@ S: Maintained
F: drivers/connector/ F: drivers/connector/
CONTROL GROUPS (CGROUPS) CONTROL GROUPS (CGROUPS)
M: Paul Menage <menage@google.com> M: Paul Menage <paul@paulmenage.org>
M: Li Zefan <lizf@cn.fujitsu.com> M: Li Zefan <lizf@cn.fujitsu.com>
L: containers@lists.linux-foundation.org L: containers@lists.linux-foundation.org
S: Maintained S: Maintained
@ -1932,7 +1929,7 @@ S: Maintained
F: tools/power/cpupower F: tools/power/cpupower
CPUSETS CPUSETS
M: Paul Menage <menage@google.com> M: Paul Menage <paul@paulmenage.org>
W: http://www.bullopensource.org/cpuset/ W: http://www.bullopensource.org/cpuset/
W: http://oss.sgi.com/projects/cpusets/ W: http://oss.sgi.com/projects/cpusets/
S: Supported S: Supported
@ -2649,11 +2646,11 @@ F: drivers/net/wan/dlci.c
F: drivers/net/wan/sdla.c F: drivers/net/wan/sdla.c
FRAMEBUFFER LAYER FRAMEBUFFER LAYER
M: Paul Mundt <lethal@linux-sh.org> M: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
L: linux-fbdev@vger.kernel.org L: linux-fbdev@vger.kernel.org
W: http://linux-fbdev.sourceforge.net/ W: http://linux-fbdev.sourceforge.net/
Q: http://patchwork.kernel.org/project/linux-fbdev/list/ Q: http://patchwork.kernel.org/project/linux-fbdev/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git T: git git://github.com/schandinat/linux-2.6.git fbdev-next
S: Maintained S: Maintained
F: Documentation/fb/ F: Documentation/fb/
F: Documentation/devicetree/bindings/fb/ F: Documentation/devicetree/bindings/fb/
@ -4404,7 +4401,8 @@ L: netfilter@vger.kernel.org
L: coreteam@netfilter.org L: coreteam@netfilter.org
W: http://www.netfilter.org/ W: http://www.netfilter.org/
W: http://www.iptables.org/ W: http://www.iptables.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf-2.6.git
T: git git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf-next-2.6.git
S: Supported S: Supported
F: include/linux/netfilter* F: include/linux/netfilter*
F: include/linux/netfilter/ F: include/linux/netfilter/
@ -5532,6 +5530,7 @@ F: include/media/*7146*
SAMSUNG AUDIO (ASoC) DRIVERS SAMSUNG AUDIO (ASoC) DRIVERS
M: Jassi Brar <jassisinghbrar@gmail.com> M: Jassi Brar <jassisinghbrar@gmail.com>
M: Sangbeom Kim <sbkim73@samsung.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers) L: alsa-devel@alsa-project.org (moderated for non-subscribers)
S: Supported S: Supported
F: sound/soc/samsung F: sound/soc/samsung
@ -7087,7 +7086,7 @@ S: Supported
F: drivers/mmc/host/vub300.c F: drivers/mmc/host/vub300.c
W1 DALLAS'S 1-WIRE BUS W1 DALLAS'S 1-WIRE BUS
M: Evgeniy Polyakov <johnpol@2ka.mipt.ru> M: Evgeniy Polyakov <zbr@ioremap.net>
S: Maintained S: Maintained
F: Documentation/w1/ F: Documentation/w1/
F: drivers/w1/ F: drivers/w1/

View File

@ -1,7 +1,7 @@
VERSION = 3 VERSION = 3
PATCHLEVEL = 1 PATCHLEVEL = 1
SUBLEVEL = 0 SUBLEVEL = 0
EXTRAVERSION = -rc3 EXTRAVERSION = -rc4
NAME = "Divemaster Edition" NAME = "Divemaster Edition"
# *DOCUMENTATION* # *DOCUMENTATION*

View File

@ -27,13 +27,4 @@
#define UAC_NOFIX 2 #define UAC_NOFIX 2
#define UAC_SIGBUS 4 #define UAC_SIGBUS 4
#ifdef __KERNEL__
/* This is the shift that is applied to the UAC bits as stored in the
per-thread flags. See thread_info.h. */
#define UAC_SHIFT 6
#endif
#endif /* __ASM_ALPHA_SYSINFO_H */ #endif /* __ASM_ALPHA_SYSINFO_H */

View File

@ -74,9 +74,9 @@ register struct thread_info *__current_thread_info __asm__("$8");
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */ #define TIF_NEED_RESCHED 3 /* rescheduling necessary */
#define TIF_POLLING_NRFLAG 8 /* poll_idle is polling NEED_RESCHED */ #define TIF_POLLING_NRFLAG 8 /* poll_idle is polling NEED_RESCHED */
#define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */ #define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */
#define TIF_UAC_NOPRINT 10 /* see sysinfo.h */ #define TIF_UAC_NOPRINT 10 /* ! Preserve sequence of following */
#define TIF_UAC_NOFIX 11 #define TIF_UAC_NOFIX 11 /* ! flags as they match */
#define TIF_UAC_SIGBUS 12 #define TIF_UAC_SIGBUS 12 /* ! userspace part of 'osf_sysinfo' */
#define TIF_MEMDIE 13 /* is terminating due to OOM killer */ #define TIF_MEMDIE 13 /* is terminating due to OOM killer */
#define TIF_RESTORE_SIGMASK 14 /* restore signal mask in do_signal */ #define TIF_RESTORE_SIGMASK 14 /* restore signal mask in do_signal */
#define TIF_FREEZE 16 /* is freezing for suspend */ #define TIF_FREEZE 16 /* is freezing for suspend */
@ -97,7 +97,7 @@ register struct thread_info *__current_thread_info __asm__("$8");
#define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \ #define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \
| _TIF_SYSCALL_TRACE) | _TIF_SYSCALL_TRACE)
#define ALPHA_UAC_SHIFT 10 #define ALPHA_UAC_SHIFT TIF_UAC_NOPRINT
#define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \ #define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \
1 << TIF_UAC_SIGBUS) 1 << TIF_UAC_SIGBUS)

View File

@ -42,6 +42,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/sysinfo.h> #include <asm/sysinfo.h>
#include <asm/thread_info.h>
#include <asm/hwrpb.h> #include <asm/hwrpb.h>
#include <asm/processor.h> #include <asm/processor.h>
@ -633,9 +634,10 @@ SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer,
case GSI_UACPROC: case GSI_UACPROC:
if (nbytes < sizeof(unsigned int)) if (nbytes < sizeof(unsigned int))
return -EINVAL; return -EINVAL;
w = (current_thread_info()->flags >> UAC_SHIFT) & UAC_BITMASK; w = (current_thread_info()->flags >> ALPHA_UAC_SHIFT) &
if (put_user(w, (unsigned int __user *)buffer)) UAC_BITMASK;
return -EFAULT; if (put_user(w, (unsigned int __user *)buffer))
return -EFAULT;
return 1; return 1;
case GSI_PROC_TYPE: case GSI_PROC_TYPE:
@ -756,8 +758,8 @@ SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer,
case SSIN_UACPROC: case SSIN_UACPROC:
again: again:
old = current_thread_info()->flags; old = current_thread_info()->flags;
new = old & ~(UAC_BITMASK << UAC_SHIFT); new = old & ~(UAC_BITMASK << ALPHA_UAC_SHIFT);
new = new | (w & UAC_BITMASK) << UAC_SHIFT; new = new | (w & UAC_BITMASK) << ALPHA_UAC_SHIFT;
if (cmpxchg(&current_thread_info()->flags, if (cmpxchg(&current_thread_info()->flags,
old, new) != old) old, new) != old)
goto again; goto again;

View File

@ -360,7 +360,7 @@ sys_call_table:
.quad sys_newuname .quad sys_newuname
.quad sys_nanosleep /* 340 */ .quad sys_nanosleep /* 340 */
.quad sys_mremap .quad sys_mremap
.quad sys_nfsservctl .quad sys_ni_syscall /* old nfsservctl */
.quad sys_setresuid .quad sys_setresuid
.quad sys_getresuid .quad sys_getresuid
.quad sys_pciconfig_read /* 345 */ .quad sys_pciconfig_read /* 345 */

View File

@ -82,7 +82,7 @@ asmlinkage void mmc_loader(unsigned char *buf, unsigned long len)
/* Disable clock to MMC hardware block */ /* Disable clock to MMC hardware block */
__raw_writel(__raw_readl(SMSTPCR3) & (1 << 12), SMSTPCR3); __raw_writel(__raw_readl(SMSTPCR3) | (1 << 12), SMSTPCR3);
mmc_update_progress(MMC_PROGRESS_DONE); mmc_update_progress(MMC_PROGRESS_DONE);
} }

View File

@ -85,7 +85,7 @@ asmlinkage void mmc_loader(unsigned short *buf, unsigned long len)
goto err; goto err;
/* Disable clock to SDHI1 hardware block */ /* Disable clock to SDHI1 hardware block */
__raw_writel(__raw_readl(SMSTPCR3) & (1 << 13), SMSTPCR3); __raw_writel(__raw_readl(SMSTPCR3) | (1 << 13), SMSTPCR3);
mmc_update_progress(MMC_PROGRESS_DONE); mmc_update_progress(MMC_PROGRESS_DONE);

View File

@ -178,7 +178,7 @@
CALL(sys_ni_syscall) /* vm86 */ CALL(sys_ni_syscall) /* vm86 */
CALL(sys_ni_syscall) /* was sys_query_module */ CALL(sys_ni_syscall) /* was sys_query_module */
CALL(sys_poll) CALL(sys_poll)
CALL(sys_nfsservctl) CALL(sys_ni_syscall) /* was nfsservctl */
/* 170 */ CALL(sys_setresgid16) /* 170 */ CALL(sys_setresgid16)
CALL(sys_getresgid16) CALL(sys_getresgid16)
CALL(sys_prctl) CALL(sys_prctl)

View File

@ -341,6 +341,7 @@ static struct platform_device mipidsi0_device = {
static struct sh_mobile_sdhi_info sdhi0_info = { static struct sh_mobile_sdhi_info sdhi0_info = {
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
.dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX,
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
.tmio_caps = MMC_CAP_SD_HIGHSPEED, .tmio_caps = MMC_CAP_SD_HIGHSPEED,
.tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, .tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29,
}; };
@ -382,7 +383,7 @@ void ag5evm_sdhi1_set_pwr(struct platform_device *pdev, int state)
} }
static struct sh_mobile_sdhi_info sh_sdhi1_info = { static struct sh_mobile_sdhi_info sh_sdhi1_info = {
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE, .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT,
.tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ, .tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ,
.tmio_ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, .tmio_ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
.set_pwr = ag5evm_sdhi1_set_pwr, .set_pwr = ag5evm_sdhi1_set_pwr,

View File

@ -1412,6 +1412,7 @@ static void __init ap4evb_init(void)
fsi_init_pm_clock(); fsi_init_pm_clock();
sh7372_pm_init(); sh7372_pm_init();
pm_clk_add(&fsi_device.dev, "spu2"); pm_clk_add(&fsi_device.dev, "spu2");
pm_clk_add(&lcdc1_device.dev, "hdmi");
} }
static void __init ap4evb_timer_init(void) static void __init ap4evb_timer_init(void)

View File

@ -641,6 +641,8 @@ static struct usbhs_private usbhs0_private = {
}, },
.driver_param = { .driver_param = {
.buswait_bwait = 4, .buswait_bwait = 4,
.d0_tx_id = SHDMA_SLAVE_USB0_TX,
.d1_rx_id = SHDMA_SLAVE_USB0_RX,
}, },
}, },
}; };
@ -810,6 +812,8 @@ static struct usbhs_private usbhs1_private = {
.buswait_bwait = 4, .buswait_bwait = 4,
.pipe_type = usbhs1_pipe_cfg, .pipe_type = usbhs1_pipe_cfg,
.pipe_size = ARRAY_SIZE(usbhs1_pipe_cfg), .pipe_size = ARRAY_SIZE(usbhs1_pipe_cfg),
.d0_tx_id = SHDMA_SLAVE_USB1_TX,
.d1_rx_id = SHDMA_SLAVE_USB1_RX,
}, },
}, },
}; };
@ -1588,6 +1592,7 @@ static void __init mackerel_init(void)
hdmi_init_pm_clock(); hdmi_init_pm_clock();
sh7372_pm_init(); sh7372_pm_init();
pm_clk_add(&fsi_device.dev, "spu2"); pm_clk_add(&fsi_device.dev, "spu2");
pm_clk_add(&hdmi_lcdc_device.dev, "hdmi");
} }
static void __init mackerel_timer_init(void) static void __init mackerel_timer_init(void)

View File

@ -503,16 +503,17 @@ static struct clk *late_main_clks[] = {
&sh7372_fsidivb_clk, &sh7372_fsidivb_clk,
}; };
enum { MSTP001, enum { MSTP001, MSTP000,
MSTP131, MSTP130, MSTP131, MSTP130,
MSTP129, MSTP128, MSTP127, MSTP126, MSTP125, MSTP129, MSTP128, MSTP127, MSTP126, MSTP125,
MSTP118, MSTP117, MSTP116, MSTP113, MSTP118, MSTP117, MSTP116, MSTP113,
MSTP106, MSTP101, MSTP100, MSTP106, MSTP101, MSTP100,
MSTP223, MSTP223,
MSTP218, MSTP217, MSTP216, MSTP218, MSTP217, MSTP216, MSTP214, MSTP208, MSTP207,
MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, MSTP206, MSTP205, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
MSTP329, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312,
MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP406, MSTP403, MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP407, MSTP406,
MSTP405, MSTP404, MSTP403, MSTP400,
MSTP_NR }; MSTP_NR };
#define MSTP(_parent, _reg, _bit, _flags) \ #define MSTP(_parent, _reg, _bit, _flags) \
@ -520,6 +521,7 @@ enum { MSTP001,
static struct clk mstp_clks[MSTP_NR] = { static struct clk mstp_clks[MSTP_NR] = {
[MSTP001] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 1, 0), /* IIC2 */ [MSTP001] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 1, 0), /* IIC2 */
[MSTP000] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 0, 0), /* MSIOF0 */
[MSTP131] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 31, 0), /* VEU3 */ [MSTP131] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 31, 0), /* VEU3 */
[MSTP130] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 30, 0), /* VEU2 */ [MSTP130] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 30, 0), /* VEU2 */
[MSTP129] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 29, 0), /* VEU1 */ [MSTP129] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 29, 0), /* VEU1 */
@ -538,14 +540,16 @@ static struct clk mstp_clks[MSTP_NR] = {
[MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */ [MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */
[MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */ [MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */
[MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */ [MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */
[MSTP214] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 14, 0), /* USBDMAC */
[MSTP208] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 8, 0), /* MSIOF1 */
[MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */ [MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */
[MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */ [MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */
[MSTP205] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 5, 0), /* MSIOF2 */
[MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */ [MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */
[MSTP203] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 3, 0), /* SCIFA1 */ [MSTP203] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 3, 0), /* SCIFA1 */
[MSTP202] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 2, 0), /* SCIFA2 */ [MSTP202] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 2, 0), /* SCIFA2 */
[MSTP201] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 1, 0), /* SCIFA3 */ [MSTP201] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 1, 0), /* SCIFA3 */
[MSTP200] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 0, 0), /* SCIFA4 */ [MSTP200] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 0, 0), /* SCIFA4 */
[MSTP329] = MSTP(&r_clk, SMSTPCR3, 29, 0), /* CMT10 */
[MSTP328] = MSTP(&div6_clks[DIV6_SPU], SMSTPCR3, 28, 0), /* FSI2 */ [MSTP328] = MSTP(&div6_clks[DIV6_SPU], SMSTPCR3, 28, 0), /* FSI2 */
[MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */ [MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */
[MSTP322] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 22, 0), /* USB0 */ [MSTP322] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 22, 0), /* USB0 */
@ -557,8 +561,12 @@ static struct clk mstp_clks[MSTP_NR] = {
[MSTP413] = MSTP(&pllc1_div2_clk, SMSTPCR4, 13, 0), /* HDMI */ [MSTP413] = MSTP(&pllc1_div2_clk, SMSTPCR4, 13, 0), /* HDMI */
[MSTP411] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 11, 0), /* IIC3 */ [MSTP411] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 11, 0), /* IIC3 */
[MSTP410] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 10, 0), /* IIC4 */ [MSTP410] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 10, 0), /* IIC4 */
[MSTP407] = MSTP(&div4_clks[DIV4_HP], SMSTPCR4, 7, 0), /* USB-DMAC1 */
[MSTP406] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 6, 0), /* USB1 */ [MSTP406] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 6, 0), /* USB1 */
[MSTP405] = MSTP(&r_clk, SMSTPCR4, 5, 0), /* CMT4 */
[MSTP404] = MSTP(&r_clk, SMSTPCR4, 4, 0), /* CMT3 */
[MSTP403] = MSTP(&r_clk, SMSTPCR4, 3, 0), /* KEYSC */ [MSTP403] = MSTP(&r_clk, SMSTPCR4, 3, 0), /* KEYSC */
[MSTP400] = MSTP(&r_clk, SMSTPCR4, 0, 0), /* CMT2 */
}; };
static struct clk_lookup lookups[] = { static struct clk_lookup lookups[] = {
@ -609,6 +617,7 @@ static struct clk_lookup lookups[] = {
/* MSTP32 clocks */ /* MSTP32 clocks */
CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* IIC2 */ CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* IIC2 */
CLKDEV_DEV_ID("spi_sh_msiof.0", &mstp_clks[MSTP000]), /* MSIOF0 */
CLKDEV_DEV_ID("uio_pdrv_genirq.4", &mstp_clks[MSTP131]), /* VEU3 */ CLKDEV_DEV_ID("uio_pdrv_genirq.4", &mstp_clks[MSTP131]), /* VEU3 */
CLKDEV_DEV_ID("uio_pdrv_genirq.3", &mstp_clks[MSTP130]), /* VEU2 */ CLKDEV_DEV_ID("uio_pdrv_genirq.3", &mstp_clks[MSTP130]), /* VEU2 */
CLKDEV_DEV_ID("uio_pdrv_genirq.2", &mstp_clks[MSTP129]), /* VEU1 */ CLKDEV_DEV_ID("uio_pdrv_genirq.2", &mstp_clks[MSTP129]), /* VEU1 */
@ -629,14 +638,16 @@ static struct clk_lookup lookups[] = {
CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */ CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */
CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */ CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */
CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */ CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */
CLKDEV_DEV_ID("sh-dma-engine.3", &mstp_clks[MSTP214]), /* USB-DMAC0 */
CLKDEV_DEV_ID("spi_sh_msiof.1", &mstp_clks[MSTP208]), /* MSIOF1 */
CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */ CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */
CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */ CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */
CLKDEV_DEV_ID("spi_sh_msiof.2", &mstp_clks[MSTP205]), /* MSIOF2 */
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */ CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP202]), /* SCIFA2 */ CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP202]), /* SCIFA2 */
CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP201]), /* SCIFA3 */ CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP201]), /* SCIFA3 */
CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP200]), /* SCIFA4 */ CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP200]), /* SCIFA4 */
CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]), /* CMT10 */
CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]), /* FSI2 */ CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]), /* FSI2 */
CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* IIC1 */ CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* IIC1 */
CLKDEV_DEV_ID("r8a66597_hcd.0", &mstp_clks[MSTP322]), /* USB0 */ CLKDEV_DEV_ID("r8a66597_hcd.0", &mstp_clks[MSTP322]), /* USB0 */
@ -650,11 +661,17 @@ static struct clk_lookup lookups[] = {
CLKDEV_DEV_ID("sh-mobile-hdmi", &mstp_clks[MSTP413]), /* HDMI */ CLKDEV_DEV_ID("sh-mobile-hdmi", &mstp_clks[MSTP413]), /* HDMI */
CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* IIC3 */ CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* IIC3 */
CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* IIC4 */ CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* IIC4 */
CLKDEV_DEV_ID("sh-dma-engine.4", &mstp_clks[MSTP407]), /* USB-DMAC1 */
CLKDEV_DEV_ID("r8a66597_hcd.1", &mstp_clks[MSTP406]), /* USB1 */ CLKDEV_DEV_ID("r8a66597_hcd.1", &mstp_clks[MSTP406]), /* USB1 */
CLKDEV_DEV_ID("r8a66597_udc.1", &mstp_clks[MSTP406]), /* USB1 */ CLKDEV_DEV_ID("r8a66597_udc.1", &mstp_clks[MSTP406]), /* USB1 */
CLKDEV_DEV_ID("renesas_usbhs.1", &mstp_clks[MSTP406]), /* USB1 */ CLKDEV_DEV_ID("renesas_usbhs.1", &mstp_clks[MSTP406]), /* USB1 */
CLKDEV_DEV_ID("sh_cmt.4", &mstp_clks[MSTP405]), /* CMT4 */
CLKDEV_DEV_ID("sh_cmt.3", &mstp_clks[MSTP404]), /* CMT3 */
CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */ CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */
CLKDEV_DEV_ID("sh_cmt.2", &mstp_clks[MSTP400]), /* CMT2 */
CLKDEV_ICK_ID("hdmi", "sh_mobile_lcdc_fb.1",
&div6_reparent_clks[DIV6_HDMI]),
CLKDEV_ICK_ID("ick", "sh-mobile-hdmi", &div6_reparent_clks[DIV6_HDMI]), CLKDEV_ICK_ID("ick", "sh-mobile-hdmi", &div6_reparent_clks[DIV6_HDMI]),
CLKDEV_ICK_ID("icka", "sh_fsi2", &div6_reparent_clks[DIV6_FSIA]), CLKDEV_ICK_ID("icka", "sh_fsi2", &div6_reparent_clks[DIV6_FSIA]),
CLKDEV_ICK_ID("ickb", "sh_fsi2", &div6_reparent_clks[DIV6_FSIB]), CLKDEV_ICK_ID("ickb", "sh_fsi2", &div6_reparent_clks[DIV6_FSIB]),

View File

@ -365,7 +365,7 @@ void __init sh73a0_clock_init(void)
__raw_writel(0x108, SD2CKCR); __raw_writel(0x108, SD2CKCR);
/* detect main clock parent */ /* detect main clock parent */
switch ((__raw_readl(CKSCR) >> 24) & 0x03) { switch ((__raw_readl(CKSCR) >> 28) & 0x03) {
case 0: case 0:
main_clk.parent = &sh73a0_extal1_clk; main_clk.parent = &sh73a0_extal1_clk;
break; break;

View File

@ -459,6 +459,10 @@ enum {
SHDMA_SLAVE_SDHI2_TX, SHDMA_SLAVE_SDHI2_TX,
SHDMA_SLAVE_MMCIF_RX, SHDMA_SLAVE_MMCIF_RX,
SHDMA_SLAVE_MMCIF_TX, SHDMA_SLAVE_MMCIF_TX,
SHDMA_SLAVE_USB0_TX,
SHDMA_SLAVE_USB0_RX,
SHDMA_SLAVE_USB1_TX,
SHDMA_SLAVE_USB1_RX,
}; };
extern struct clk sh7372_extal1_clk; extern struct clk sh7372_extal1_clk;

View File

@ -379,7 +379,7 @@ enum {
/* BBIF2 */ /* BBIF2 */
VPU, VPU,
TSIF1, TSIF1,
_3DG_SGX530, /* 3DG */
_2DDMAC, _2DDMAC,
IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2, IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2,
IPMMU_IPMMUR, IPMMU_IPMMUR2, IPMMU_IPMMUR, IPMMU_IPMMUR2,
@ -436,7 +436,7 @@ static struct intc_vect intcs_vectors[] = {
/* BBIF2 */ /* BBIF2 */
INTCS_VECT(VPU, 0x980), INTCS_VECT(VPU, 0x980),
INTCS_VECT(TSIF1, 0x9a0), INTCS_VECT(TSIF1, 0x9a0),
INTCS_VECT(_3DG_SGX530, 0x9e0), /* 3DG */
INTCS_VECT(_2DDMAC, 0xa00), INTCS_VECT(_2DDMAC, 0xa00),
INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0), INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0),
INTCS_VECT(IIC2_WAITI2, 0xac0), INTCS_VECT(IIC2_DTEI2, 0xae0), INTCS_VECT(IIC2_WAITI2, 0xac0), INTCS_VECT(IIC2_DTEI2, 0xae0),
@ -521,7 +521,7 @@ static struct intc_mask_reg intcs_mask_registers[] = {
RTDMAC_1_DEI3, RTDMAC_1_DEI2, RTDMAC_1_DEI1, RTDMAC_1_DEI0 } }, RTDMAC_1_DEI3, RTDMAC_1_DEI2, RTDMAC_1_DEI1, RTDMAC_1_DEI0 } },
{ 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */ { 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */
{ 0, 0, MSIOF, 0, { 0, 0, MSIOF, 0,
_3DG_SGX530, 0, 0, 0 } }, 0, 0, 0, 0 } },
{ 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */ { 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */
{ 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0, { 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0,
0, 0, 0, 0 } }, 0, 0, 0, 0 } },
@ -561,7 +561,6 @@ static struct intc_prio_reg intcs_prio_registers[] = {
TMU_TUNI2, TSIF1 } }, TMU_TUNI2, TSIF1 } },
{ 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, 0, VEU, BEU } }, { 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, 0, VEU, BEU } },
{ 0xffd20020, 0, 16, 4, /* IPRIS */ { 0, MSIOF, TSIF0, IIC0 } }, { 0xffd20020, 0, 16, 4, /* IPRIS */ { 0, MSIOF, TSIF0, IIC0 } },
{ 0xffd20024, 0, 16, 4, /* IPRJS */ { 0, _3DG_SGX530, 0, 0 } },
{ 0xffd20028, 0, 16, 4, /* IPRKS */ { 0, 0, LMB, 0 } }, { 0xffd20028, 0, 16, 4, /* IPRKS */ { 0, 0, LMB, 0 } },
{ 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, 0, 0 } }, { 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, 0, 0 } },
{ 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } }, { 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } },

View File

@ -169,35 +169,35 @@ static struct platform_device scif6_device = {
}; };
/* CMT */ /* CMT */
static struct sh_timer_config cmt10_platform_data = { static struct sh_timer_config cmt2_platform_data = {
.name = "CMT10", .name = "CMT2",
.channel_offset = 0x10, .channel_offset = 0x40,
.timer_bit = 0, .timer_bit = 5,
.clockevent_rating = 125, .clockevent_rating = 125,
.clocksource_rating = 125, .clocksource_rating = 125,
}; };
static struct resource cmt10_resources[] = { static struct resource cmt2_resources[] = {
[0] = { [0] = {
.name = "CMT10", .name = "CMT2",
.start = 0xe6138010, .start = 0xe6130040,
.end = 0xe613801b, .end = 0xe613004b,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
.start = evt2irq(0x0b00), /* CMT1_CMT10 */ .start = evt2irq(0x0b80), /* CMT2 */
.flags = IORESOURCE_IRQ, .flags = IORESOURCE_IRQ,
}, },
}; };
static struct platform_device cmt10_device = { static struct platform_device cmt2_device = {
.name = "sh_cmt", .name = "sh_cmt",
.id = 10, .id = 2,
.dev = { .dev = {
.platform_data = &cmt10_platform_data, .platform_data = &cmt2_platform_data,
}, },
.resource = cmt10_resources, .resource = cmt2_resources,
.num_resources = ARRAY_SIZE(cmt10_resources), .num_resources = ARRAY_SIZE(cmt2_resources),
}; };
/* TMU */ /* TMU */
@ -602,6 +602,150 @@ static struct platform_device dma2_device = {
}, },
}; };
/*
* USB-DMAC
*/
unsigned int usbts_shift[] = {3, 4, 5};
enum {
XMIT_SZ_8BYTE = 0,
XMIT_SZ_16BYTE = 1,
XMIT_SZ_32BYTE = 2,
};
#define USBTS_INDEX2VAL(i) (((i) & 3) << 6)
static const struct sh_dmae_channel sh7372_usb_dmae_channels[] = {
{
.offset = 0,
}, {
.offset = 0x20,
},
};
/* USB DMAC0 */
static const struct sh_dmae_slave_config sh7372_usb_dmae0_slaves[] = {
{
.slave_id = SHDMA_SLAVE_USB0_TX,
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
}, {
.slave_id = SHDMA_SLAVE_USB0_RX,
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
},
};
static struct sh_dmae_pdata usb_dma0_platform_data = {
.slave = sh7372_usb_dmae0_slaves,
.slave_num = ARRAY_SIZE(sh7372_usb_dmae0_slaves),
.channel = sh7372_usb_dmae_channels,
.channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels),
.ts_low_shift = 6,
.ts_low_mask = 0xc0,
.ts_high_shift = 0,
.ts_high_mask = 0,
.ts_shift = usbts_shift,
.ts_shift_num = ARRAY_SIZE(usbts_shift),
.dmaor_init = DMAOR_DME,
.chcr_offset = 0x14,
.chcr_ie_bit = 1 << 5,
.dmaor_is_32bit = 1,
.needs_tend_set = 1,
.no_dmars = 1,
};
static struct resource sh7372_usb_dmae0_resources[] = {
{
/* Channel registers and DMAOR */
.start = 0xe68a0020,
.end = 0xe68a0064 - 1,
.flags = IORESOURCE_MEM,
},
{
/* VCR/SWR/DMICR */
.start = 0xe68a0000,
.end = 0xe68a0014 - 1,
.flags = IORESOURCE_MEM,
},
{
/* IRQ for channels */
.start = evt2irq(0x0a00),
.end = evt2irq(0x0a00),
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device usb_dma0_device = {
.name = "sh-dma-engine",
.id = 3,
.resource = sh7372_usb_dmae0_resources,
.num_resources = ARRAY_SIZE(sh7372_usb_dmae0_resources),
.dev = {
.platform_data = &usb_dma0_platform_data,
},
};
/* USB DMAC1 */
static const struct sh_dmae_slave_config sh7372_usb_dmae1_slaves[] = {
{
.slave_id = SHDMA_SLAVE_USB1_TX,
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
}, {
.slave_id = SHDMA_SLAVE_USB1_RX,
.chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE),
},
};
static struct sh_dmae_pdata usb_dma1_platform_data = {
.slave = sh7372_usb_dmae1_slaves,
.slave_num = ARRAY_SIZE(sh7372_usb_dmae1_slaves),
.channel = sh7372_usb_dmae_channels,
.channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels),
.ts_low_shift = 6,
.ts_low_mask = 0xc0,
.ts_high_shift = 0,
.ts_high_mask = 0,
.ts_shift = usbts_shift,
.ts_shift_num = ARRAY_SIZE(usbts_shift),
.dmaor_init = DMAOR_DME,
.chcr_offset = 0x14,
.chcr_ie_bit = 1 << 5,
.dmaor_is_32bit = 1,
.needs_tend_set = 1,
.no_dmars = 1,
};
static struct resource sh7372_usb_dmae1_resources[] = {
{
/* Channel registers and DMAOR */
.start = 0xe68c0020,
.end = 0xe68c0064 - 1,
.flags = IORESOURCE_MEM,
},
{
/* VCR/SWR/DMICR */
.start = 0xe68c0000,
.end = 0xe68c0014 - 1,
.flags = IORESOURCE_MEM,
},
{
/* IRQ for channels */
.start = evt2irq(0x1d00),
.end = evt2irq(0x1d00),
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device usb_dma1_device = {
.name = "sh-dma-engine",
.id = 4,
.resource = sh7372_usb_dmae1_resources,
.num_resources = ARRAY_SIZE(sh7372_usb_dmae1_resources),
.dev = {
.platform_data = &usb_dma1_platform_data,
},
};
/* VPU */ /* VPU */
static struct uio_info vpu_platform_data = { static struct uio_info vpu_platform_data = {
.name = "VPU5HG", .name = "VPU5HG",
@ -818,7 +962,7 @@ static struct platform_device *sh7372_early_devices[] __initdata = {
&scif4_device, &scif4_device,
&scif5_device, &scif5_device,
&scif6_device, &scif6_device,
&cmt10_device, &cmt2_device,
&tmu00_device, &tmu00_device,
&tmu01_device, &tmu01_device,
}; };
@ -829,6 +973,8 @@ static struct platform_device *sh7372_late_devices[] __initdata = {
&dma0_device, &dma0_device,
&dma1_device, &dma1_device,
&dma2_device, &dma2_device,
&usb_dma0_device,
&usb_dma1_device,
&vpu_device, &vpu_device,
&veu0_device, &veu0_device,
&veu1_device, &veu1_device,

View File

@ -622,7 +622,8 @@ static struct dev_pm_domain omap_device_pm_domain = {
SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume, SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,
_od_runtime_idle) _od_runtime_idle)
USE_PLATFORM_PM_SLEEP_OPS USE_PLATFORM_PM_SLEEP_OPS
SET_SYSTEM_SLEEP_PM_OPS(_od_suspend_noirq, _od_resume_noirq) .suspend_noirq = _od_suspend_noirq,
.resume_noirq = _od_resume_noirq,
} }
}; };

View File

@ -158,7 +158,7 @@ sys_call_table:
.long sys_sched_rr_get_interval .long sys_sched_rr_get_interval
.long sys_nanosleep .long sys_nanosleep
.long sys_poll .long sys_poll
.long sys_nfsservctl /* 145 */ .long sys_ni_syscall /* 145 was nfsservctl */
.long sys_setresgid .long sys_setresgid
.long sys_getresgid .long sys_getresgid
.long sys_prctl .long sys_prctl

View File

@ -1543,7 +1543,7 @@ ENTRY(_sys_call_table)
.long _sys_ni_syscall /* for vm86 */ .long _sys_ni_syscall /* for vm86 */
.long _sys_ni_syscall /* old "query_module" */ .long _sys_ni_syscall /* old "query_module" */
.long _sys_ni_syscall /* sys_poll */ .long _sys_ni_syscall /* sys_poll */
.long _sys_nfsservctl .long _sys_ni_syscall /* old nfsservctl */
.long _sys_setresgid /* setresgid16 */ /* 170 */ .long _sys_setresgid /* setresgid16 */ /* 170 */
.long _sys_getresgid /* getresgid16 */ .long _sys_getresgid /* getresgid16 */
.long _sys_prctl .long _sys_prctl

View File

@ -771,7 +771,7 @@ sys_call_table:
.long sys_ni_syscall /* sys_vm86 */ .long sys_ni_syscall /* sys_vm86 */
.long sys_ni_syscall /* Old sys_query_module */ .long sys_ni_syscall /* Old sys_query_module */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* old nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -714,7 +714,7 @@ sys_call_table:
.long sys_ni_syscall /* sys_vm86 */ .long sys_ni_syscall /* sys_vm86 */
.long sys_ni_syscall /* Old sys_query_module */ .long sys_ni_syscall /* Old sys_query_module */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* Old nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -0,0 +1,9 @@
#ifndef _ASM_SERIAL_H
#define _ASM_SERIAL_H
/*
* This assumes you have a 1.8432 MHz clock for your UART.
*/
#define BASE_BAUD (1843200 / 16)
#endif /* _ASM_SERIAL_H */

View File

@ -1358,7 +1358,7 @@ sys_call_table:
.long sys_ni_syscall /* for vm86 */ .long sys_ni_syscall /* for vm86 */
.long sys_ni_syscall /* Old sys_query_module */ .long sys_ni_syscall /* Old sys_query_module */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* Old nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -183,7 +183,7 @@ SYMBOL_NAME_LABEL(sys_call_table)
.long SYMBOL_NAME(sys_ni_syscall) /* for vm86 */ .long SYMBOL_NAME(sys_ni_syscall) /* for vm86 */
.long SYMBOL_NAME(sys_ni_syscall) /* sys_query_module */ .long SYMBOL_NAME(sys_ni_syscall) /* sys_query_module */
.long SYMBOL_NAME(sys_poll) .long SYMBOL_NAME(sys_poll)
.long SYMBOL_NAME(sys_nfsservctl) .long SYMBOL_NAME(sys_ni_syscall) /* old nfsservctl */
.long SYMBOL_NAME(sys_setresgid16) /* 170 */ .long SYMBOL_NAME(sys_setresgid16) /* 170 */
.long SYMBOL_NAME(sys_getresgid16) .long SYMBOL_NAME(sys_getresgid16)
.long SYMBOL_NAME(sys_prctl) .long SYMBOL_NAME(sys_prctl)

View File

@ -1614,7 +1614,7 @@ sys_call_table:
data8 sys_sched_get_priority_min data8 sys_sched_get_priority_min
data8 sys_sched_rr_get_interval data8 sys_sched_rr_get_interval
data8 sys_nanosleep data8 sys_nanosleep
data8 sys_nfsservctl data8 sys_ni_syscall // old nfsservctl
data8 sys_prctl // 1170 data8 sys_prctl // 1170
data8 sys_getpagesize data8 sys_getpagesize
data8 sys_mmap2 data8 sys_mmap2

View File

@ -168,7 +168,7 @@ ENTRY(sys_call_table)
.long sys_tas /* vm86 syscall holder */ .long sys_tas /* vm86 syscall holder */
.long sys_ni_syscall /* query_module syscall holder */ .long sys_ni_syscall /* query_module syscall holder */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* was nfsservctl */
.long sys_setresgid /* 170 */ .long sys_setresgid /* 170 */
.long sys_getresgid .long sys_getresgid
.long sys_prctl .long sys_prctl

View File

@ -189,7 +189,7 @@ ENTRY(sys_call_table)
.long sys_getpagesize .long sys_getpagesize
.long sys_ni_syscall /* old "query_module" */ .long sys_ni_syscall /* old "query_module" */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* old nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -173,7 +173,7 @@ ENTRY(sys_call_table)
.long sys_ni_syscall /* sys_vm86 */ .long sys_ni_syscall /* sys_vm86 */
.long sys_ni_syscall /* Old sys_query_module */ .long sys_ni_syscall /* Old sys_query_module */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* old nfsservctl */
.long sys_setresgid /* 170 */ .long sys_setresgid /* 170 */
.long sys_getresgid .long sys_getresgid
.long sys_prctl .long sys_prctl

View File

@ -424,7 +424,7 @@ einval: li v0, -ENOSYS
sys sys_getresuid 3 sys sys_getresuid 3
sys sys_ni_syscall 0 /* was sys_query_module */ sys sys_ni_syscall 0 /* was sys_query_module */
sys sys_poll 3 sys sys_poll 3
sys sys_nfsservctl 3 sys sys_ni_syscall 0 /* was nfsservctl */
sys sys_setresgid 3 /* 4190 */ sys sys_setresgid 3 /* 4190 */
sys sys_getresgid 3 sys sys_getresgid 3
sys sys_prctl 5 sys sys_prctl 5

View File

@ -299,7 +299,7 @@ sys_call_table:
PTR sys_ni_syscall /* 5170, was get_kernel_syms */ PTR sys_ni_syscall /* 5170, was get_kernel_syms */
PTR sys_ni_syscall /* was query_module */ PTR sys_ni_syscall /* was query_module */
PTR sys_quotactl PTR sys_quotactl
PTR sys_nfsservctl PTR sys_ni_syscall /* was nfsservctl */
PTR sys_ni_syscall /* res. for getpmsg */ PTR sys_ni_syscall /* res. for getpmsg */
PTR sys_ni_syscall /* 5175 for putpmsg */ PTR sys_ni_syscall /* 5175 for putpmsg */
PTR sys_ni_syscall /* res. for afs_syscall */ PTR sys_ni_syscall /* res. for afs_syscall */

View File

@ -294,7 +294,7 @@ EXPORT(sysn32_call_table)
PTR sys_ni_syscall /* 6170, was get_kernel_syms */ PTR sys_ni_syscall /* 6170, was get_kernel_syms */
PTR sys_ni_syscall /* was query_module */ PTR sys_ni_syscall /* was query_module */
PTR sys_quotactl PTR sys_quotactl
PTR compat_sys_nfsservctl PTR sys_ni_syscall /* was nfsservctl */
PTR sys_ni_syscall /* res. for getpmsg */ PTR sys_ni_syscall /* res. for getpmsg */
PTR sys_ni_syscall /* 6175 for putpmsg */ PTR sys_ni_syscall /* 6175 for putpmsg */
PTR sys_ni_syscall /* res. for afs_syscall */ PTR sys_ni_syscall /* res. for afs_syscall */

View File

@ -392,7 +392,7 @@ sys_call_table:
PTR sys_getresuid PTR sys_getresuid
PTR sys_ni_syscall /* was query_module */ PTR sys_ni_syscall /* was query_module */
PTR sys_poll PTR sys_poll
PTR compat_sys_nfsservctl PTR sys_ni_syscall /* was nfsservctl */
PTR sys_setresgid /* 4190 */ PTR sys_setresgid /* 4190 */
PTR sys_getresgid PTR sys_getresgid
PTR sys_prctl PTR sys_prctl

View File

@ -589,7 +589,7 @@ ENTRY(sys_call_table)
.long sys_ni_syscall /* vm86 */ .long sys_ni_syscall /* vm86 */
.long sys_ni_syscall /* Old sys_query_module */ .long sys_ni_syscall /* Old sys_query_module */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* was nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -54,6 +54,7 @@
#define ODSR_CLEAR 0x1c00 #define ODSR_CLEAR 0x1c00
#define LTLEECSR_ENABLE_ALL 0xFFC000FC #define LTLEECSR_ENABLE_ALL 0xFFC000FC
#define ESCSR_CLEAR 0x07120204 #define ESCSR_CLEAR 0x07120204
#define IECSR_CLEAR 0x80000000
#define RIO_PORT1_EDCSR 0x0640 #define RIO_PORT1_EDCSR 0x0640
#define RIO_PORT2_EDCSR 0x0680 #define RIO_PORT2_EDCSR 0x0680
@ -1089,11 +1090,11 @@ static void port_error_handler(struct rio_mport *port, int offset)
if (offset == 0) { if (offset == 0) {
out_be32((u32 *)(rio_regs_win + RIO_PORT1_EDCSR), 0); out_be32((u32 *)(rio_regs_win + RIO_PORT1_EDCSR), 0);
out_be32((u32 *)(rio_regs_win + RIO_PORT1_IECSR), 0); out_be32((u32 *)(rio_regs_win + RIO_PORT1_IECSR), IECSR_CLEAR);
out_be32((u32 *)(rio_regs_win + RIO_ESCSR), ESCSR_CLEAR); out_be32((u32 *)(rio_regs_win + RIO_ESCSR), ESCSR_CLEAR);
} else { } else {
out_be32((u32 *)(rio_regs_win + RIO_PORT2_EDCSR), 0); out_be32((u32 *)(rio_regs_win + RIO_PORT2_EDCSR), 0);
out_be32((u32 *)(rio_regs_win + RIO_PORT2_IECSR), 0); out_be32((u32 *)(rio_regs_win + RIO_PORT2_IECSR), IECSR_CLEAR);
out_be32((u32 *)(rio_regs_win + RIO_PORT2_ESCSR), ESCSR_CLEAR); out_be32((u32 *)(rio_regs_win + RIO_PORT2_ESCSR), ESCSR_CLEAR);
} }
} }

View File

@ -665,12 +665,6 @@ ENTRY(sys32_poll_wrapper)
lgfr %r4,%r4 # long lgfr %r4,%r4 # long
jg sys_poll # branch to system call jg sys_poll # branch to system call
ENTRY(compat_sys_nfsservctl_wrapper)
lgfr %r2,%r2 # int
llgtr %r3,%r3 # struct compat_nfsctl_arg*
llgtr %r4,%r4 # union compat_nfsctl_res*
jg compat_sys_nfsservctl # branch to system call
ENTRY(sys32_setresgid16_wrapper) ENTRY(sys32_setresgid16_wrapper)
llgfr %r2,%r2 # __kernel_old_gid_emu31_t llgfr %r2,%r2 # __kernel_old_gid_emu31_t
llgfr %r3,%r3 # __kernel_old_gid_emu31_t llgfr %r3,%r3 # __kernel_old_gid_emu31_t

View File

@ -396,17 +396,19 @@ static __init void detect_machine_facilities(void)
static __init void rescue_initrd(void) static __init void rescue_initrd(void)
{ {
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
unsigned long min_initrd_addr = (unsigned long) _end + (4UL << 20);
/* /*
* Move the initrd right behind the bss section in case it starts * Just like in case of IPL from VM reader we make sure there is a
* within the bss section. So we don't overwrite it when the bss * gap of 4MB between end of kernel and start of initrd.
* section gets cleared. * That way we can also be sure that saving an NSS will succeed,
* which however only requires different segments.
*/ */
if (!INITRD_START || !INITRD_SIZE) if (!INITRD_START || !INITRD_SIZE)
return; return;
if (INITRD_START >= (unsigned long) __bss_stop) if (INITRD_START >= min_initrd_addr)
return; return;
memmove(__bss_stop, (void *) INITRD_START, INITRD_SIZE); memmove((void *) min_initrd_addr, (void *) INITRD_START, INITRD_SIZE);
INITRD_START = (unsigned long) __bss_stop; INITRD_START = min_initrd_addr;
#endif #endif
} }

View File

@ -1220,7 +1220,7 @@ static int __init reipl_fcp_init(void)
/* sysfs: create fcp kset for mixing attr group and bin attrs */ /* sysfs: create fcp kset for mixing attr group and bin attrs */
reipl_fcp_kset = kset_create_and_add(IPL_FCP_STR, NULL, reipl_fcp_kset = kset_create_and_add(IPL_FCP_STR, NULL,
&reipl_kset->kobj); &reipl_kset->kobj);
if (!reipl_kset) { if (!reipl_fcp_kset) {
free_page((unsigned long) reipl_block_fcp); free_page((unsigned long) reipl_block_fcp);
return -ENOMEM; return -ENOMEM;
} }
@ -1618,7 +1618,8 @@ static struct shutdown_action vmcmd_action = {SHUTDOWN_ACTION_VMCMD_STR,
static void stop_run(struct shutdown_trigger *trigger) static void stop_run(struct shutdown_trigger *trigger)
{ {
if (strcmp(trigger->name, ON_PANIC_STR) == 0) if (strcmp(trigger->name, ON_PANIC_STR) == 0 ||
strcmp(trigger->name, ON_RESTART_STR) == 0)
disabled_wait((unsigned long) __builtin_return_address(0)); disabled_wait((unsigned long) __builtin_return_address(0));
while (sigp(smp_processor_id(), sigp_stop) == sigp_busy) while (sigp(smp_processor_id(), sigp_stop) == sigp_busy)
cpu_relax(); cpu_relax();
@ -1717,7 +1718,7 @@ static void do_panic(void)
/* on restart */ /* on restart */
static struct shutdown_trigger on_restart_trigger = {ON_RESTART_STR, static struct shutdown_trigger on_restart_trigger = {ON_RESTART_STR,
&reipl_action}; &stop_action};
static ssize_t on_restart_show(struct kobject *kobj, static ssize_t on_restart_show(struct kobject *kobj,
struct kobj_attribute *attr, char *page) struct kobj_attribute *attr, char *page)

View File

@ -177,7 +177,7 @@ SYSCALL(sys_getresuid16,sys_ni_syscall,sys32_getresuid16_wrapper) /* 165 old get
NI_SYSCALL /* for vm86 */ NI_SYSCALL /* for vm86 */
NI_SYSCALL /* old sys_query_module */ NI_SYSCALL /* old sys_query_module */
SYSCALL(sys_poll,sys_poll,sys32_poll_wrapper) SYSCALL(sys_poll,sys_poll,sys32_poll_wrapper)
SYSCALL(sys_nfsservctl,sys_nfsservctl,compat_sys_nfsservctl_wrapper) NI_SYSCALL /* old nfsservctl */
SYSCALL(sys_setresgid16,sys_ni_syscall,sys32_setresgid16_wrapper) /* 170 old setresgid16 syscall */ SYSCALL(sys_setresgid16,sys_ni_syscall,sys32_setresgid16_wrapper) /* 170 old setresgid16 syscall */
SYSCALL(sys_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */ SYSCALL(sys_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */
SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper) SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper)

View File

@ -123,7 +123,7 @@ static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs,
struct perf_event; struct perf_event;
struct perf_sample_data; struct perf_sample_data;
extern void ptrace_triggered(struct perf_event *bp, int nmi, extern void ptrace_triggered(struct perf_event *bp,
struct perf_sample_data *data, struct pt_regs *regs); struct perf_sample_data *data, struct pt_regs *regs);
#define task_pt_regs(task) \ #define task_pt_regs(task) \

View File

@ -15,6 +15,7 @@
#include <linux/serial_sci.h> #include <linux/serial_sci.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/dma-mapping.h>
#include <linux/sh_timer.h> #include <linux/sh_timer.h>
#include <linux/sh_dma.h> #include <linux/sh_dma.h>

View File

@ -22,7 +22,7 @@
#include <linux/atomic.h> #include <linux/atomic.h>
#include <asm/smp.h> #include <asm/smp.h>
static void (*pm_idle)(void); void (*pm_idle)(void);
static int hlt_counter; static int hlt_counter;

View File

@ -185,7 +185,7 @@ ENTRY(sys_call_table)
.long sys_ni_syscall /* vm86 */ .long sys_ni_syscall /* vm86 */
.long sys_ni_syscall /* old "query_module" */ .long sys_ni_syscall /* old "query_module" */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* was nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -189,7 +189,7 @@ sys_call_table:
.long sys_ni_syscall /* vm86 */ .long sys_ni_syscall /* vm86 */
.long sys_ni_syscall /* old "query_module" */ .long sys_ni_syscall /* old "query_module" */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* was nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -316,6 +316,35 @@ static int handle_unaligned_ins(insn_size_t instruction, struct pt_regs *regs,
break; break;
} }
break; break;
case 9: /* mov.w @(disp,PC),Rn */
srcu = (unsigned char __user *)regs->pc;
srcu += 4;
srcu += (instruction & 0x00FF) << 1;
dst = (unsigned char *)rn;
*(unsigned long *)dst = 0;
#if !defined(__LITTLE_ENDIAN__)
dst += 2;
#endif
if (ma->from(dst, srcu, 2))
goto fetch_fault;
sign_extend(2, dst);
ret = 0;
break;
case 0xd: /* mov.l @(disp,PC),Rn */
srcu = (unsigned char __user *)(regs->pc & ~0x3);
srcu += 4;
srcu += (instruction & 0x00FF) << 2;
dst = (unsigned char *)rn;
*(unsigned long *)dst = 0;
if (ma->from(dst, srcu, 4))
goto fetch_fault;
ret = 0;
break;
} }
return ret; return ret;
@ -466,6 +495,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
case 0x0500: /* mov.w @(disp,Rm),R0 */ case 0x0500: /* mov.w @(disp,Rm),R0 */
goto simple; goto simple;
case 0x0B00: /* bf lab - no delayslot*/ case 0x0B00: /* bf lab - no delayslot*/
ret = 0;
break; break;
case 0x0F00: /* bf/s lab */ case 0x0F00: /* bf/s lab */
ret = handle_delayslot(regs, instruction, ma); ret = handle_delayslot(regs, instruction, ma);
@ -479,6 +509,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
} }
break; break;
case 0x0900: /* bt lab - no delayslot */ case 0x0900: /* bt lab - no delayslot */
ret = 0;
break; break;
case 0x0D00: /* bt/s lab */ case 0x0D00: /* bt/s lab */
ret = handle_delayslot(regs, instruction, ma); ret = handle_delayslot(regs, instruction, ma);
@ -494,6 +525,9 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
} }
break; break;
case 0x9000: /* mov.w @(disp,Rm),Rn */
goto simple;
case 0xA000: /* bra label */ case 0xA000: /* bra label */
ret = handle_delayslot(regs, instruction, ma); ret = handle_delayslot(regs, instruction, ma);
if (ret==0) if (ret==0)
@ -507,6 +541,9 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
regs->pc += SH_PC_12BIT_OFFSET(instruction); regs->pc += SH_PC_12BIT_OFFSET(instruction);
} }
break; break;
case 0xD000: /* mov.l @(disp,Rm),Rn */
goto simple;
} }
return ret; return ret;

View File

@ -88,7 +88,7 @@ BTFIXUPDEF_CALL(void, set_irq_udt, int)
#define set_irq_udt(cpu) BTFIXUP_CALL(set_irq_udt)(cpu) #define set_irq_udt(cpu) BTFIXUP_CALL(set_irq_udt)(cpu)
/* All SUN4D IPIs are sent on this IRQ, may be shared with hard IRQs */ /* All SUN4D IPIs are sent on this IRQ, may be shared with hard IRQs */
#define SUN4D_IPI_IRQ 14 #define SUN4D_IPI_IRQ 13
extern void sun4d_ipi_interrupt(void); extern void sun4d_ipi_interrupt(void);

View File

@ -81,7 +81,6 @@ SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4)
SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5) SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5)
SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1) SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1)
SIGN1(sys32_mlockall, sys_mlockall, %o0) SIGN1(sys32_mlockall, sys_mlockall, %o0)
SIGN1(sys32_nfsservctl, compat_sys_nfsservctl, %o0)
SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1) SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1)
SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1) SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1)
SIGN1(sys32_io_submit, compat_sys_io_submit, %o1) SIGN1(sys32_io_submit, compat_sys_io_submit, %o1)

View File

@ -67,7 +67,7 @@ sys_call_table:
/*235*/ .long sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall /*235*/ .long sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
/*240*/ .long sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler /*240*/ .long sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
/*245*/ .long sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep /*245*/ .long sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
/*250*/ .long sys_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl /*250*/ .long sys_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_ni_syscall
/*255*/ .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep /*255*/ .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
/*260*/ .long sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun /*260*/ .long sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
/*265*/ .long sys_timer_delete, sys_timer_create, sys_nis_syscall, sys_io_setup, sys_io_destroy /*265*/ .long sys_timer_delete, sys_timer_create, sys_nis_syscall, sys_io_setup, sys_io_destroy

View File

@ -68,7 +68,7 @@ sys_call_table32:
.word compat_sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys32_mlockall .word compat_sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys32_mlockall
/*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler /*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler
.word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep .word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep
/*250*/ .word sys_mremap, compat_sys_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl /*250*/ .word sys_mremap, compat_sys_sysctl, sys32_getsid, sys_fdatasync, sys_nis_syscall
.word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep .word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
/*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun /*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun
.word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy .word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
@ -145,7 +145,7 @@ sys_call_table:
.word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall .word sys_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
/*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
.word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep
/*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl /*250*/ .word sys_64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nis_syscall
.word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep .word sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
/*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun /*260*/ .word sys_sched_getaffinity, sys_sched_setaffinity, sys_timer_settime, sys_timer_gettime, sys_timer_getoverrun
.word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy .word sys_timer_delete, sys_timer_create, sys_ni_syscall, sys_io_setup, sys_io_destroy

View File

@ -672,7 +672,7 @@ ia32_sys_call_table:
.quad sys32_vm86_warning /* vm86 */ .quad sys32_vm86_warning /* vm86 */
.quad quiet_ni_syscall /* query_module */ .quad quiet_ni_syscall /* query_module */
.quad sys_poll .quad sys_poll
.quad compat_sys_nfsservctl .quad quiet_ni_syscall /* old nfsservctl */
.quad sys_setresgid16 /* 170 */ .quad sys_setresgid16 /* 170 */
.quad sys_getresgid16 .quad sys_getresgid16
.quad sys_prctl .quad sys_prctl

View File

@ -414,7 +414,7 @@ __SYSCALL(__NR_query_module, sys_ni_syscall)
__SYSCALL(__NR_quotactl, sys_quotactl) __SYSCALL(__NR_quotactl, sys_quotactl)
#define __NR_nfsservctl 180 #define __NR_nfsservctl 180
__SYSCALL(__NR_nfsservctl, sys_nfsservctl) __SYSCALL(__NR_nfsservctl, sys_ni_syscall)
/* reserved for LiS/STREAMS */ /* reserved for LiS/STREAMS */
#define __NR_getpmsg 181 #define __NR_getpmsg 181

View File

@ -149,7 +149,6 @@ struct set_mtrr_data {
*/ */
static int mtrr_rendezvous_handler(void *info) static int mtrr_rendezvous_handler(void *info)
{ {
#ifdef CONFIG_SMP
struct set_mtrr_data *data = info; struct set_mtrr_data *data = info;
/* /*
@ -171,7 +170,6 @@ static int mtrr_rendezvous_handler(void *info)
} else if (mtrr_aps_delayed_init || !cpu_online(smp_processor_id())) { } else if (mtrr_aps_delayed_init || !cpu_online(smp_processor_id())) {
mtrr_if->set_all(); mtrr_if->set_all();
} }
#endif
return 0; return 0;
} }

View File

@ -54,6 +54,7 @@
#include <asm/ftrace.h> #include <asm/ftrace.h>
#include <asm/irq_vectors.h> #include <asm/irq_vectors.h>
#include <asm/cpufeature.h> #include <asm/cpufeature.h>
#include <asm/alternative-asm.h>
/* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */ /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
#include <linux/elf-em.h> #include <linux/elf-em.h>
@ -873,12 +874,7 @@ ENTRY(simd_coprocessor_error)
661: pushl_cfi $do_general_protection 661: pushl_cfi $do_general_protection
662: 662:
.section .altinstructions,"a" .section .altinstructions,"a"
.balign 4 altinstruction_entry 661b, 663f, X86_FEATURE_XMM, 662b-661b, 664f-663f
.long 661b
.long 663f
.word X86_FEATURE_XMM
.byte 662b-661b
.byte 664f-663f
.previous .previous
.section .altinstr_replacement,"ax" .section .altinstr_replacement,"ax"
663: pushl $do_simd_coprocessor_error 663: pushl $do_simd_coprocessor_error

View File

@ -168,7 +168,7 @@ ENTRY(sys_call_table)
.long ptregs_vm86 .long ptregs_vm86
.long sys_ni_syscall /* Old sys_query_module */ .long sys_ni_syscall /* Old sys_query_module */
.long sys_poll .long sys_poll
.long sys_nfsservctl .long sys_ni_syscall /* Old nfsservctl */
.long sys_setresgid16 /* 170 */ .long sys_setresgid16 /* 170 */
.long sys_getresgid16 .long sys_getresgid16
.long sys_prctl .long sys_prctl

View File

@ -689,7 +689,9 @@ static int __init sfi_parse_devs(struct sfi_table_header *table)
irq_attr.trigger = 1; irq_attr.trigger = 1;
irq_attr.polarity = 1; irq_attr.polarity = 1;
io_apic_set_pci_routing(NULL, pentry->irq, &irq_attr); io_apic_set_pci_routing(NULL, pentry->irq, &irq_attr);
} } else
pentry->irq = 0; /* No irq */
switch (pentry->type) { switch (pentry->type) {
case SFI_DEV_TYPE_IPC: case SFI_DEV_TYPE_IPC:
/* ID as IRQ is a hack that will go away */ /* ID as IRQ is a hack that will go away */

View File

@ -455,7 +455,7 @@ __SYSCALL(203, sys_reboot, 3)
#define __NR_quotactl 204 #define __NR_quotactl 204
__SYSCALL(204, sys_quotactl, 4) __SYSCALL(204, sys_quotactl, 4)
#define __NR_nfsservctl 205 #define __NR_nfsservctl 205
__SYSCALL(205, sys_nfsservctl, 3) __SYSCALL(205, sys_ni_syscall, 0)
#define __NR__sysctl 206 #define __NR__sysctl 206
__SYSCALL(206, sys_sysctl, 1) __SYSCALL(206, sys_sysctl, 1)
#define __NR_bdflush 207 #define __NR_bdflush 207

View File

@ -397,6 +397,7 @@ static int remove_nodes(struct device *dev,
static int release_nodes(struct device *dev, struct list_head *first, static int release_nodes(struct device *dev, struct list_head *first,
struct list_head *end, unsigned long flags) struct list_head *end, unsigned long flags)
__releases(&dev->devres_lock)
{ {
LIST_HEAD(todo); LIST_HEAD(todo);
int cnt; int cnt;

View File

@ -376,7 +376,7 @@ int devtmpfs_mount(const char *mntdir)
return err; return err;
} }
static __initdata DECLARE_COMPLETION(setup_done); static DECLARE_COMPLETION(setup_done);
static int handle(const char *name, mode_t mode, struct device *dev) static int handle(const char *name, mode_t mode, struct device *dev)
{ {

View File

@ -521,11 +521,6 @@ static int _request_firmware(const struct firmware **firmware_p,
if (!firmware_p) if (!firmware_p)
return -EINVAL; return -EINVAL;
if (WARN_ON(usermodehelper_is_disabled())) {
dev_err(device, "firmware: %s will not be loaded\n", name);
return -EBUSY;
}
*firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL); *firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL);
if (!firmware) { if (!firmware) {
dev_err(device, "%s: kmalloc(struct firmware) failed\n", dev_err(device, "%s: kmalloc(struct firmware) failed\n",
@ -539,6 +534,12 @@ static int _request_firmware(const struct firmware **firmware_p,
return 0; return 0;
} }
if (WARN_ON(usermodehelper_is_disabled())) {
dev_err(device, "firmware: %s will not be loaded\n", name);
retval = -EBUSY;
goto out;
}
if (uevent) if (uevent)
dev_dbg(device, "firmware: requesting %s\n", name); dev_dbg(device, "firmware: requesting %s\n", name);

View File

@ -33,7 +33,7 @@ EXPORT_SYMBOL_GPL(platform_bus);
/** /**
* arch_setup_pdev_archdata - Allow manipulation of archdata before its used * arch_setup_pdev_archdata - Allow manipulation of archdata before its used
* @dev: platform device * @pdev: platform device
* *
* This is called before platform_device_add() such that any pdev_archdata may * This is called before platform_device_add() such that any pdev_archdata may
* be setup before the platform_notifier is called. So if a user needs to * be setup before the platform_notifier is called. So if a user needs to

View File

@ -19,7 +19,7 @@
struct pm_clk_data { struct pm_clk_data {
struct list_head clock_list; struct list_head clock_list;
struct mutex lock; spinlock_t lock;
}; };
enum pce_status { enum pce_status {
@ -73,9 +73,9 @@ int pm_clk_add(struct device *dev, const char *con_id)
} }
} }
mutex_lock(&pcd->lock); spin_lock_irq(&pcd->lock);
list_add_tail(&ce->node, &pcd->clock_list); list_add_tail(&ce->node, &pcd->clock_list);
mutex_unlock(&pcd->lock); spin_unlock_irq(&pcd->lock);
return 0; return 0;
} }
@ -83,8 +83,8 @@ int pm_clk_add(struct device *dev, const char *con_id)
* __pm_clk_remove - Destroy PM clock entry. * __pm_clk_remove - Destroy PM clock entry.
* @ce: PM clock entry to destroy. * @ce: PM clock entry to destroy.
* *
* This routine must be called under the mutex protecting the PM list of clocks * This routine must be called under the spinlock protecting the PM list of
* corresponding the the @ce's device. * clocks corresponding the the @ce's device.
*/ */
static void __pm_clk_remove(struct pm_clock_entry *ce) static void __pm_clk_remove(struct pm_clock_entry *ce)
{ {
@ -123,7 +123,7 @@ void pm_clk_remove(struct device *dev, const char *con_id)
if (!pcd) if (!pcd)
return; return;
mutex_lock(&pcd->lock); spin_lock_irq(&pcd->lock);
list_for_each_entry(ce, &pcd->clock_list, node) { list_for_each_entry(ce, &pcd->clock_list, node) {
if (!con_id && !ce->con_id) { if (!con_id && !ce->con_id) {
@ -137,7 +137,7 @@ void pm_clk_remove(struct device *dev, const char *con_id)
} }
} }
mutex_unlock(&pcd->lock); spin_unlock_irq(&pcd->lock);
} }
/** /**
@ -158,7 +158,7 @@ int pm_clk_init(struct device *dev)
} }
INIT_LIST_HEAD(&pcd->clock_list); INIT_LIST_HEAD(&pcd->clock_list);
mutex_init(&pcd->lock); spin_lock_init(&pcd->lock);
dev->power.subsys_data = pcd; dev->power.subsys_data = pcd;
return 0; return 0;
} }
@ -181,12 +181,12 @@ void pm_clk_destroy(struct device *dev)
dev->power.subsys_data = NULL; dev->power.subsys_data = NULL;
mutex_lock(&pcd->lock); spin_lock_irq(&pcd->lock);
list_for_each_entry_safe_reverse(ce, c, &pcd->clock_list, node) list_for_each_entry_safe_reverse(ce, c, &pcd->clock_list, node)
__pm_clk_remove(ce); __pm_clk_remove(ce);
mutex_unlock(&pcd->lock); spin_unlock_irq(&pcd->lock);
kfree(pcd); kfree(pcd);
} }
@ -220,13 +220,14 @@ int pm_clk_suspend(struct device *dev)
{ {
struct pm_clk_data *pcd = __to_pcd(dev); struct pm_clk_data *pcd = __to_pcd(dev);
struct pm_clock_entry *ce; struct pm_clock_entry *ce;
unsigned long flags;
dev_dbg(dev, "%s()\n", __func__); dev_dbg(dev, "%s()\n", __func__);
if (!pcd) if (!pcd)
return 0; return 0;
mutex_lock(&pcd->lock); spin_lock_irqsave(&pcd->lock, flags);
list_for_each_entry_reverse(ce, &pcd->clock_list, node) { list_for_each_entry_reverse(ce, &pcd->clock_list, node) {
if (ce->status == PCE_STATUS_NONE) if (ce->status == PCE_STATUS_NONE)
@ -238,7 +239,7 @@ int pm_clk_suspend(struct device *dev)
} }
} }
mutex_unlock(&pcd->lock); spin_unlock_irqrestore(&pcd->lock, flags);
return 0; return 0;
} }
@ -251,13 +252,14 @@ int pm_clk_resume(struct device *dev)
{ {
struct pm_clk_data *pcd = __to_pcd(dev); struct pm_clk_data *pcd = __to_pcd(dev);
struct pm_clock_entry *ce; struct pm_clock_entry *ce;
unsigned long flags;
dev_dbg(dev, "%s()\n", __func__); dev_dbg(dev, "%s()\n", __func__);
if (!pcd) if (!pcd)
return 0; return 0;
mutex_lock(&pcd->lock); spin_lock_irqsave(&pcd->lock, flags);
list_for_each_entry(ce, &pcd->clock_list, node) { list_for_each_entry(ce, &pcd->clock_list, node) {
if (ce->status == PCE_STATUS_NONE) if (ce->status == PCE_STATUS_NONE)
@ -269,7 +271,7 @@ int pm_clk_resume(struct device *dev)
} }
} }
mutex_unlock(&pcd->lock); spin_unlock_irqrestore(&pcd->lock, flags);
return 0; return 0;
} }
@ -344,6 +346,7 @@ int pm_clk_suspend(struct device *dev)
{ {
struct pm_clk_data *pcd = __to_pcd(dev); struct pm_clk_data *pcd = __to_pcd(dev);
struct pm_clock_entry *ce; struct pm_clock_entry *ce;
unsigned long flags;
dev_dbg(dev, "%s()\n", __func__); dev_dbg(dev, "%s()\n", __func__);
@ -351,12 +354,12 @@ int pm_clk_suspend(struct device *dev)
if (!pcd || !dev->driver) if (!pcd || !dev->driver)
return 0; return 0;
mutex_lock(&pcd->lock); spin_lock_irqsave(&pcd->lock, flags);
list_for_each_entry_reverse(ce, &pcd->clock_list, node) list_for_each_entry_reverse(ce, &pcd->clock_list, node)
clk_disable(ce->clk); clk_disable(ce->clk);
mutex_unlock(&pcd->lock); spin_unlock_irqrestore(&pcd->lock, flags);
return 0; return 0;
} }
@ -369,6 +372,7 @@ int pm_clk_resume(struct device *dev)
{ {
struct pm_clk_data *pcd = __to_pcd(dev); struct pm_clk_data *pcd = __to_pcd(dev);
struct pm_clock_entry *ce; struct pm_clock_entry *ce;
unsigned long flags;
dev_dbg(dev, "%s()\n", __func__); dev_dbg(dev, "%s()\n", __func__);
@ -376,12 +380,12 @@ int pm_clk_resume(struct device *dev)
if (!pcd || !dev->driver) if (!pcd || !dev->driver)
return 0; return 0;
mutex_lock(&pcd->lock); spin_lock_irqsave(&pcd->lock, flags);
list_for_each_entry(ce, &pcd->clock_list, node) list_for_each_entry(ce, &pcd->clock_list, node)
clk_enable(ce->clk); clk_enable(ce->clk);
mutex_unlock(&pcd->lock); spin_unlock_irqrestore(&pcd->lock, flags);
return 0; return 0;
} }

View File

@ -379,9 +379,8 @@ static int __init smd_pkt_init(void)
for (i = 0; i < NUM_SMD_PKT_PORTS; ++i) { for (i = 0; i < NUM_SMD_PKT_PORTS; ++i) {
smd_pkt_devp[i] = kzalloc(sizeof(struct smd_pkt_dev), smd_pkt_devp[i] = kzalloc(sizeof(struct smd_pkt_dev),
GFP_KERNEL); GFP_KERNEL);
if (IS_ERR(smd_pkt_devp[i])) { if (!smd_pkt_devp[i]) {
r = PTR_ERR(smd_pkt_devp[i]); pr_err("kmalloc() failed\n");
pr_err("kmalloc() failed %d\n", r);
goto clean_cdevs; goto clean_cdevs;
} }

View File

@ -26,6 +26,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/delay.h>
#include <linux/clocksource.h> #include <linux/clocksource.h>
#include <linux/clockchips.h> #include <linux/clockchips.h>
#include <linux/sh_timer.h> #include <linux/sh_timer.h>
@ -150,13 +151,13 @@ static void sh_cmt_start_stop_ch(struct sh_cmt_priv *p, int start)
static int sh_cmt_enable(struct sh_cmt_priv *p, unsigned long *rate) static int sh_cmt_enable(struct sh_cmt_priv *p, unsigned long *rate)
{ {
int ret; int k, ret;
/* enable clock */ /* enable clock */
ret = clk_enable(p->clk); ret = clk_enable(p->clk);
if (ret) { if (ret) {
dev_err(&p->pdev->dev, "cannot enable clock\n"); dev_err(&p->pdev->dev, "cannot enable clock\n");
return ret; goto err0;
} }
/* make sure channel is disabled */ /* make sure channel is disabled */
@ -174,9 +175,38 @@ static int sh_cmt_enable(struct sh_cmt_priv *p, unsigned long *rate)
sh_cmt_write(p, CMCOR, 0xffffffff); sh_cmt_write(p, CMCOR, 0xffffffff);
sh_cmt_write(p, CMCNT, 0); sh_cmt_write(p, CMCNT, 0);
/*
* According to the sh73a0 user's manual, as CMCNT can be operated
* only by the RCLK (Pseudo 32 KHz), there's one restriction on
* modifying CMCNT register; two RCLK cycles are necessary before
* this register is either read or any modification of the value
* it holds is reflected in the LSI's actual operation.
*
* While at it, we're supposed to clear out the CMCNT as of this
* moment, so make sure it's processed properly here. This will
* take RCLKx2 at maximum.
*/
for (k = 0; k < 100; k++) {
if (!sh_cmt_read(p, CMCNT))
break;
udelay(1);
}
if (sh_cmt_read(p, CMCNT)) {
dev_err(&p->pdev->dev, "cannot clear CMCNT\n");
ret = -ETIMEDOUT;
goto err1;
}
/* enable channel */ /* enable channel */
sh_cmt_start_stop_ch(p, 1); sh_cmt_start_stop_ch(p, 1);
return 0; return 0;
err1:
/* stop clock */
clk_disable(p->clk);
err0:
return ret;
} }
static void sh_cmt_disable(struct sh_cmt_priv *p) static void sh_cmt_disable(struct sh_cmt_priv *p)

View File

@ -1198,6 +1198,10 @@ static int sbp2_remove(struct device *dev)
{ {
struct fw_unit *unit = fw_unit(dev); struct fw_unit *unit = fw_unit(dev);
struct sbp2_target *tgt = dev_get_drvdata(&unit->device); struct sbp2_target *tgt = dev_get_drvdata(&unit->device);
struct sbp2_logical_unit *lu;
list_for_each_entry(lu, &tgt->lu_list, link)
cancel_delayed_work_sync(&lu->work);
sbp2_target_put(tgt); sbp2_target_put(tgt);
return 0; return 0;

View File

@ -420,7 +420,7 @@ static efi_status_t gsmi_get_next_variable(unsigned long *name_size,
static efi_status_t gsmi_set_variable(efi_char16_t *name, static efi_status_t gsmi_set_variable(efi_char16_t *name,
efi_guid_t *vendor, efi_guid_t *vendor,
unsigned long attr, u32 attr,
unsigned long data_size, unsigned long data_size,
void *data) void *data)
{ {

View File

@ -878,7 +878,7 @@ static void assert_panel_unlocked(struct drm_i915_private *dev_priv,
int pp_reg, lvds_reg; int pp_reg, lvds_reg;
u32 val; u32 val;
enum pipe panel_pipe = PIPE_A; enum pipe panel_pipe = PIPE_A;
bool locked = locked; bool locked = true;
if (HAS_PCH_SPLIT(dev_priv->dev)) { if (HAS_PCH_SPLIT(dev_priv->dev)) {
pp_reg = PCH_PP_CONTROL; pp_reg = PCH_PP_CONTROL;
@ -7238,8 +7238,6 @@ static void intel_setup_outputs(struct drm_device *dev)
intel_encoder_clones(dev, encoder->clone_mask); intel_encoder_clones(dev, encoder->clone_mask);
} }
intel_panel_setup_backlight(dev);
/* disable all the possible outputs/crtcs before entering KMS mode */ /* disable all the possible outputs/crtcs before entering KMS mode */
drm_helper_disable_unused_functions(dev); drm_helper_disable_unused_functions(dev);
} }

View File

@ -114,7 +114,6 @@ struct i5k_amb_data {
void __iomem *amb_mmio; void __iomem *amb_mmio;
struct i5k_device_attribute *attrs; struct i5k_device_attribute *attrs;
unsigned int num_attrs; unsigned int num_attrs;
unsigned long chipset_id;
}; };
static ssize_t show_name(struct device *dev, struct device_attribute *devattr, static ssize_t show_name(struct device *dev, struct device_attribute *devattr,
@ -444,8 +443,6 @@ static int __devinit i5k_find_amb_registers(struct i5k_amb_data *data,
goto out; goto out;
} }
data->chipset_id = devid;
res = 0; res = 0;
out: out:
pci_dev_put(pcidev); pci_dev_put(pcidev);
@ -478,23 +475,13 @@ static int __devinit i5k_channel_probe(u16 *amb_present, unsigned long dev_id)
return res; return res;
} }
static unsigned long i5k_channel_pci_id(struct i5k_amb_data *data, static struct {
unsigned long channel) unsigned long err;
{ unsigned long fbd0;
switch (data->chipset_id) { } chipset_ids[] __devinitdata = {
case PCI_DEVICE_ID_INTEL_5000_ERR: { PCI_DEVICE_ID_INTEL_5000_ERR, PCI_DEVICE_ID_INTEL_5000_FBD0 },
return PCI_DEVICE_ID_INTEL_5000_FBD0 + channel; { PCI_DEVICE_ID_INTEL_5400_ERR, PCI_DEVICE_ID_INTEL_5400_FBD0 },
case PCI_DEVICE_ID_INTEL_5400_ERR: { 0, 0 }
return PCI_DEVICE_ID_INTEL_5400_FBD0 + channel;
default:
BUG();
}
}
static unsigned long chipset_ids[] = {
PCI_DEVICE_ID_INTEL_5000_ERR,
PCI_DEVICE_ID_INTEL_5400_ERR,
0
}; };
#ifdef MODULE #ifdef MODULE
@ -510,8 +497,7 @@ static int __devinit i5k_amb_probe(struct platform_device *pdev)
{ {
struct i5k_amb_data *data; struct i5k_amb_data *data;
struct resource *reso; struct resource *reso;
int i; int i, res;
int res = -ENODEV;
data = kzalloc(sizeof(*data), GFP_KERNEL); data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) if (!data)
@ -520,22 +506,22 @@ static int __devinit i5k_amb_probe(struct platform_device *pdev)
/* Figure out where the AMB registers live */ /* Figure out where the AMB registers live */
i = 0; i = 0;
do { do {
res = i5k_find_amb_registers(data, chipset_ids[i]); res = i5k_find_amb_registers(data, chipset_ids[i].err);
if (res == 0)
break;
i++; i++;
} while (res && chipset_ids[i]); } while (chipset_ids[i].err);
if (res) if (res)
goto err; goto err;
/* Copy the DIMM presence map for the first two channels */ /* Copy the DIMM presence map for the first two channels */
res = i5k_channel_probe(&data->amb_present[0], res = i5k_channel_probe(&data->amb_present[0], chipset_ids[i].fbd0);
i5k_channel_pci_id(data, 0));
if (res) if (res)
goto err; goto err;
/* Copy the DIMM presence map for the optional second two channels */ /* Copy the DIMM presence map for the optional second two channels */
i5k_channel_probe(&data->amb_present[2], i5k_channel_probe(&data->amb_present[2], chipset_ids[i].fbd0 + 1);
i5k_channel_pci_id(data, 1));
/* Set up resource regions */ /* Set up resource regions */
reso = request_mem_region(data->amb_base, data->amb_len, DRVNAME); reso = request_mem_region(data->amb_base, data->amb_len, DRVNAME);

View File

@ -211,8 +211,7 @@ static int lookup_comp(struct ntc_data *data,
if (data->comp[mid].ohm <= ohm) { if (data->comp[mid].ohm <= ohm) {
*i_low = mid; *i_low = mid;
*i_high = mid - 1; *i_high = mid - 1;
} } else {
if (data->comp[mid].ohm > ohm) {
*i_low = mid + 1; *i_low = mid + 1;
*i_high = mid; *i_high = mid;
} }

View File

@ -146,6 +146,7 @@ struct i2c_nmk_client {
* @stop: stop condition * @stop: stop condition
* @xfer_complete: acknowledge completion for a I2C message * @xfer_complete: acknowledge completion for a I2C message
* @result: controller propogated result * @result: controller propogated result
* @regulator: pointer to i2c regulator
* @busy: Busy doing transfer * @busy: Busy doing transfer
*/ */
struct nmk_i2c_dev { struct nmk_i2c_dev {
@ -417,12 +418,12 @@ static int read_i2c(struct nmk_i2c_dev *dev)
writel(readl(dev->virtbase + I2C_IMSCR) | irq_mask, writel(readl(dev->virtbase + I2C_IMSCR) | irq_mask,
dev->virtbase + I2C_IMSCR); dev->virtbase + I2C_IMSCR);
timeout = wait_for_completion_interruptible_timeout( timeout = wait_for_completion_timeout(
&dev->xfer_complete, dev->adap.timeout); &dev->xfer_complete, dev->adap.timeout);
if (timeout < 0) { if (timeout < 0) {
dev_err(&dev->pdev->dev, dev_err(&dev->pdev->dev,
"wait_for_completion_interruptible_timeout" "wait_for_completion_timeout"
"returned %d waiting for event\n", timeout); "returned %d waiting for event\n", timeout);
status = timeout; status = timeout;
} }
@ -504,12 +505,12 @@ static int write_i2c(struct nmk_i2c_dev *dev)
writel(readl(dev->virtbase + I2C_IMSCR) | irq_mask, writel(readl(dev->virtbase + I2C_IMSCR) | irq_mask,
dev->virtbase + I2C_IMSCR); dev->virtbase + I2C_IMSCR);
timeout = wait_for_completion_interruptible_timeout( timeout = wait_for_completion_timeout(
&dev->xfer_complete, dev->adap.timeout); &dev->xfer_complete, dev->adap.timeout);
if (timeout < 0) { if (timeout < 0) {
dev_err(&dev->pdev->dev, dev_err(&dev->pdev->dev,
"wait_for_completion_interruptible_timeout" "wait_for_completion_timeout "
"returned %d waiting for event\n", timeout); "returned %d waiting for event\n", timeout);
status = timeout; status = timeout;
} }

View File

@ -1139,41 +1139,12 @@ omap_i2c_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_SUSPEND
static int omap_i2c_suspend(struct device *dev)
{
if (!pm_runtime_suspended(dev))
if (dev->bus && dev->bus->pm && dev->bus->pm->runtime_suspend)
dev->bus->pm->runtime_suspend(dev);
return 0;
}
static int omap_i2c_resume(struct device *dev)
{
if (!pm_runtime_suspended(dev))
if (dev->bus && dev->bus->pm && dev->bus->pm->runtime_resume)
dev->bus->pm->runtime_resume(dev);
return 0;
}
static struct dev_pm_ops omap_i2c_pm_ops = {
.suspend = omap_i2c_suspend,
.resume = omap_i2c_resume,
};
#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
#else
#define OMAP_I2C_PM_OPS NULL
#endif
static struct platform_driver omap_i2c_driver = { static struct platform_driver omap_i2c_driver = {
.probe = omap_i2c_probe, .probe = omap_i2c_probe,
.remove = omap_i2c_remove, .remove = omap_i2c_remove,
.driver = { .driver = {
.name = "omap_i2c", .name = "omap_i2c",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = OMAP_I2C_PM_OPS,
}, },
}; };

View File

@ -8,6 +8,7 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <linux/module.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>

View File

@ -662,6 +662,11 @@ static int bd2802_register_led_classdev(struct bd2802_led *led)
static void bd2802_unregister_led_classdev(struct bd2802_led *led) static void bd2802_unregister_led_classdev(struct bd2802_led *led)
{ {
cancel_work_sync(&led->work); cancel_work_sync(&led->work);
led_classdev_unregister(&led->cdev_led2b);
led_classdev_unregister(&led->cdev_led2g);
led_classdev_unregister(&led->cdev_led2r);
led_classdev_unregister(&led->cdev_led1b);
led_classdev_unregister(&led->cdev_led1g);
led_classdev_unregister(&led->cdev_led1r); led_classdev_unregister(&led->cdev_led1r);
} }

View File

@ -10,6 +10,7 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <linux/module.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>

View File

@ -146,6 +146,7 @@ config PHANTOM
config INTEL_MID_PTI config INTEL_MID_PTI
tristate "Parallel Trace Interface for MIPI P1149.7 cJTAG standard" tristate "Parallel Trace Interface for MIPI P1149.7 cJTAG standard"
depends on PCI
default n default n
help help
The PTI (Parallel Trace Interface) driver directs The PTI (Parallel Trace Interface) driver directs

View File

@ -164,5 +164,5 @@ subsys_initcall(ab8500_pwm_init);
module_exit(ab8500_pwm_exit); module_exit(ab8500_pwm_exit);
MODULE_AUTHOR("Arun MURTHY <arun.murthy@stericsson.com>"); MODULE_AUTHOR("Arun MURTHY <arun.murthy@stericsson.com>");
MODULE_DESCRIPTION("AB8500 Pulse Width Modulation Driver"); MODULE_DESCRIPTION("AB8500 Pulse Width Modulation Driver");
MODULE_ALIAS("AB8500 PWM driver"); MODULE_ALIAS("platform:ab8500-pwm");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");

View File

@ -455,7 +455,7 @@ static int __devinit fsa9480_probe(struct i2c_client *client,
fail2: fail2:
if (client->irq) if (client->irq)
free_irq(client->irq, NULL); free_irq(client->irq, usbsw);
fail1: fail1:
i2c_set_clientdata(client, NULL); i2c_set_clientdata(client, NULL);
kfree(usbsw); kfree(usbsw);
@ -466,7 +466,7 @@ static int __devexit fsa9480_remove(struct i2c_client *client)
{ {
struct fsa9480_usbsw *usbsw = i2c_get_clientdata(client); struct fsa9480_usbsw *usbsw = i2c_get_clientdata(client);
if (client->irq) if (client->irq)
free_irq(client->irq, NULL); free_irq(client->irq, usbsw);
i2c_set_clientdata(client, NULL); i2c_set_clientdata(client, NULL);
sysfs_remove_group(&client->dev.kobj, &fsa9480_group); sysfs_remove_group(&client->dev.kobj, &fsa9480_group);

View File

@ -33,6 +33,8 @@
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/miscdevice.h> #include <linux/miscdevice.h>
#include <linux/pti.h> #include <linux/pti.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#define DRIVERNAME "pti" #define DRIVERNAME "pti"
#define PCINAME "pciPTI" #define PCINAME "pciPTI"

View File

@ -338,6 +338,12 @@ void st_int_recv(void *disc_data,
/* Unknow packet? */ /* Unknow packet? */
default: default:
type = *ptr; type = *ptr;
if (st_gdata->list[type] == NULL) {
pr_err("chip/interface misbehavior dropping"
" frame starting with 0x%02x", type);
goto done;
}
st_gdata->rx_skb = alloc_skb( st_gdata->rx_skb = alloc_skb(
st_gdata->list[type]->max_frame_size, st_gdata->list[type]->max_frame_size,
GFP_ATOMIC); GFP_ATOMIC);
@ -354,6 +360,7 @@ void st_int_recv(void *disc_data,
ptr++; ptr++;
count--; count--;
} }
done:
spin_unlock_irqrestore(&st_gdata->lock, flags); spin_unlock_irqrestore(&st_gdata->lock, flags);
pr_debug("done %s", __func__); pr_debug("done %s", __func__);
return; return;
@ -717,9 +724,10 @@ static void st_tty_close(struct tty_struct *tty)
*/ */
spin_lock_irqsave(&st_gdata->lock, flags); spin_lock_irqsave(&st_gdata->lock, flags);
for (i = ST_BT; i < ST_MAX_CHANNELS; i++) { for (i = ST_BT; i < ST_MAX_CHANNELS; i++) {
if (st_gdata->list[i] != NULL) if (st_gdata->is_registered[i] == true)
pr_err("%d not un-registered", i); pr_err("%d not un-registered", i);
st_gdata->list[i] = NULL; st_gdata->list[i] = NULL;
st_gdata->is_registered[i] = false;
} }
st_gdata->protos_registered = 0; st_gdata->protos_registered = 0;
spin_unlock_irqrestore(&st_gdata->lock, flags); spin_unlock_irqrestore(&st_gdata->lock, flags);

View File

@ -68,6 +68,7 @@ void validate_firmware_response(struct kim_data_s *kim_gdata)
if (unlikely(skb->data[5] != 0)) { if (unlikely(skb->data[5] != 0)) {
pr_err("no proper response during fw download"); pr_err("no proper response during fw download");
pr_err("data6 %x", skb->data[5]); pr_err("data6 %x", skb->data[5]);
kfree_skb(skb);
return; /* keep waiting for the proper response */ return; /* keep waiting for the proper response */
} }
/* becos of all the script being downloaded */ /* becos of all the script being downloaded */
@ -210,6 +211,7 @@ static long read_local_version(struct kim_data_s *kim_gdata, char *bts_scr_name)
pr_err(" waiting for ver info- timed out "); pr_err(" waiting for ver info- timed out ");
return -ETIMEDOUT; return -ETIMEDOUT;
} }
INIT_COMPLETION(kim_gdata->kim_rcvd);
version = version =
MAKEWORD(kim_gdata->resp_buffer[13], MAKEWORD(kim_gdata->resp_buffer[13],
@ -298,6 +300,7 @@ static long download_firmware(struct kim_data_s *kim_gdata)
switch (((struct bts_action *)ptr)->type) { switch (((struct bts_action *)ptr)->type) {
case ACTION_SEND_COMMAND: /* action send */ case ACTION_SEND_COMMAND: /* action send */
pr_debug("S");
action_ptr = &(((struct bts_action *)ptr)->data[0]); action_ptr = &(((struct bts_action *)ptr)->data[0]);
if (unlikely if (unlikely
(((struct hci_command *)action_ptr)->opcode == (((struct hci_command *)action_ptr)->opcode ==
@ -335,6 +338,10 @@ static long download_firmware(struct kim_data_s *kim_gdata)
release_firmware(kim_gdata->fw_entry); release_firmware(kim_gdata->fw_entry);
return -ETIMEDOUT; return -ETIMEDOUT;
} }
/* reinit completion before sending for the
* relevant wait
*/
INIT_COMPLETION(kim_gdata->kim_rcvd);
/* /*
* Free space found in uart buffer, call st_int_write * Free space found in uart buffer, call st_int_write
@ -361,6 +368,7 @@ static long download_firmware(struct kim_data_s *kim_gdata)
} }
break; break;
case ACTION_WAIT_EVENT: /* wait */ case ACTION_WAIT_EVENT: /* wait */
pr_debug("W");
if (!wait_for_completion_timeout if (!wait_for_completion_timeout
(&kim_gdata->kim_rcvd, (&kim_gdata->kim_rcvd,
msecs_to_jiffies(CMD_RESP_TIME))) { msecs_to_jiffies(CMD_RESP_TIME))) {
@ -434,11 +442,17 @@ long st_kim_start(void *kim_data)
{ {
long err = 0; long err = 0;
long retry = POR_RETRY_COUNT; long retry = POR_RETRY_COUNT;
struct ti_st_plat_data *pdata;
struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data; struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data;
pr_info(" %s", __func__); pr_info(" %s", __func__);
pdata = kim_gdata->kim_pdev->dev.platform_data;
do { do {
/* platform specific enabling code here */
if (pdata->chip_enable)
pdata->chip_enable(kim_gdata);
/* Configure BT nShutdown to HIGH state */ /* Configure BT nShutdown to HIGH state */
gpio_set_value(kim_gdata->nshutdown, GPIO_LOW); gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
mdelay(5); /* FIXME: a proper toggle */ mdelay(5); /* FIXME: a proper toggle */
@ -460,6 +474,12 @@ long st_kim_start(void *kim_data)
pr_info("ldisc_install = 0"); pr_info("ldisc_install = 0");
sysfs_notify(&kim_gdata->kim_pdev->dev.kobj, sysfs_notify(&kim_gdata->kim_pdev->dev.kobj,
NULL, "install"); NULL, "install");
/* the following wait is never going to be completed,
* since the ldisc was never installed, hence serving
* as a mdelay of LDISC_TIME msecs */
err = wait_for_completion_timeout
(&kim_gdata->ldisc_installed,
msecs_to_jiffies(LDISC_TIME));
err = -ETIMEDOUT; err = -ETIMEDOUT;
continue; continue;
} else { } else {
@ -472,6 +492,13 @@ long st_kim_start(void *kim_data)
pr_info("ldisc_install = 0"); pr_info("ldisc_install = 0");
sysfs_notify(&kim_gdata->kim_pdev->dev.kobj, sysfs_notify(&kim_gdata->kim_pdev->dev.kobj,
NULL, "install"); NULL, "install");
/* this wait might be completed, though in the
* tty_close() since the ldisc is already
* installed */
err = wait_for_completion_timeout
(&kim_gdata->ldisc_installed,
msecs_to_jiffies(LDISC_TIME));
err = -EINVAL;
continue; continue;
} else { /* on success don't retry */ } else { /* on success don't retry */
break; break;
@ -489,6 +516,8 @@ long st_kim_stop(void *kim_data)
{ {
long err = 0; long err = 0;
struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data; struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data;
struct ti_st_plat_data *pdata =
kim_gdata->kim_pdev->dev.platform_data;
INIT_COMPLETION(kim_gdata->ldisc_installed); INIT_COMPLETION(kim_gdata->ldisc_installed);
@ -515,6 +544,10 @@ long st_kim_stop(void *kim_data)
gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH); gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH);
mdelay(1); mdelay(1);
gpio_set_value(kim_gdata->nshutdown, GPIO_LOW); gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
/* platform specific disable */
if (pdata->chip_disable)
pdata->chip_disable(kim_gdata);
return err; return err;
} }

View File

@ -22,6 +22,7 @@
#define pr_fmt(fmt) "(stll) :" fmt #define pr_fmt(fmt) "(stll) :" fmt
#include <linux/skbuff.h> #include <linux/skbuff.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/ti_wilink_st.h> #include <linux/ti_wilink_st.h>
/**********************************************************************/ /**********************************************************************/
@ -37,6 +38,9 @@ static void send_ll_cmd(struct st_data_s *st_data,
static void ll_device_want_to_sleep(struct st_data_s *st_data) static void ll_device_want_to_sleep(struct st_data_s *st_data)
{ {
struct kim_data_s *kim_data;
struct ti_st_plat_data *pdata;
pr_debug("%s", __func__); pr_debug("%s", __func__);
/* sanity check */ /* sanity check */
if (st_data->ll_state != ST_LL_AWAKE) if (st_data->ll_state != ST_LL_AWAKE)
@ -46,10 +50,19 @@ static void ll_device_want_to_sleep(struct st_data_s *st_data)
send_ll_cmd(st_data, LL_SLEEP_ACK); send_ll_cmd(st_data, LL_SLEEP_ACK);
/* update state */ /* update state */
st_data->ll_state = ST_LL_ASLEEP; st_data->ll_state = ST_LL_ASLEEP;
/* communicate to platform about chip asleep */
kim_data = st_data->kim_data;
pdata = kim_data->kim_pdev->dev.platform_data;
if (pdata->chip_asleep)
pdata->chip_asleep(NULL);
} }
static void ll_device_want_to_wakeup(struct st_data_s *st_data) static void ll_device_want_to_wakeup(struct st_data_s *st_data)
{ {
struct kim_data_s *kim_data;
struct ti_st_plat_data *pdata;
/* diff actions in diff states */ /* diff actions in diff states */
switch (st_data->ll_state) { switch (st_data->ll_state) {
case ST_LL_ASLEEP: case ST_LL_ASLEEP:
@ -70,6 +83,12 @@ static void ll_device_want_to_wakeup(struct st_data_s *st_data)
} }
/* update state */ /* update state */
st_data->ll_state = ST_LL_AWAKE; st_data->ll_state = ST_LL_AWAKE;
/* communicate to platform about chip wakeup */
kim_data = st_data->kim_data;
pdata = kim_data->kim_pdev->dev.platform_data;
if (pdata->chip_asleep)
pdata->chip_awake(NULL);
} }
/**********************************************************************/ /**********************************************************************/

View File

@ -4026,6 +4026,12 @@ s32 e1000_validate_eeprom_checksum(struct e1000_hw *hw)
checksum += eeprom_data; checksum += eeprom_data;
} }
#ifdef CONFIG_PARISC
/* This is a signature and not a checksum on HP c8000 */
if ((hw->subsystem_vendor_id == 0x103C) && (eeprom_data == 0x16d6))
return E1000_SUCCESS;
#endif
if (checksum == (u16) EEPROM_SUM) if (checksum == (u16) EEPROM_SUM)
return E1000_SUCCESS; return E1000_SUCCESS;
else { else {

View File

@ -80,13 +80,13 @@ static int rionet_capable = 1;
*/ */
static struct rio_dev **rionet_active; static struct rio_dev **rionet_active;
#define is_rionet_capable(pef, src_ops, dst_ops) \ #define is_rionet_capable(src_ops, dst_ops) \
((pef & RIO_PEF_INB_MBOX) && \ ((src_ops & RIO_SRC_OPS_DATA_MSG) && \
(pef & RIO_PEF_INB_DOORBELL) && \ (dst_ops & RIO_DST_OPS_DATA_MSG) && \
(src_ops & RIO_SRC_OPS_DOORBELL) && \ (src_ops & RIO_SRC_OPS_DOORBELL) && \
(dst_ops & RIO_DST_OPS_DOORBELL)) (dst_ops & RIO_DST_OPS_DOORBELL))
#define dev_rionet_capable(dev) \ #define dev_rionet_capable(dev) \
is_rionet_capable(dev->pef, dev->src_ops, dev->dst_ops) is_rionet_capable(dev->src_ops, dev->dst_ops)
#define RIONET_MAC_MATCH(x) (*(u32 *)x == 0x00010001) #define RIONET_MAC_MATCH(x) (*(u32 *)x == 0x00010001)
#define RIONET_GET_DESTID(x) (*(u16 *)(x + 4)) #define RIONET_GET_DESTID(x) (*(u16 *)(x + 4))
@ -282,7 +282,6 @@ static int rionet_open(struct net_device *ndev)
{ {
int i, rc = 0; int i, rc = 0;
struct rionet_peer *peer, *tmp; struct rionet_peer *peer, *tmp;
u32 pwdcsr;
struct rionet_private *rnet = netdev_priv(ndev); struct rionet_private *rnet = netdev_priv(ndev);
if (netif_msg_ifup(rnet)) if (netif_msg_ifup(rnet))
@ -332,13 +331,8 @@ static int rionet_open(struct net_device *ndev)
continue; continue;
} }
/* /* Send a join message */
* If device has initialized inbound doorbells, rio_send_doorbell(peer->rdev, RIONET_DOORBELL_JOIN);
* send a join message
*/
rio_read_config_32(peer->rdev, RIO_WRITE_PORT_CSR, &pwdcsr);
if (pwdcsr & RIO_DOORBELL_AVAIL)
rio_send_doorbell(peer->rdev, RIONET_DOORBELL_JOIN);
} }
out: out:
@ -492,7 +486,7 @@ static int rionet_setup_netdev(struct rio_mport *mport, struct net_device *ndev)
static int rionet_probe(struct rio_dev *rdev, const struct rio_device_id *id) static int rionet_probe(struct rio_dev *rdev, const struct rio_device_id *id)
{ {
int rc = -ENODEV; int rc = -ENODEV;
u32 lpef, lsrc_ops, ldst_ops; u32 lsrc_ops, ldst_ops;
struct rionet_peer *peer; struct rionet_peer *peer;
struct net_device *ndev = NULL; struct net_device *ndev = NULL;
@ -515,12 +509,11 @@ static int rionet_probe(struct rio_dev *rdev, const struct rio_device_id *id)
* on later probes * on later probes
*/ */
if (!rionet_check) { if (!rionet_check) {
rio_local_read_config_32(rdev->net->hport, RIO_PEF_CAR, &lpef);
rio_local_read_config_32(rdev->net->hport, RIO_SRC_OPS_CAR, rio_local_read_config_32(rdev->net->hport, RIO_SRC_OPS_CAR,
&lsrc_ops); &lsrc_ops);
rio_local_read_config_32(rdev->net->hport, RIO_DST_OPS_CAR, rio_local_read_config_32(rdev->net->hport, RIO_DST_OPS_CAR,
&ldst_ops); &ldst_ops);
if (!is_rionet_capable(lpef, lsrc_ops, ldst_ops)) { if (!is_rionet_capable(lsrc_ops, ldst_ops)) {
printk(KERN_ERR printk(KERN_ERR
"%s: local device is not network capable\n", "%s: local device is not network capable\n",
DRV_NAME); DRV_NAME);

View File

@ -505,8 +505,7 @@ static struct rio_dev __devinit *rio_setup_device(struct rio_net *net,
rdev->dev.dma_mask = &rdev->dma_mask; rdev->dev.dma_mask = &rdev->dma_mask;
rdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); rdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
if ((rdev->pef & RIO_PEF_INB_DOORBELL) && if (rdev->dst_ops & RIO_DST_OPS_DOORBELL)
(rdev->dst_ops & RIO_DST_OPS_DOORBELL))
rio_init_dbell_res(&rdev->riores[RIO_DOORBELL_RESOURCE], rio_init_dbell_res(&rdev->riores[RIO_DOORBELL_RESOURCE],
0, 0xffff); 0, 0xffff);

View File

@ -152,10 +152,6 @@ static int s3c_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm)
goto retry_get_time; goto retry_get_time;
} }
pr_debug("read time %04d.%02d.%02d %02d:%02d:%02d\n",
1900 + rtc_tm->tm_year, rtc_tm->tm_mon, rtc_tm->tm_mday,
rtc_tm->tm_hour, rtc_tm->tm_min, rtc_tm->tm_sec);
rtc_tm->tm_sec = bcd2bin(rtc_tm->tm_sec); rtc_tm->tm_sec = bcd2bin(rtc_tm->tm_sec);
rtc_tm->tm_min = bcd2bin(rtc_tm->tm_min); rtc_tm->tm_min = bcd2bin(rtc_tm->tm_min);
rtc_tm->tm_hour = bcd2bin(rtc_tm->tm_hour); rtc_tm->tm_hour = bcd2bin(rtc_tm->tm_hour);
@ -164,6 +160,11 @@ static int s3c_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm)
rtc_tm->tm_year = bcd2bin(rtc_tm->tm_year); rtc_tm->tm_year = bcd2bin(rtc_tm->tm_year);
rtc_tm->tm_year += 100; rtc_tm->tm_year += 100;
pr_debug("read time %04d.%02d.%02d %02d:%02d:%02d\n",
1900 + rtc_tm->tm_year, rtc_tm->tm_mon, rtc_tm->tm_mday,
rtc_tm->tm_hour, rtc_tm->tm_min, rtc_tm->tm_sec);
rtc_tm->tm_mon -= 1; rtc_tm->tm_mon -= 1;
clk_disable(rtc_clk); clk_disable(rtc_clk);
@ -269,10 +270,9 @@ static int s3c_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
clk_enable(rtc_clk); clk_enable(rtc_clk);
pr_debug("s3c_rtc_setalarm: %d, %04d.%02d.%02d %02d:%02d:%02d\n", pr_debug("s3c_rtc_setalarm: %d, %04d.%02d.%02d %02d:%02d:%02d\n",
alrm->enabled, alrm->enabled,
1900 + tm->tm_year, tm->tm_mon, tm->tm_mday, 1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec); tm->tm_hour, tm->tm_min, tm->tm_sec);
alrm_en = readb(base + S3C2410_RTCALM) & S3C2410_RTCALM_ALMEN; alrm_en = readb(base + S3C2410_RTCALM) & S3C2410_RTCALM_ALMEN;
writeb(0x00, base + S3C2410_RTCALM); writeb(0x00, base + S3C2410_RTCALM);
@ -319,49 +319,7 @@ static int s3c_rtc_proc(struct device *dev, struct seq_file *seq)
return 0; return 0;
} }
static int s3c_rtc_open(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct rtc_device *rtc_dev = platform_get_drvdata(pdev);
int ret;
ret = request_irq(s3c_rtc_alarmno, s3c_rtc_alarmirq,
IRQF_DISABLED, "s3c2410-rtc alarm", rtc_dev);
if (ret) {
dev_err(dev, "IRQ%d error %d\n", s3c_rtc_alarmno, ret);
return ret;
}
ret = request_irq(s3c_rtc_tickno, s3c_rtc_tickirq,
IRQF_DISABLED, "s3c2410-rtc tick", rtc_dev);
if (ret) {
dev_err(dev, "IRQ%d error %d\n", s3c_rtc_tickno, ret);
goto tick_err;
}
return ret;
tick_err:
free_irq(s3c_rtc_alarmno, rtc_dev);
return ret;
}
static void s3c_rtc_release(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct rtc_device *rtc_dev = platform_get_drvdata(pdev);
/* do not clear AIE here, it may be needed for wake */
free_irq(s3c_rtc_alarmno, rtc_dev);
free_irq(s3c_rtc_tickno, rtc_dev);
}
static const struct rtc_class_ops s3c_rtcops = { static const struct rtc_class_ops s3c_rtcops = {
.open = s3c_rtc_open,
.release = s3c_rtc_release,
.read_time = s3c_rtc_gettime, .read_time = s3c_rtc_gettime,
.set_time = s3c_rtc_settime, .set_time = s3c_rtc_settime,
.read_alarm = s3c_rtc_getalarm, .read_alarm = s3c_rtc_getalarm,
@ -425,6 +383,9 @@ static int __devexit s3c_rtc_remove(struct platform_device *dev)
{ {
struct rtc_device *rtc = platform_get_drvdata(dev); struct rtc_device *rtc = platform_get_drvdata(dev);
free_irq(s3c_rtc_alarmno, rtc);
free_irq(s3c_rtc_tickno, rtc);
platform_set_drvdata(dev, NULL); platform_set_drvdata(dev, NULL);
rtc_device_unregister(rtc); rtc_device_unregister(rtc);
@ -548,10 +509,32 @@ static int __devinit s3c_rtc_probe(struct platform_device *pdev)
s3c_rtc_setfreq(&pdev->dev, 1); s3c_rtc_setfreq(&pdev->dev, 1);
ret = request_irq(s3c_rtc_alarmno, s3c_rtc_alarmirq,
IRQF_DISABLED, "s3c2410-rtc alarm", rtc);
if (ret) {
dev_err(&pdev->dev, "IRQ%d error %d\n", s3c_rtc_alarmno, ret);
goto err_alarm_irq;
}
ret = request_irq(s3c_rtc_tickno, s3c_rtc_tickirq,
IRQF_DISABLED, "s3c2410-rtc tick", rtc);
if (ret) {
dev_err(&pdev->dev, "IRQ%d error %d\n", s3c_rtc_tickno, ret);
free_irq(s3c_rtc_alarmno, rtc);
goto err_tick_irq;
}
clk_disable(rtc_clk); clk_disable(rtc_clk);
return 0; return 0;
err_tick_irq:
free_irq(s3c_rtc_alarmno, rtc);
err_alarm_irq:
platform_set_drvdata(pdev, NULL);
rtc_device_unregister(rtc);
err_nortc: err_nortc:
s3c_rtc_enable(pdev, 0); s3c_rtc_enable(pdev, 0);
clk_disable(rtc_clk); clk_disable(rtc_clk);

View File

@ -249,6 +249,7 @@ static int dasd_ioctl_reset_profile(struct dasd_block *block)
static int dasd_ioctl_read_profile(struct dasd_block *block, void __user *argp) static int dasd_ioctl_read_profile(struct dasd_block *block, void __user *argp)
{ {
struct dasd_profile_info_t *data; struct dasd_profile_info_t *data;
int rc = 0;
data = kmalloc(sizeof(*data), GFP_KERNEL); data = kmalloc(sizeof(*data), GFP_KERNEL);
if (!data) if (!data)
@ -279,11 +280,14 @@ static int dasd_ioctl_read_profile(struct dasd_block *block, void __user *argp)
spin_unlock_bh(&block->profile.lock); spin_unlock_bh(&block->profile.lock);
} else { } else {
spin_unlock_bh(&block->profile.lock); spin_unlock_bh(&block->profile.lock);
return -EIO; rc = -EIO;
goto out;
} }
if (copy_to_user(argp, data, sizeof(*data))) if (copy_to_user(argp, data, sizeof(*data)))
return -EFAULT; rc = -EFAULT;
return 0; out:
kfree(data);
return rc;
} }
#else #else
static int dasd_ioctl_reset_profile(struct dasd_block *block) static int dasd_ioctl_reset_profile(struct dasd_block *block)

View File

@ -383,8 +383,10 @@ static int sclp_attach_storage(u8 id)
switch (sccb->header.response_code) { switch (sccb->header.response_code) {
case 0x0020: case 0x0020:
set_bit(id, sclp_storage_ids); set_bit(id, sclp_storage_ids);
for (i = 0; i < sccb->assigned; i++) for (i = 0; i < sccb->assigned; i++) {
sclp_unassign_storage(sccb->entries[i] >> 16); if (sccb->entries[i])
sclp_unassign_storage(sccb->entries[i] >> 16);
}
break; break;
default: default:
rc = -EIO; rc = -EIO;

View File

@ -186,6 +186,9 @@ static unsigned char intc_irq_sense_table[IRQ_TYPE_SENSE_MASK + 1] = {
!defined(CONFIG_CPU_SUBTYPE_SH7709) !defined(CONFIG_CPU_SUBTYPE_SH7709)
[IRQ_TYPE_LEVEL_HIGH] = VALID(3), [IRQ_TYPE_LEVEL_HIGH] = VALID(3),
#endif #endif
#if defined(CONFIG_ARCH_SH7372)
[IRQ_TYPE_EDGE_BOTH] = VALID(4),
#endif
}; };
static int intc_set_type(struct irq_data *data, unsigned int type) static int intc_set_type(struct irq_data *data, unsigned int type)

View File

@ -16,6 +16,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/string.h>
#include <brcm_hw_ids.h> #include <brcm_hw_ids.h>
#include <chipcommon.h> #include <chipcommon.h>

View File

@ -18,6 +18,7 @@
#define _BRCM_TYPES_H_ #define _BRCM_TYPES_H_
#include <linux/types.h> #include <linux/types.h>
#include <linux/io.h>
/* Bus types */ /* Bus types */
#define SI_BUS 0 /* SOC Interconnect */ #define SI_BUS 0 /* SOC Interconnect */

View File

@ -26,6 +26,7 @@
**********************************************************************/ **********************************************************************/
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/interrupt.h>
#include <linux/phy.h> #include <linux/phy.h>
#include <linux/ratelimit.h> #include <linux/ratelimit.h>
#include <net/dst.h> #include <net/dst.h>

View File

@ -26,6 +26,7 @@
**********************************************************************/ **********************************************************************/
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/interrupt.h>
#include <net/dst.h> #include <net/dst.h>
#include <asm/octeon/octeon.h> #include <asm/octeon/octeon.h>

View File

@ -209,7 +209,6 @@ int dsp_clk_enable(enum dsp_clk_id clk_id)
break; break;
#ifdef CONFIG_OMAP_MCBSP #ifdef CONFIG_OMAP_MCBSP
case MCBSP_CLK: case MCBSP_CLK:
omap_mcbsp_set_io_type(MCBSP_ID(clk_id), OMAP_MCBSP_POLL_IO);
omap_mcbsp_request(MCBSP_ID(clk_id)); omap_mcbsp_request(MCBSP_ID(clk_id));
omap2_mcbsp_set_clks_src(MCBSP_ID(clk_id), MCBSP_CLKS_PAD_SRC); omap2_mcbsp_set_clks_src(MCBSP_ID(clk_id), MCBSP_CLKS_PAD_SRC);
break; break;

View File

@ -604,7 +604,7 @@ int tmem_get(struct tmem_pool *pool, struct tmem_oid *oidp, uint32_t index,
struct tmem_obj *obj; struct tmem_obj *obj;
void *pampd; void *pampd;
bool ephemeral = is_ephemeral(pool); bool ephemeral = is_ephemeral(pool);
uint32_t ret = -1; int ret = -1;
struct tmem_hashbucket *hb; struct tmem_hashbucket *hb;
bool free = (get_and_free == 1) || ((get_and_free == 0) && ephemeral); bool free = (get_and_free == 1) || ((get_and_free == 0) && ephemeral);
bool lock_held = false; bool lock_held = false;

View File

@ -1158,7 +1158,7 @@ static void *zcache_pampd_create(char *data, size_t size, bool raw, int eph,
size_t clen; size_t clen;
int ret; int ret;
unsigned long count; unsigned long count;
struct page *page = virt_to_page(data); struct page *page = (struct page *)(data);
struct zcache_client *cli = pool->client; struct zcache_client *cli = pool->client;
uint16_t client_id = get_client_id_from_client(cli); uint16_t client_id = get_client_id_from_client(cli);
unsigned long zv_mean_zsize; unsigned long zv_mean_zsize;
@ -1227,7 +1227,7 @@ static int zcache_pampd_get_data(char *data, size_t *bufsize, bool raw,
int ret = 0; int ret = 0;
BUG_ON(is_ephemeral(pool)); BUG_ON(is_ephemeral(pool));
zv_decompress(virt_to_page(data), pampd); zv_decompress((struct page *)(data), pampd);
return ret; return ret;
} }
@ -1539,7 +1539,7 @@ static int zcache_put_page(int cli_id, int pool_id, struct tmem_oid *oidp,
goto out; goto out;
if (!zcache_freeze && zcache_do_preload(pool) == 0) { if (!zcache_freeze && zcache_do_preload(pool) == 0) {
/* preload does preempt_disable on success */ /* preload does preempt_disable on success */
ret = tmem_put(pool, oidp, index, page_address(page), ret = tmem_put(pool, oidp, index, (char *)(page),
PAGE_SIZE, 0, is_ephemeral(pool)); PAGE_SIZE, 0, is_ephemeral(pool));
if (ret < 0) { if (ret < 0) {
if (is_ephemeral(pool)) if (is_ephemeral(pool))
@ -1572,7 +1572,7 @@ static int zcache_get_page(int cli_id, int pool_id, struct tmem_oid *oidp,
pool = zcache_get_pool_by_id(cli_id, pool_id); pool = zcache_get_pool_by_id(cli_id, pool_id);
if (likely(pool != NULL)) { if (likely(pool != NULL)) {
if (atomic_read(&pool->obj_count) > 0) if (atomic_read(&pool->obj_count) > 0)
ret = tmem_get(pool, oidp, index, page_address(page), ret = tmem_get(pool, oidp, index, (char *)(page),
&size, 0, is_ephemeral(pool)); &size, 0, is_ephemeral(pool));
zcache_put_pool(pool); zcache_put_pool(pool);
} }

View File

@ -2243,7 +2243,6 @@ static int iscsit_handle_snack(
case 0: case 0:
return iscsit_handle_recovery_datain_or_r2t(conn, buf, return iscsit_handle_recovery_datain_or_r2t(conn, buf,
hdr->itt, hdr->ttt, hdr->begrun, hdr->runlength); hdr->itt, hdr->ttt, hdr->begrun, hdr->runlength);
return 0;
case ISCSI_FLAG_SNACK_TYPE_STATUS: case ISCSI_FLAG_SNACK_TYPE_STATUS:
return iscsit_handle_status_snack(conn, hdr->itt, hdr->ttt, return iscsit_handle_status_snack(conn, hdr->itt, hdr->ttt,
hdr->begrun, hdr->runlength); hdr->begrun, hdr->runlength);

View File

@ -268,7 +268,7 @@ struct se_tpg_np *lio_target_call_addnptotpg(
ISCSI_TCP); ISCSI_TCP);
if (IS_ERR(tpg_np)) { if (IS_ERR(tpg_np)) {
iscsit_put_tpg(tpg); iscsit_put_tpg(tpg);
return ERR_PTR(PTR_ERR(tpg_np)); return ERR_CAST(tpg_np);
} }
pr_debug("LIO_Target_ConfigFS: addnptotpg done!\n"); pr_debug("LIO_Target_ConfigFS: addnptotpg done!\n");
@ -1285,7 +1285,7 @@ struct se_wwn *lio_target_call_coreaddtiqn(
tiqn = iscsit_add_tiqn((unsigned char *)name); tiqn = iscsit_add_tiqn((unsigned char *)name);
if (IS_ERR(tiqn)) if (IS_ERR(tiqn))
return ERR_PTR(PTR_ERR(tiqn)); return ERR_CAST(tiqn);
/* /*
* Setup struct iscsi_wwn_stat_grps for se_wwn->fabric_stat_group. * Setup struct iscsi_wwn_stat_grps for se_wwn->fabric_stat_group.
*/ */

View File

@ -834,7 +834,7 @@ static int iscsit_attach_ooo_cmdsn(
*/ */
list_for_each_entry(ooo_tmp, &sess->sess_ooo_cmdsn_list, list_for_each_entry(ooo_tmp, &sess->sess_ooo_cmdsn_list,
ooo_list) { ooo_list) {
while (ooo_tmp->cmdsn < ooo_cmdsn->cmdsn) if (ooo_tmp->cmdsn < ooo_cmdsn->cmdsn)
continue; continue;
list_add(&ooo_cmdsn->ooo_list, list_add(&ooo_cmdsn->ooo_list,

View File

@ -1013,19 +1013,9 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
ISCSI_LOGIN_STATUS_TARGET_ERROR); ISCSI_LOGIN_STATUS_TARGET_ERROR);
goto new_sess_out; goto new_sess_out;
} }
#if 0 snprintf(conn->login_ip, sizeof(conn->login_ip), "%pI6c",
if (!iscsi_ntop6((const unsigned char *) &sock_in6.sin6_addr.in6_u);
&sock_in6.sin6_addr.in6_u, conn->login_port = ntohs(sock_in6.sin6_port);
(char *)&conn->ipv6_login_ip[0],
IPV6_ADDRESS_SPACE)) {
pr_err("iscsi_ntop6() failed\n");
iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
ISCSI_LOGIN_STATUS_TARGET_ERROR);
goto new_sess_out;
}
#else
pr_debug("Skipping iscsi_ntop6()\n");
#endif
} else { } else {
memset(&sock_in, 0, sizeof(struct sockaddr_in)); memset(&sock_in, 0, sizeof(struct sockaddr_in));

View File

@ -545,13 +545,13 @@ int iscsi_copy_param_list(
struct iscsi_param_list *src_param_list, struct iscsi_param_list *src_param_list,
int leading) int leading)
{ {
struct iscsi_param *new_param = NULL, *param = NULL; struct iscsi_param *param = NULL;
struct iscsi_param *new_param = NULL;
struct iscsi_param_list *param_list = NULL; struct iscsi_param_list *param_list = NULL;
param_list = kzalloc(sizeof(struct iscsi_param_list), GFP_KERNEL); param_list = kzalloc(sizeof(struct iscsi_param_list), GFP_KERNEL);
if (!param_list) { if (!param_list) {
pr_err("Unable to allocate memory for" pr_err("Unable to allocate memory for struct iscsi_param_list.\n");
" struct iscsi_param_list.\n");
goto err_out; goto err_out;
} }
INIT_LIST_HEAD(&param_list->param_list); INIT_LIST_HEAD(&param_list->param_list);
@ -567,8 +567,17 @@ int iscsi_copy_param_list(
new_param = kzalloc(sizeof(struct iscsi_param), GFP_KERNEL); new_param = kzalloc(sizeof(struct iscsi_param), GFP_KERNEL);
if (!new_param) { if (!new_param) {
pr_err("Unable to allocate memory for" pr_err("Unable to allocate memory for struct iscsi_param.\n");
" struct iscsi_param.\n"); goto err_out;
}
new_param->name = kstrdup(param->name, GFP_KERNEL);
new_param->value = kstrdup(param->value, GFP_KERNEL);
if (!new_param->value || !new_param->name) {
kfree(new_param->value);
kfree(new_param->name);
kfree(new_param);
pr_err("Unable to allocate memory for parameter name/value.\n");
goto err_out; goto err_out;
} }
@ -580,32 +589,12 @@ int iscsi_copy_param_list(
new_param->use = param->use; new_param->use = param->use;
new_param->type_range = param->type_range; new_param->type_range = param->type_range;
new_param->name = kzalloc(strlen(param->name) + 1, GFP_KERNEL);
if (!new_param->name) {
pr_err("Unable to allocate memory for"
" parameter name.\n");
goto err_out;
}
new_param->value = kzalloc(strlen(param->value) + 1,
GFP_KERNEL);
if (!new_param->value) {
pr_err("Unable to allocate memory for"
" parameter value.\n");
goto err_out;
}
memcpy(new_param->name, param->name, strlen(param->name));
new_param->name[strlen(param->name)] = '\0';
memcpy(new_param->value, param->value, strlen(param->value));
new_param->value[strlen(param->value)] = '\0';
list_add_tail(&new_param->p_list, &param_list->param_list); list_add_tail(&new_param->p_list, &param_list->param_list);
} }
if (!list_empty(&param_list->param_list)) if (!list_empty(&param_list->param_list)) {
*dst_param_list = param_list; *dst_param_list = param_list;
else { } else {
pr_err("No parameters allocated.\n"); pr_err("No parameters allocated.\n");
goto err_out; goto err_out;
} }

Some files were not shown because too many files have changed in this diff Show More