Merge branch 'master' of ../netdev/
This commit is contained in:
commit
52b9aca7ae
|
@ -431,8 +431,7 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
|
|||
|
||||
void pm_runtime_irq_safe(struct device *dev);
|
||||
- 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
|
||||
with interrupts disabled
|
||||
callbacks to be invoked with interrupts off
|
||||
|
||||
void pm_runtime_mark_last_busy(struct device *dev);
|
||||
- set the power.last_busy field to the current time
|
||||
|
|
17
MAINTAINERS
17
MAINTAINERS
|
@ -1278,7 +1278,6 @@ F: drivers/input/misc/ati_remote2.c
|
|||
ATLX ETHERNET DRIVERS
|
||||
M: Jay Cliburn <jcliburn@gmail.com>
|
||||
M: Chris Snook <chris.snook@gmail.com>
|
||||
M: Jie Yang <jie.yang@atheros.com>
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://sourceforge.net/projects/atl1
|
||||
W: http://atl1.sourceforge.net
|
||||
|
@ -1574,7 +1573,6 @@ F: drivers/scsi/bfa/
|
|||
|
||||
BROCADE BNA 10 GIGABIT ETHERNET DRIVER
|
||||
M: Rasesh Mody <rmody@brocade.com>
|
||||
M: Debashis Dutt <ddutt@brocade.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/net/bna/
|
||||
|
@ -1758,7 +1756,6 @@ F: Documentation/zh_CN/
|
|||
|
||||
CISCO VIC ETHERNET NIC DRIVER
|
||||
M: Christian Benvenuti <benve@cisco.com>
|
||||
M: Vasanthy Kolluri <vkolluri@cisco.com>
|
||||
M: Roopa Prabhu <roprabhu@cisco.com>
|
||||
M: David Wang <dwang2@cisco.com>
|
||||
S: Supported
|
||||
|
@ -1883,7 +1880,7 @@ S: Maintained
|
|||
F: drivers/connector/
|
||||
|
||||
CONTROL GROUPS (CGROUPS)
|
||||
M: Paul Menage <menage@google.com>
|
||||
M: Paul Menage <paul@paulmenage.org>
|
||||
M: Li Zefan <lizf@cn.fujitsu.com>
|
||||
L: containers@lists.linux-foundation.org
|
||||
S: Maintained
|
||||
|
@ -1932,7 +1929,7 @@ S: Maintained
|
|||
F: tools/power/cpupower
|
||||
|
||||
CPUSETS
|
||||
M: Paul Menage <menage@google.com>
|
||||
M: Paul Menage <paul@paulmenage.org>
|
||||
W: http://www.bullopensource.org/cpuset/
|
||||
W: http://oss.sgi.com/projects/cpusets/
|
||||
S: Supported
|
||||
|
@ -2649,11 +2646,11 @@ F: drivers/net/wan/dlci.c
|
|||
F: drivers/net/wan/sdla.c
|
||||
|
||||
FRAMEBUFFER LAYER
|
||||
M: Paul Mundt <lethal@linux-sh.org>
|
||||
M: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
|
||||
L: linux-fbdev@vger.kernel.org
|
||||
W: http://linux-fbdev.sourceforge.net/
|
||||
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
|
||||
F: Documentation/fb/
|
||||
F: Documentation/devicetree/bindings/fb/
|
||||
|
@ -4404,7 +4401,8 @@ L: netfilter@vger.kernel.org
|
|||
L: coreteam@netfilter.org
|
||||
W: http://www.netfilter.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
|
||||
F: include/linux/netfilter*
|
||||
F: include/linux/netfilter/
|
||||
|
@ -5532,6 +5530,7 @@ F: include/media/*7146*
|
|||
|
||||
SAMSUNG AUDIO (ASoC) DRIVERS
|
||||
M: Jassi Brar <jassisinghbrar@gmail.com>
|
||||
M: Sangbeom Kim <sbkim73@samsung.com>
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
S: Supported
|
||||
F: sound/soc/samsung
|
||||
|
@ -7087,7 +7086,7 @@ S: Supported
|
|||
F: drivers/mmc/host/vub300.c
|
||||
|
||||
W1 DALLAS'S 1-WIRE BUS
|
||||
M: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
|
||||
M: Evgeniy Polyakov <zbr@ioremap.net>
|
||||
S: Maintained
|
||||
F: Documentation/w1/
|
||||
F: drivers/w1/
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 3
|
||||
PATCHLEVEL = 1
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc3
|
||||
EXTRAVERSION = -rc4
|
||||
NAME = "Divemaster Edition"
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -27,13 +27,4 @@
|
|||
#define UAC_NOFIX 2
|
||||
#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 */
|
||||
|
|
|
@ -74,9 +74,9 @@ register struct thread_info *__current_thread_info __asm__("$8");
|
|||
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
|
||||
#define TIF_POLLING_NRFLAG 8 /* poll_idle is polling NEED_RESCHED */
|
||||
#define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */
|
||||
#define TIF_UAC_NOPRINT 10 /* see sysinfo.h */
|
||||
#define TIF_UAC_NOFIX 11
|
||||
#define TIF_UAC_SIGBUS 12
|
||||
#define TIF_UAC_NOPRINT 10 /* ! Preserve sequence of following */
|
||||
#define TIF_UAC_NOFIX 11 /* ! flags as they match */
|
||||
#define TIF_UAC_SIGBUS 12 /* ! userspace part of 'osf_sysinfo' */
|
||||
#define TIF_MEMDIE 13 /* is terminating due to OOM killer */
|
||||
#define TIF_RESTORE_SIGMASK 14 /* restore signal mask in do_signal */
|
||||
#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 \
|
||||
| _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 | \
|
||||
1 << TIF_UAC_SIGBUS)
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include <asm/uaccess.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/sysinfo.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/hwrpb.h>
|
||||
#include <asm/processor.h>
|
||||
|
||||
|
@ -633,9 +634,10 @@ SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer,
|
|||
case GSI_UACPROC:
|
||||
if (nbytes < sizeof(unsigned int))
|
||||
return -EINVAL;
|
||||
w = (current_thread_info()->flags >> UAC_SHIFT) & UAC_BITMASK;
|
||||
if (put_user(w, (unsigned int __user *)buffer))
|
||||
return -EFAULT;
|
||||
w = (current_thread_info()->flags >> ALPHA_UAC_SHIFT) &
|
||||
UAC_BITMASK;
|
||||
if (put_user(w, (unsigned int __user *)buffer))
|
||||
return -EFAULT;
|
||||
return 1;
|
||||
|
||||
case GSI_PROC_TYPE:
|
||||
|
@ -756,8 +758,8 @@ SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer,
|
|||
case SSIN_UACPROC:
|
||||
again:
|
||||
old = current_thread_info()->flags;
|
||||
new = old & ~(UAC_BITMASK << UAC_SHIFT);
|
||||
new = new | (w & UAC_BITMASK) << UAC_SHIFT;
|
||||
new = old & ~(UAC_BITMASK << ALPHA_UAC_SHIFT);
|
||||
new = new | (w & UAC_BITMASK) << ALPHA_UAC_SHIFT;
|
||||
if (cmpxchg(¤t_thread_info()->flags,
|
||||
old, new) != old)
|
||||
goto again;
|
||||
|
|
|
@ -360,7 +360,7 @@ sys_call_table:
|
|||
.quad sys_newuname
|
||||
.quad sys_nanosleep /* 340 */
|
||||
.quad sys_mremap
|
||||
.quad sys_nfsservctl
|
||||
.quad sys_ni_syscall /* old nfsservctl */
|
||||
.quad sys_setresuid
|
||||
.quad sys_getresuid
|
||||
.quad sys_pciconfig_read /* 345 */
|
||||
|
|
|
@ -82,7 +82,7 @@ asmlinkage void mmc_loader(unsigned char *buf, unsigned long len)
|
|||
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ asmlinkage void mmc_loader(unsigned short *buf, unsigned long len)
|
|||
goto err;
|
||||
|
||||
/* 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);
|
||||
|
||||
|
|
|
@ -178,7 +178,7 @@
|
|||
CALL(sys_ni_syscall) /* vm86 */
|
||||
CALL(sys_ni_syscall) /* was sys_query_module */
|
||||
CALL(sys_poll)
|
||||
CALL(sys_nfsservctl)
|
||||
CALL(sys_ni_syscall) /* was nfsservctl */
|
||||
/* 170 */ CALL(sys_setresgid16)
|
||||
CALL(sys_getresgid16)
|
||||
CALL(sys_prctl)
|
||||
|
|
|
@ -341,6 +341,7 @@ static struct platform_device mipidsi0_device = {
|
|||
static struct sh_mobile_sdhi_info sdhi0_info = {
|
||||
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
|
||||
.dma_slave_rx = SHDMA_SLAVE_SDHI0_RX,
|
||||
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
|
||||
.tmio_caps = MMC_CAP_SD_HIGHSPEED,
|
||||
.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 = {
|
||||
.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_ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
|
||||
.set_pwr = ag5evm_sdhi1_set_pwr,
|
||||
|
|
|
@ -1412,6 +1412,7 @@ static void __init ap4evb_init(void)
|
|||
fsi_init_pm_clock();
|
||||
sh7372_pm_init();
|
||||
pm_clk_add(&fsi_device.dev, "spu2");
|
||||
pm_clk_add(&lcdc1_device.dev, "hdmi");
|
||||
}
|
||||
|
||||
static void __init ap4evb_timer_init(void)
|
||||
|
|
|
@ -641,6 +641,8 @@ static struct usbhs_private usbhs0_private = {
|
|||
},
|
||||
.driver_param = {
|
||||
.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,
|
||||
.pipe_type = 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();
|
||||
sh7372_pm_init();
|
||||
pm_clk_add(&fsi_device.dev, "spu2");
|
||||
pm_clk_add(&hdmi_lcdc_device.dev, "hdmi");
|
||||
}
|
||||
|
||||
static void __init mackerel_timer_init(void)
|
||||
|
|
|
@ -503,16 +503,17 @@ static struct clk *late_main_clks[] = {
|
|||
&sh7372_fsidivb_clk,
|
||||
};
|
||||
|
||||
enum { MSTP001,
|
||||
enum { MSTP001, MSTP000,
|
||||
MSTP131, MSTP130,
|
||||
MSTP129, MSTP128, MSTP127, MSTP126, MSTP125,
|
||||
MSTP118, MSTP117, MSTP116, MSTP113,
|
||||
MSTP106, MSTP101, MSTP100,
|
||||
MSTP223,
|
||||
MSTP218, MSTP217, MSTP216,
|
||||
MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
|
||||
MSTP329, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312,
|
||||
MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP406, MSTP403,
|
||||
MSTP218, MSTP217, MSTP216, MSTP214, MSTP208, MSTP207,
|
||||
MSTP206, MSTP205, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
|
||||
MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312,
|
||||
MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP407, MSTP406,
|
||||
MSTP405, MSTP404, MSTP403, MSTP400,
|
||||
MSTP_NR };
|
||||
|
||||
#define MSTP(_parent, _reg, _bit, _flags) \
|
||||
|
@ -520,6 +521,7 @@ enum { MSTP001,
|
|||
|
||||
static struct clk mstp_clks[MSTP_NR] = {
|
||||
[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 */
|
||||
[MSTP130] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 30, 0), /* VEU2 */
|
||||
[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 */
|
||||
[MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */
|
||||
[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 */
|
||||
[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 */
|
||||
[MSTP203] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 3, 0), /* SCIFA1 */
|
||||
[MSTP202] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 2, 0), /* SCIFA2 */
|
||||
[MSTP201] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 1, 0), /* SCIFA3 */
|
||||
[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 */
|
||||
[MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */
|
||||
[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 */
|
||||
[MSTP411] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 11, 0), /* IIC3 */
|
||||
[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 */
|
||||
[MSTP405] = MSTP(&r_clk, SMSTPCR4, 5, 0), /* CMT4 */
|
||||
[MSTP404] = MSTP(&r_clk, SMSTPCR4, 4, 0), /* CMT3 */
|
||||
[MSTP403] = MSTP(&r_clk, SMSTPCR4, 3, 0), /* KEYSC */
|
||||
[MSTP400] = MSTP(&r_clk, SMSTPCR4, 0, 0), /* CMT2 */
|
||||
};
|
||||
|
||||
static struct clk_lookup lookups[] = {
|
||||
|
@ -609,6 +617,7 @@ static struct clk_lookup lookups[] = {
|
|||
|
||||
/* MSTP32 clocks */
|
||||
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.3", &mstp_clks[MSTP130]), /* VEU2 */
|
||||
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.1", &mstp_clks[MSTP217]), /* DMAC2 */
|
||||
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.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.1", &mstp_clks[MSTP203]), /* SCIFA1 */
|
||||
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.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("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* IIC1 */
|
||||
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("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* IIC3 */
|
||||
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_udc.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_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("icka", "sh_fsi2", &div6_reparent_clks[DIV6_FSIA]),
|
||||
CLKDEV_ICK_ID("ickb", "sh_fsi2", &div6_reparent_clks[DIV6_FSIB]),
|
||||
|
|
|
@ -365,7 +365,7 @@ void __init sh73a0_clock_init(void)
|
|||
__raw_writel(0x108, SD2CKCR);
|
||||
|
||||
/* detect main clock parent */
|
||||
switch ((__raw_readl(CKSCR) >> 24) & 0x03) {
|
||||
switch ((__raw_readl(CKSCR) >> 28) & 0x03) {
|
||||
case 0:
|
||||
main_clk.parent = &sh73a0_extal1_clk;
|
||||
break;
|
||||
|
|
|
@ -459,6 +459,10 @@ enum {
|
|||
SHDMA_SLAVE_SDHI2_TX,
|
||||
SHDMA_SLAVE_MMCIF_RX,
|
||||
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;
|
||||
|
|
|
@ -379,7 +379,7 @@ enum {
|
|||
/* BBIF2 */
|
||||
VPU,
|
||||
TSIF1,
|
||||
_3DG_SGX530,
|
||||
/* 3DG */
|
||||
_2DDMAC,
|
||||
IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2,
|
||||
IPMMU_IPMMUR, IPMMU_IPMMUR2,
|
||||
|
@ -436,7 +436,7 @@ static struct intc_vect intcs_vectors[] = {
|
|||
/* BBIF2 */
|
||||
INTCS_VECT(VPU, 0x980),
|
||||
INTCS_VECT(TSIF1, 0x9a0),
|
||||
INTCS_VECT(_3DG_SGX530, 0x9e0),
|
||||
/* 3DG */
|
||||
INTCS_VECT(_2DDMAC, 0xa00),
|
||||
INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0),
|
||||
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 } },
|
||||
{ 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */
|
||||
{ 0, 0, MSIOF, 0,
|
||||
_3DG_SGX530, 0, 0, 0 } },
|
||||
0, 0, 0, 0 } },
|
||||
{ 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */
|
||||
{ 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0,
|
||||
0, 0, 0, 0 } },
|
||||
|
@ -561,7 +561,6 @@ static struct intc_prio_reg intcs_prio_registers[] = {
|
|||
TMU_TUNI2, TSIF1 } },
|
||||
{ 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, 0, VEU, BEU } },
|
||||
{ 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 } },
|
||||
{ 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, 0, 0 } },
|
||||
{ 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } },
|
||||
|
|
|
@ -169,35 +169,35 @@ static struct platform_device scif6_device = {
|
|||
};
|
||||
|
||||
/* CMT */
|
||||
static struct sh_timer_config cmt10_platform_data = {
|
||||
.name = "CMT10",
|
||||
.channel_offset = 0x10,
|
||||
.timer_bit = 0,
|
||||
static struct sh_timer_config cmt2_platform_data = {
|
||||
.name = "CMT2",
|
||||
.channel_offset = 0x40,
|
||||
.timer_bit = 5,
|
||||
.clockevent_rating = 125,
|
||||
.clocksource_rating = 125,
|
||||
};
|
||||
|
||||
static struct resource cmt10_resources[] = {
|
||||
static struct resource cmt2_resources[] = {
|
||||
[0] = {
|
||||
.name = "CMT10",
|
||||
.start = 0xe6138010,
|
||||
.end = 0xe613801b,
|
||||
.name = "CMT2",
|
||||
.start = 0xe6130040,
|
||||
.end = 0xe613004b,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = evt2irq(0x0b00), /* CMT1_CMT10 */
|
||||
.start = evt2irq(0x0b80), /* CMT2 */
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device cmt10_device = {
|
||||
static struct platform_device cmt2_device = {
|
||||
.name = "sh_cmt",
|
||||
.id = 10,
|
||||
.id = 2,
|
||||
.dev = {
|
||||
.platform_data = &cmt10_platform_data,
|
||||
.platform_data = &cmt2_platform_data,
|
||||
},
|
||||
.resource = cmt10_resources,
|
||||
.num_resources = ARRAY_SIZE(cmt10_resources),
|
||||
.resource = cmt2_resources,
|
||||
.num_resources = ARRAY_SIZE(cmt2_resources),
|
||||
};
|
||||
|
||||
/* 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 */
|
||||
static struct uio_info vpu_platform_data = {
|
||||
.name = "VPU5HG",
|
||||
|
@ -818,7 +962,7 @@ static struct platform_device *sh7372_early_devices[] __initdata = {
|
|||
&scif4_device,
|
||||
&scif5_device,
|
||||
&scif6_device,
|
||||
&cmt10_device,
|
||||
&cmt2_device,
|
||||
&tmu00_device,
|
||||
&tmu01_device,
|
||||
};
|
||||
|
@ -829,6 +973,8 @@ static struct platform_device *sh7372_late_devices[] __initdata = {
|
|||
&dma0_device,
|
||||
&dma1_device,
|
||||
&dma2_device,
|
||||
&usb_dma0_device,
|
||||
&usb_dma1_device,
|
||||
&vpu_device,
|
||||
&veu0_device,
|
||||
&veu1_device,
|
||||
|
|
|
@ -622,7 +622,8 @@ static struct dev_pm_domain omap_device_pm_domain = {
|
|||
SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,
|
||||
_od_runtime_idle)
|
||||
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,
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ sys_call_table:
|
|||
.long sys_sched_rr_get_interval
|
||||
.long sys_nanosleep
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl /* 145 */
|
||||
.long sys_ni_syscall /* 145 was nfsservctl */
|
||||
.long sys_setresgid
|
||||
.long sys_getresgid
|
||||
.long sys_prctl
|
||||
|
|
|
@ -1543,7 +1543,7 @@ ENTRY(_sys_call_table)
|
|||
.long _sys_ni_syscall /* for vm86 */
|
||||
.long _sys_ni_syscall /* old "query_module" */
|
||||
.long _sys_ni_syscall /* sys_poll */
|
||||
.long _sys_nfsservctl
|
||||
.long _sys_ni_syscall /* old nfsservctl */
|
||||
.long _sys_setresgid /* setresgid16 */ /* 170 */
|
||||
.long _sys_getresgid /* getresgid16 */
|
||||
.long _sys_prctl
|
||||
|
|
|
@ -771,7 +771,7 @@ sys_call_table:
|
|||
.long sys_ni_syscall /* sys_vm86 */
|
||||
.long sys_ni_syscall /* Old sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* old nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -714,7 +714,7 @@ sys_call_table:
|
|||
.long sys_ni_syscall /* sys_vm86 */
|
||||
.long sys_ni_syscall /* Old sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* Old nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -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 */
|
|
@ -1358,7 +1358,7 @@ sys_call_table:
|
|||
.long sys_ni_syscall /* for vm86 */
|
||||
.long sys_ni_syscall /* Old sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* Old nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -183,7 +183,7 @@ SYMBOL_NAME_LABEL(sys_call_table)
|
|||
.long SYMBOL_NAME(sys_ni_syscall) /* for vm86 */
|
||||
.long SYMBOL_NAME(sys_ni_syscall) /* sys_query_module */
|
||||
.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_getresgid16)
|
||||
.long SYMBOL_NAME(sys_prctl)
|
||||
|
|
|
@ -1614,7 +1614,7 @@ sys_call_table:
|
|||
data8 sys_sched_get_priority_min
|
||||
data8 sys_sched_rr_get_interval
|
||||
data8 sys_nanosleep
|
||||
data8 sys_nfsservctl
|
||||
data8 sys_ni_syscall // old nfsservctl
|
||||
data8 sys_prctl // 1170
|
||||
data8 sys_getpagesize
|
||||
data8 sys_mmap2
|
||||
|
|
|
@ -168,7 +168,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_tas /* vm86 syscall holder */
|
||||
.long sys_ni_syscall /* query_module syscall holder */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* was nfsservctl */
|
||||
.long sys_setresgid /* 170 */
|
||||
.long sys_getresgid
|
||||
.long sys_prctl
|
||||
|
|
|
@ -189,7 +189,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_getpagesize
|
||||
.long sys_ni_syscall /* old "query_module" */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* old nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -173,7 +173,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_ni_syscall /* sys_vm86 */
|
||||
.long sys_ni_syscall /* Old sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* old nfsservctl */
|
||||
.long sys_setresgid /* 170 */
|
||||
.long sys_getresgid
|
||||
.long sys_prctl
|
||||
|
|
|
@ -424,7 +424,7 @@ einval: li v0, -ENOSYS
|
|||
sys sys_getresuid 3
|
||||
sys sys_ni_syscall 0 /* was sys_query_module */
|
||||
sys sys_poll 3
|
||||
sys sys_nfsservctl 3
|
||||
sys sys_ni_syscall 0 /* was nfsservctl */
|
||||
sys sys_setresgid 3 /* 4190 */
|
||||
sys sys_getresgid 3
|
||||
sys sys_prctl 5
|
||||
|
|
|
@ -299,7 +299,7 @@ sys_call_table:
|
|||
PTR sys_ni_syscall /* 5170, was get_kernel_syms */
|
||||
PTR sys_ni_syscall /* was query_module */
|
||||
PTR sys_quotactl
|
||||
PTR sys_nfsservctl
|
||||
PTR sys_ni_syscall /* was nfsservctl */
|
||||
PTR sys_ni_syscall /* res. for getpmsg */
|
||||
PTR sys_ni_syscall /* 5175 for putpmsg */
|
||||
PTR sys_ni_syscall /* res. for afs_syscall */
|
||||
|
|
|
@ -294,7 +294,7 @@ EXPORT(sysn32_call_table)
|
|||
PTR sys_ni_syscall /* 6170, was get_kernel_syms */
|
||||
PTR sys_ni_syscall /* was query_module */
|
||||
PTR sys_quotactl
|
||||
PTR compat_sys_nfsservctl
|
||||
PTR sys_ni_syscall /* was nfsservctl */
|
||||
PTR sys_ni_syscall /* res. for getpmsg */
|
||||
PTR sys_ni_syscall /* 6175 for putpmsg */
|
||||
PTR sys_ni_syscall /* res. for afs_syscall */
|
||||
|
|
|
@ -392,7 +392,7 @@ sys_call_table:
|
|||
PTR sys_getresuid
|
||||
PTR sys_ni_syscall /* was query_module */
|
||||
PTR sys_poll
|
||||
PTR compat_sys_nfsservctl
|
||||
PTR sys_ni_syscall /* was nfsservctl */
|
||||
PTR sys_setresgid /* 4190 */
|
||||
PTR sys_getresgid
|
||||
PTR sys_prctl
|
||||
|
|
|
@ -589,7 +589,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_ni_syscall /* vm86 */
|
||||
.long sys_ni_syscall /* Old sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* was nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
#define ODSR_CLEAR 0x1c00
|
||||
#define LTLEECSR_ENABLE_ALL 0xFFC000FC
|
||||
#define ESCSR_CLEAR 0x07120204
|
||||
#define IECSR_CLEAR 0x80000000
|
||||
|
||||
#define RIO_PORT1_EDCSR 0x0640
|
||||
#define RIO_PORT2_EDCSR 0x0680
|
||||
|
@ -1089,11 +1090,11 @@ static void port_error_handler(struct rio_mport *port, int offset)
|
|||
|
||||
if (offset == 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);
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -665,12 +665,6 @@ ENTRY(sys32_poll_wrapper)
|
|||
lgfr %r4,%r4 # long
|
||||
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)
|
||||
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
|
||||
llgfr %r3,%r3 # __kernel_old_gid_emu31_t
|
||||
|
|
|
@ -396,17 +396,19 @@ static __init void detect_machine_facilities(void)
|
|||
static __init void rescue_initrd(void)
|
||||
{
|
||||
#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
|
||||
* within the bss section. So we don't overwrite it when the bss
|
||||
* section gets cleared.
|
||||
* Just like in case of IPL from VM reader we make sure there is a
|
||||
* gap of 4MB between end of kernel and start of initrd.
|
||||
* That way we can also be sure that saving an NSS will succeed,
|
||||
* which however only requires different segments.
|
||||
*/
|
||||
if (!INITRD_START || !INITRD_SIZE)
|
||||
return;
|
||||
if (INITRD_START >= (unsigned long) __bss_stop)
|
||||
if (INITRD_START >= min_initrd_addr)
|
||||
return;
|
||||
memmove(__bss_stop, (void *) INITRD_START, INITRD_SIZE);
|
||||
INITRD_START = (unsigned long) __bss_stop;
|
||||
memmove((void *) min_initrd_addr, (void *) INITRD_START, INITRD_SIZE);
|
||||
INITRD_START = min_initrd_addr;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -1220,7 +1220,7 @@ static int __init reipl_fcp_init(void)
|
|||
/* sysfs: create fcp kset for mixing attr group and bin attrs */
|
||||
reipl_fcp_kset = kset_create_and_add(IPL_FCP_STR, NULL,
|
||||
&reipl_kset->kobj);
|
||||
if (!reipl_kset) {
|
||||
if (!reipl_fcp_kset) {
|
||||
free_page((unsigned long) reipl_block_fcp);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@ -1618,7 +1618,8 @@ static struct shutdown_action vmcmd_action = {SHUTDOWN_ACTION_VMCMD_STR,
|
|||
|
||||
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));
|
||||
while (sigp(smp_processor_id(), sigp_stop) == sigp_busy)
|
||||
cpu_relax();
|
||||
|
@ -1717,7 +1718,7 @@ static void do_panic(void)
|
|||
/* on restart */
|
||||
|
||||
static struct shutdown_trigger on_restart_trigger = {ON_RESTART_STR,
|
||||
&reipl_action};
|
||||
&stop_action};
|
||||
|
||||
static ssize_t on_restart_show(struct kobject *kobj,
|
||||
struct kobj_attribute *attr, char *page)
|
||||
|
|
|
@ -177,7 +177,7 @@ SYSCALL(sys_getresuid16,sys_ni_syscall,sys32_getresuid16_wrapper) /* 165 old get
|
|||
NI_SYSCALL /* for vm86 */
|
||||
NI_SYSCALL /* old sys_query_module */
|
||||
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_getresgid16,sys_ni_syscall,sys32_getresgid16_wrapper) /* old getresgid16 syscall */
|
||||
SYSCALL(sys_prctl,sys_prctl,sys32_prctl_wrapper)
|
||||
|
|
|
@ -123,7 +123,7 @@ static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs,
|
|||
struct perf_event;
|
||||
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);
|
||||
|
||||
#define task_pt_regs(task) \
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/serial_sci.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/sh_timer.h>
|
||||
#include <linux/sh_dma.h>
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#include <linux/atomic.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
static void (*pm_idle)(void);
|
||||
void (*pm_idle)(void);
|
||||
|
||||
static int hlt_counter;
|
||||
|
||||
|
|
|
@ -185,7 +185,7 @@ ENTRY(sys_call_table)
|
|||
.long sys_ni_syscall /* vm86 */
|
||||
.long sys_ni_syscall /* old "query_module" */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* was nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -189,7 +189,7 @@ sys_call_table:
|
|||
.long sys_ni_syscall /* vm86 */
|
||||
.long sys_ni_syscall /* old "query_module" */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* was nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -316,6 +316,35 @@ static int handle_unaligned_ins(insn_size_t instruction, struct pt_regs *regs,
|
|||
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;
|
||||
|
||||
|
@ -466,6 +495,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
|
|||
case 0x0500: /* mov.w @(disp,Rm),R0 */
|
||||
goto simple;
|
||||
case 0x0B00: /* bf lab - no delayslot*/
|
||||
ret = 0;
|
||||
break;
|
||||
case 0x0F00: /* bf/s lab */
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
|
@ -479,6 +509,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
|
|||
}
|
||||
break;
|
||||
case 0x0900: /* bt lab - no delayslot */
|
||||
ret = 0;
|
||||
break;
|
||||
case 0x0D00: /* bt/s lab */
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
|
@ -494,6 +525,9 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs,
|
|||
}
|
||||
break;
|
||||
|
||||
case 0x9000: /* mov.w @(disp,Rm),Rn */
|
||||
goto simple;
|
||||
|
||||
case 0xA000: /* bra label */
|
||||
ret = handle_delayslot(regs, instruction, ma);
|
||||
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);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xD000: /* mov.l @(disp,Rm),Rn */
|
||||
goto simple;
|
||||
}
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ BTFIXUPDEF_CALL(void, set_irq_udt, int)
|
|||
#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 */
|
||||
#define SUN4D_IPI_IRQ 14
|
||||
#define SUN4D_IPI_IRQ 13
|
||||
|
||||
extern void sun4d_ipi_interrupt(void);
|
||||
|
||||
|
|
|
@ -81,7 +81,6 @@ SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4)
|
|||
SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5)
|
||||
SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1)
|
||||
SIGN1(sys32_mlockall, sys_mlockall, %o0)
|
||||
SIGN1(sys32_nfsservctl, compat_sys_nfsservctl, %o0)
|
||||
SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1)
|
||||
SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1)
|
||||
SIGN1(sys32_io_submit, compat_sys_io_submit, %o1)
|
||||
|
|
|
@ -67,7 +67,7 @@ sys_call_table:
|
|||
/*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
|
||||
/*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
|
||||
/*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
|
||||
|
|
|
@ -68,7 +68,7 @@ sys_call_table32:
|
|||
.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
|
||||
.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
|
||||
/*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
|
||||
|
@ -145,7 +145,7 @@ sys_call_table:
|
|||
.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
|
||||
.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
|
||||
/*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
|
||||
|
|
|
@ -672,7 +672,7 @@ ia32_sys_call_table:
|
|||
.quad sys32_vm86_warning /* vm86 */
|
||||
.quad quiet_ni_syscall /* query_module */
|
||||
.quad sys_poll
|
||||
.quad compat_sys_nfsservctl
|
||||
.quad quiet_ni_syscall /* old nfsservctl */
|
||||
.quad sys_setresgid16 /* 170 */
|
||||
.quad sys_getresgid16
|
||||
.quad sys_prctl
|
||||
|
|
|
@ -414,7 +414,7 @@ __SYSCALL(__NR_query_module, sys_ni_syscall)
|
|||
__SYSCALL(__NR_quotactl, sys_quotactl)
|
||||
|
||||
#define __NR_nfsservctl 180
|
||||
__SYSCALL(__NR_nfsservctl, sys_nfsservctl)
|
||||
__SYSCALL(__NR_nfsservctl, sys_ni_syscall)
|
||||
|
||||
/* reserved for LiS/STREAMS */
|
||||
#define __NR_getpmsg 181
|
||||
|
|
|
@ -149,7 +149,6 @@ struct set_mtrr_data {
|
|||
*/
|
||||
static int mtrr_rendezvous_handler(void *info)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
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())) {
|
||||
mtrr_if->set_all();
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
#include <asm/ftrace.h>
|
||||
#include <asm/irq_vectors.h>
|
||||
#include <asm/cpufeature.h>
|
||||
#include <asm/alternative-asm.h>
|
||||
|
||||
/* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
|
||||
#include <linux/elf-em.h>
|
||||
|
@ -873,12 +874,7 @@ ENTRY(simd_coprocessor_error)
|
|||
661: pushl_cfi $do_general_protection
|
||||
662:
|
||||
.section .altinstructions,"a"
|
||||
.balign 4
|
||||
.long 661b
|
||||
.long 663f
|
||||
.word X86_FEATURE_XMM
|
||||
.byte 662b-661b
|
||||
.byte 664f-663f
|
||||
altinstruction_entry 661b, 663f, X86_FEATURE_XMM, 662b-661b, 664f-663f
|
||||
.previous
|
||||
.section .altinstr_replacement,"ax"
|
||||
663: pushl $do_simd_coprocessor_error
|
||||
|
|
|
@ -168,7 +168,7 @@ ENTRY(sys_call_table)
|
|||
.long ptregs_vm86
|
||||
.long sys_ni_syscall /* Old sys_query_module */
|
||||
.long sys_poll
|
||||
.long sys_nfsservctl
|
||||
.long sys_ni_syscall /* Old nfsservctl */
|
||||
.long sys_setresgid16 /* 170 */
|
||||
.long sys_getresgid16
|
||||
.long sys_prctl
|
||||
|
|
|
@ -689,7 +689,9 @@ static int __init sfi_parse_devs(struct sfi_table_header *table)
|
|||
irq_attr.trigger = 1;
|
||||
irq_attr.polarity = 1;
|
||||
io_apic_set_pci_routing(NULL, pentry->irq, &irq_attr);
|
||||
}
|
||||
} else
|
||||
pentry->irq = 0; /* No irq */
|
||||
|
||||
switch (pentry->type) {
|
||||
case SFI_DEV_TYPE_IPC:
|
||||
/* ID as IRQ is a hack that will go away */
|
||||
|
|
|
@ -455,7 +455,7 @@ __SYSCALL(203, sys_reboot, 3)
|
|||
#define __NR_quotactl 204
|
||||
__SYSCALL(204, sys_quotactl, 4)
|
||||
#define __NR_nfsservctl 205
|
||||
__SYSCALL(205, sys_nfsservctl, 3)
|
||||
__SYSCALL(205, sys_ni_syscall, 0)
|
||||
#define __NR__sysctl 206
|
||||
__SYSCALL(206, sys_sysctl, 1)
|
||||
#define __NR_bdflush 207
|
||||
|
|
|
@ -397,6 +397,7 @@ static int remove_nodes(struct device *dev,
|
|||
|
||||
static int release_nodes(struct device *dev, struct list_head *first,
|
||||
struct list_head *end, unsigned long flags)
|
||||
__releases(&dev->devres_lock)
|
||||
{
|
||||
LIST_HEAD(todo);
|
||||
int cnt;
|
||||
|
|
|
@ -376,7 +376,7 @@ int devtmpfs_mount(const char *mntdir)
|
|||
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)
|
||||
{
|
||||
|
|
|
@ -521,11 +521,6 @@ static int _request_firmware(const struct firmware **firmware_p,
|
|||
if (!firmware_p)
|
||||
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);
|
||||
if (!firmware) {
|
||||
dev_err(device, "%s: kmalloc(struct firmware) failed\n",
|
||||
|
@ -539,6 +534,12 @@ static int _request_firmware(const struct firmware **firmware_p,
|
|||
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)
|
||||
dev_dbg(device, "firmware: requesting %s\n", name);
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ EXPORT_SYMBOL_GPL(platform_bus);
|
|||
|
||||
/**
|
||||
* 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
|
||||
* be setup before the platform_notifier is called. So if a user needs to
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
struct pm_clk_data {
|
||||
struct list_head clock_list;
|
||||
struct mutex lock;
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
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);
|
||||
mutex_unlock(&pcd->lock);
|
||||
spin_unlock_irq(&pcd->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -83,8 +83,8 @@ int pm_clk_add(struct device *dev, const char *con_id)
|
|||
* __pm_clk_remove - Destroy PM clock entry.
|
||||
* @ce: PM clock entry to destroy.
|
||||
*
|
||||
* This routine must be called under the mutex protecting the PM list of clocks
|
||||
* corresponding the the @ce's device.
|
||||
* This routine must be called under the spinlock protecting the PM list of
|
||||
* clocks corresponding the the @ce's device.
|
||||
*/
|
||||
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)
|
||||
return;
|
||||
|
||||
mutex_lock(&pcd->lock);
|
||||
spin_lock_irq(&pcd->lock);
|
||||
|
||||
list_for_each_entry(ce, &pcd->clock_list, node) {
|
||||
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);
|
||||
mutex_init(&pcd->lock);
|
||||
spin_lock_init(&pcd->lock);
|
||||
dev->power.subsys_data = pcd;
|
||||
return 0;
|
||||
}
|
||||
|
@ -181,12 +181,12 @@ void pm_clk_destroy(struct device *dev)
|
|||
|
||||
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)
|
||||
__pm_clk_remove(ce);
|
||||
|
||||
mutex_unlock(&pcd->lock);
|
||||
spin_unlock_irq(&pcd->lock);
|
||||
|
||||
kfree(pcd);
|
||||
}
|
||||
|
@ -220,13 +220,14 @@ int pm_clk_suspend(struct device *dev)
|
|||
{
|
||||
struct pm_clk_data *pcd = __to_pcd(dev);
|
||||
struct pm_clock_entry *ce;
|
||||
unsigned long flags;
|
||||
|
||||
dev_dbg(dev, "%s()\n", __func__);
|
||||
|
||||
if (!pcd)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&pcd->lock);
|
||||
spin_lock_irqsave(&pcd->lock, flags);
|
||||
|
||||
list_for_each_entry_reverse(ce, &pcd->clock_list, node) {
|
||||
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;
|
||||
}
|
||||
|
@ -251,13 +252,14 @@ int pm_clk_resume(struct device *dev)
|
|||
{
|
||||
struct pm_clk_data *pcd = __to_pcd(dev);
|
||||
struct pm_clock_entry *ce;
|
||||
unsigned long flags;
|
||||
|
||||
dev_dbg(dev, "%s()\n", __func__);
|
||||
|
||||
if (!pcd)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&pcd->lock);
|
||||
spin_lock_irqsave(&pcd->lock, flags);
|
||||
|
||||
list_for_each_entry(ce, &pcd->clock_list, node) {
|
||||
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;
|
||||
}
|
||||
|
@ -344,6 +346,7 @@ int pm_clk_suspend(struct device *dev)
|
|||
{
|
||||
struct pm_clk_data *pcd = __to_pcd(dev);
|
||||
struct pm_clock_entry *ce;
|
||||
unsigned long flags;
|
||||
|
||||
dev_dbg(dev, "%s()\n", __func__);
|
||||
|
||||
|
@ -351,12 +354,12 @@ int pm_clk_suspend(struct device *dev)
|
|||
if (!pcd || !dev->driver)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&pcd->lock);
|
||||
spin_lock_irqsave(&pcd->lock, flags);
|
||||
|
||||
list_for_each_entry_reverse(ce, &pcd->clock_list, node)
|
||||
clk_disable(ce->clk);
|
||||
|
||||
mutex_unlock(&pcd->lock);
|
||||
spin_unlock_irqrestore(&pcd->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -369,6 +372,7 @@ int pm_clk_resume(struct device *dev)
|
|||
{
|
||||
struct pm_clk_data *pcd = __to_pcd(dev);
|
||||
struct pm_clock_entry *ce;
|
||||
unsigned long flags;
|
||||
|
||||
dev_dbg(dev, "%s()\n", __func__);
|
||||
|
||||
|
@ -376,12 +380,12 @@ int pm_clk_resume(struct device *dev)
|
|||
if (!pcd || !dev->driver)
|
||||
return 0;
|
||||
|
||||
mutex_lock(&pcd->lock);
|
||||
spin_lock_irqsave(&pcd->lock, flags);
|
||||
|
||||
list_for_each_entry(ce, &pcd->clock_list, node)
|
||||
clk_enable(ce->clk);
|
||||
|
||||
mutex_unlock(&pcd->lock);
|
||||
spin_unlock_irqrestore(&pcd->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -379,9 +379,8 @@ static int __init smd_pkt_init(void)
|
|||
for (i = 0; i < NUM_SMD_PKT_PORTS; ++i) {
|
||||
smd_pkt_devp[i] = kzalloc(sizeof(struct smd_pkt_dev),
|
||||
GFP_KERNEL);
|
||||
if (IS_ERR(smd_pkt_devp[i])) {
|
||||
r = PTR_ERR(smd_pkt_devp[i]);
|
||||
pr_err("kmalloc() failed %d\n", r);
|
||||
if (!smd_pkt_devp[i]) {
|
||||
pr_err("kmalloc() failed\n");
|
||||
goto clean_cdevs;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <linux/clk.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/clockchips.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)
|
||||
{
|
||||
int ret;
|
||||
int k, ret;
|
||||
|
||||
/* enable clock */
|
||||
ret = clk_enable(p->clk);
|
||||
if (ret) {
|
||||
dev_err(&p->pdev->dev, "cannot enable clock\n");
|
||||
return ret;
|
||||
goto err0;
|
||||
}
|
||||
|
||||
/* 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, 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 */
|
||||
sh_cmt_start_stop_ch(p, 1);
|
||||
return 0;
|
||||
err1:
|
||||
/* stop clock */
|
||||
clk_disable(p->clk);
|
||||
|
||||
err0:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void sh_cmt_disable(struct sh_cmt_priv *p)
|
||||
|
|
|
@ -1198,6 +1198,10 @@ static int sbp2_remove(struct device *dev)
|
|||
{
|
||||
struct fw_unit *unit = fw_unit(dev);
|
||||
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);
|
||||
return 0;
|
||||
|
|
|
@ -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,
|
||||
efi_guid_t *vendor,
|
||||
unsigned long attr,
|
||||
u32 attr,
|
||||
unsigned long data_size,
|
||||
void *data)
|
||||
{
|
||||
|
|
|
@ -878,7 +878,7 @@ static void assert_panel_unlocked(struct drm_i915_private *dev_priv,
|
|||
int pp_reg, lvds_reg;
|
||||
u32 val;
|
||||
enum pipe panel_pipe = PIPE_A;
|
||||
bool locked = locked;
|
||||
bool locked = true;
|
||||
|
||||
if (HAS_PCH_SPLIT(dev_priv->dev)) {
|
||||
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_panel_setup_backlight(dev);
|
||||
|
||||
/* disable all the possible outputs/crtcs before entering KMS mode */
|
||||
drm_helper_disable_unused_functions(dev);
|
||||
}
|
||||
|
|
|
@ -114,7 +114,6 @@ struct i5k_amb_data {
|
|||
void __iomem *amb_mmio;
|
||||
struct i5k_device_attribute *attrs;
|
||||
unsigned int num_attrs;
|
||||
unsigned long chipset_id;
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
data->chipset_id = devid;
|
||||
|
||||
res = 0;
|
||||
out:
|
||||
pci_dev_put(pcidev);
|
||||
|
@ -478,23 +475,13 @@ out:
|
|||
return res;
|
||||
}
|
||||
|
||||
static unsigned long i5k_channel_pci_id(struct i5k_amb_data *data,
|
||||
unsigned long channel)
|
||||
{
|
||||
switch (data->chipset_id) {
|
||||
case PCI_DEVICE_ID_INTEL_5000_ERR:
|
||||
return PCI_DEVICE_ID_INTEL_5000_FBD0 + channel;
|
||||
case PCI_DEVICE_ID_INTEL_5400_ERR:
|
||||
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
|
||||
static struct {
|
||||
unsigned long err;
|
||||
unsigned long fbd0;
|
||||
} chipset_ids[] __devinitdata = {
|
||||
{ PCI_DEVICE_ID_INTEL_5000_ERR, PCI_DEVICE_ID_INTEL_5000_FBD0 },
|
||||
{ PCI_DEVICE_ID_INTEL_5400_ERR, PCI_DEVICE_ID_INTEL_5400_FBD0 },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
#ifdef MODULE
|
||||
|
@ -510,8 +497,7 @@ static int __devinit i5k_amb_probe(struct platform_device *pdev)
|
|||
{
|
||||
struct i5k_amb_data *data;
|
||||
struct resource *reso;
|
||||
int i;
|
||||
int res = -ENODEV;
|
||||
int i, res;
|
||||
|
||||
data = kzalloc(sizeof(*data), GFP_KERNEL);
|
||||
if (!data)
|
||||
|
@ -520,22 +506,22 @@ static int __devinit i5k_amb_probe(struct platform_device *pdev)
|
|||
/* Figure out where the AMB registers live */
|
||||
i = 0;
|
||||
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++;
|
||||
} while (res && chipset_ids[i]);
|
||||
} while (chipset_ids[i].err);
|
||||
|
||||
if (res)
|
||||
goto err;
|
||||
|
||||
/* Copy the DIMM presence map for the first two channels */
|
||||
res = i5k_channel_probe(&data->amb_present[0],
|
||||
i5k_channel_pci_id(data, 0));
|
||||
res = i5k_channel_probe(&data->amb_present[0], chipset_ids[i].fbd0);
|
||||
if (res)
|
||||
goto err;
|
||||
|
||||
/* Copy the DIMM presence map for the optional second two channels */
|
||||
i5k_channel_probe(&data->amb_present[2],
|
||||
i5k_channel_pci_id(data, 1));
|
||||
i5k_channel_probe(&data->amb_present[2], chipset_ids[i].fbd0 + 1);
|
||||
|
||||
/* Set up resource regions */
|
||||
reso = request_mem_region(data->amb_base, data->amb_len, DRVNAME);
|
||||
|
|
|
@ -211,8 +211,7 @@ static int lookup_comp(struct ntc_data *data,
|
|||
if (data->comp[mid].ohm <= ohm) {
|
||||
*i_low = mid;
|
||||
*i_high = mid - 1;
|
||||
}
|
||||
if (data->comp[mid].ohm > ohm) {
|
||||
} else {
|
||||
*i_low = mid + 1;
|
||||
*i_high = mid;
|
||||
}
|
||||
|
|
|
@ -146,6 +146,7 @@ struct i2c_nmk_client {
|
|||
* @stop: stop condition
|
||||
* @xfer_complete: acknowledge completion for a I2C message
|
||||
* @result: controller propogated result
|
||||
* @regulator: pointer to i2c regulator
|
||||
* @busy: Busy doing transfer
|
||||
*/
|
||||
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,
|
||||
dev->virtbase + I2C_IMSCR);
|
||||
|
||||
timeout = wait_for_completion_interruptible_timeout(
|
||||
timeout = wait_for_completion_timeout(
|
||||
&dev->xfer_complete, dev->adap.timeout);
|
||||
|
||||
if (timeout < 0) {
|
||||
dev_err(&dev->pdev->dev,
|
||||
"wait_for_completion_interruptible_timeout"
|
||||
"wait_for_completion_timeout"
|
||||
"returned %d waiting for event\n", timeout);
|
||||
status = timeout;
|
||||
}
|
||||
|
@ -504,12 +505,12 @@ static int write_i2c(struct nmk_i2c_dev *dev)
|
|||
writel(readl(dev->virtbase + I2C_IMSCR) | irq_mask,
|
||||
dev->virtbase + I2C_IMSCR);
|
||||
|
||||
timeout = wait_for_completion_interruptible_timeout(
|
||||
timeout = wait_for_completion_timeout(
|
||||
&dev->xfer_complete, dev->adap.timeout);
|
||||
|
||||
if (timeout < 0) {
|
||||
dev_err(&dev->pdev->dev,
|
||||
"wait_for_completion_interruptible_timeout"
|
||||
"wait_for_completion_timeout "
|
||||
"returned %d waiting for event\n", timeout);
|
||||
status = timeout;
|
||||
}
|
||||
|
|
|
@ -1139,41 +1139,12 @@ omap_i2c_remove(struct platform_device *pdev)
|
|||
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 = {
|
||||
.probe = omap_i2c_probe,
|
||||
.remove = omap_i2c_remove,
|
||||
.driver = {
|
||||
.name = "omap_i2c",
|
||||
.owner = THIS_MODULE,
|
||||
.pm = OMAP_I2C_PM_OPS,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
|
|
@ -662,6 +662,11 @@ failed_unregister_led1_R:
|
|||
static void bd2802_unregister_led_classdev(struct bd2802_led *led)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
|
|
@ -146,6 +146,7 @@ config PHANTOM
|
|||
|
||||
config INTEL_MID_PTI
|
||||
tristate "Parallel Trace Interface for MIPI P1149.7 cJTAG standard"
|
||||
depends on PCI
|
||||
default n
|
||||
help
|
||||
The PTI (Parallel Trace Interface) driver directs
|
||||
|
|
|
@ -164,5 +164,5 @@ subsys_initcall(ab8500_pwm_init);
|
|||
module_exit(ab8500_pwm_exit);
|
||||
MODULE_AUTHOR("Arun MURTHY <arun.murthy@stericsson.com>");
|
||||
MODULE_DESCRIPTION("AB8500 Pulse Width Modulation Driver");
|
||||
MODULE_ALIAS("AB8500 PWM driver");
|
||||
MODULE_ALIAS("platform:ab8500-pwm");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
|
@ -455,7 +455,7 @@ static int __devinit fsa9480_probe(struct i2c_client *client,
|
|||
|
||||
fail2:
|
||||
if (client->irq)
|
||||
free_irq(client->irq, NULL);
|
||||
free_irq(client->irq, usbsw);
|
||||
fail1:
|
||||
i2c_set_clientdata(client, NULL);
|
||||
kfree(usbsw);
|
||||
|
@ -466,7 +466,7 @@ static int __devexit fsa9480_remove(struct i2c_client *client)
|
|||
{
|
||||
struct fsa9480_usbsw *usbsw = i2c_get_clientdata(client);
|
||||
if (client->irq)
|
||||
free_irq(client->irq, NULL);
|
||||
free_irq(client->irq, usbsw);
|
||||
i2c_set_clientdata(client, NULL);
|
||||
|
||||
sysfs_remove_group(&client->dev.kobj, &fsa9480_group);
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
#include <linux/mutex.h>
|
||||
#include <linux/miscdevice.h>
|
||||
#include <linux/pti.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#define DRIVERNAME "pti"
|
||||
#define PCINAME "pciPTI"
|
||||
|
|
|
@ -338,6 +338,12 @@ void st_int_recv(void *disc_data,
|
|||
/* Unknow packet? */
|
||||
default:
|
||||
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->list[type]->max_frame_size,
|
||||
GFP_ATOMIC);
|
||||
|
@ -354,6 +360,7 @@ void st_int_recv(void *disc_data,
|
|||
ptr++;
|
||||
count--;
|
||||
}
|
||||
done:
|
||||
spin_unlock_irqrestore(&st_gdata->lock, flags);
|
||||
pr_debug("done %s", __func__);
|
||||
return;
|
||||
|
@ -717,9 +724,10 @@ static void st_tty_close(struct tty_struct *tty)
|
|||
*/
|
||||
spin_lock_irqsave(&st_gdata->lock, flags);
|
||||
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);
|
||||
st_gdata->list[i] = NULL;
|
||||
st_gdata->is_registered[i] = false;
|
||||
}
|
||||
st_gdata->protos_registered = 0;
|
||||
spin_unlock_irqrestore(&st_gdata->lock, flags);
|
||||
|
|
|
@ -68,6 +68,7 @@ void validate_firmware_response(struct kim_data_s *kim_gdata)
|
|||
if (unlikely(skb->data[5] != 0)) {
|
||||
pr_err("no proper response during fw download");
|
||||
pr_err("data6 %x", skb->data[5]);
|
||||
kfree_skb(skb);
|
||||
return; /* keep waiting for the proper response */
|
||||
}
|
||||
/* 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 ");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
INIT_COMPLETION(kim_gdata->kim_rcvd);
|
||||
|
||||
version =
|
||||
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) {
|
||||
case ACTION_SEND_COMMAND: /* action send */
|
||||
pr_debug("S");
|
||||
action_ptr = &(((struct bts_action *)ptr)->data[0]);
|
||||
if (unlikely
|
||||
(((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);
|
||||
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
|
||||
|
@ -361,6 +368,7 @@ static long download_firmware(struct kim_data_s *kim_gdata)
|
|||
}
|
||||
break;
|
||||
case ACTION_WAIT_EVENT: /* wait */
|
||||
pr_debug("W");
|
||||
if (!wait_for_completion_timeout
|
||||
(&kim_gdata->kim_rcvd,
|
||||
msecs_to_jiffies(CMD_RESP_TIME))) {
|
||||
|
@ -434,11 +442,17 @@ long st_kim_start(void *kim_data)
|
|||
{
|
||||
long err = 0;
|
||||
long retry = POR_RETRY_COUNT;
|
||||
struct ti_st_plat_data *pdata;
|
||||
struct kim_data_s *kim_gdata = (struct kim_data_s *)kim_data;
|
||||
|
||||
pr_info(" %s", __func__);
|
||||
pdata = kim_gdata->kim_pdev->dev.platform_data;
|
||||
|
||||
do {
|
||||
/* platform specific enabling code here */
|
||||
if (pdata->chip_enable)
|
||||
pdata->chip_enable(kim_gdata);
|
||||
|
||||
/* Configure BT nShutdown to HIGH state */
|
||||
gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
|
||||
mdelay(5); /* FIXME: a proper toggle */
|
||||
|
@ -460,6 +474,12 @@ long st_kim_start(void *kim_data)
|
|||
pr_info("ldisc_install = 0");
|
||||
sysfs_notify(&kim_gdata->kim_pdev->dev.kobj,
|
||||
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;
|
||||
continue;
|
||||
} else {
|
||||
|
@ -472,6 +492,13 @@ long st_kim_start(void *kim_data)
|
|||
pr_info("ldisc_install = 0");
|
||||
sysfs_notify(&kim_gdata->kim_pdev->dev.kobj,
|
||||
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;
|
||||
} else { /* on success don't retry */
|
||||
break;
|
||||
|
@ -489,6 +516,8 @@ long st_kim_stop(void *kim_data)
|
|||
{
|
||||
long err = 0;
|
||||
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);
|
||||
|
||||
|
@ -515,6 +544,10 @@ long st_kim_stop(void *kim_data)
|
|||
gpio_set_value(kim_gdata->nshutdown, GPIO_HIGH);
|
||||
mdelay(1);
|
||||
gpio_set_value(kim_gdata->nshutdown, GPIO_LOW);
|
||||
|
||||
/* platform specific disable */
|
||||
if (pdata->chip_disable)
|
||||
pdata->chip_disable(kim_gdata);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#define pr_fmt(fmt) "(stll) :" fmt
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.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)
|
||||
{
|
||||
struct kim_data_s *kim_data;
|
||||
struct ti_st_plat_data *pdata;
|
||||
|
||||
pr_debug("%s", __func__);
|
||||
/* sanity check */
|
||||
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);
|
||||
/* update state */
|
||||
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)
|
||||
{
|
||||
struct kim_data_s *kim_data;
|
||||
struct ti_st_plat_data *pdata;
|
||||
|
||||
/* diff actions in diff states */
|
||||
switch (st_data->ll_state) {
|
||||
case ST_LL_ASLEEP:
|
||||
|
@ -70,6 +83,12 @@ static void ll_device_want_to_wakeup(struct st_data_s *st_data)
|
|||
}
|
||||
/* update state */
|
||||
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);
|
||||
}
|
||||
|
||||
/**********************************************************************/
|
||||
|
|
|
@ -4026,6 +4026,12 @@ s32 e1000_validate_eeprom_checksum(struct e1000_hw *hw)
|
|||
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)
|
||||
return E1000_SUCCESS;
|
||||
else {
|
||||
|
|
|
@ -80,13 +80,13 @@ static int rionet_capable = 1;
|
|||
*/
|
||||
static struct rio_dev **rionet_active;
|
||||
|
||||
#define is_rionet_capable(pef, src_ops, dst_ops) \
|
||||
((pef & RIO_PEF_INB_MBOX) && \
|
||||
(pef & RIO_PEF_INB_DOORBELL) && \
|
||||
#define is_rionet_capable(src_ops, dst_ops) \
|
||||
((src_ops & RIO_SRC_OPS_DATA_MSG) && \
|
||||
(dst_ops & RIO_DST_OPS_DATA_MSG) && \
|
||||
(src_ops & RIO_SRC_OPS_DOORBELL) && \
|
||||
(dst_ops & RIO_DST_OPS_DOORBELL))
|
||||
#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_GET_DESTID(x) (*(u16 *)(x + 4))
|
||||
|
@ -282,7 +282,6 @@ static int rionet_open(struct net_device *ndev)
|
|||
{
|
||||
int i, rc = 0;
|
||||
struct rionet_peer *peer, *tmp;
|
||||
u32 pwdcsr;
|
||||
struct rionet_private *rnet = netdev_priv(ndev);
|
||||
|
||||
if (netif_msg_ifup(rnet))
|
||||
|
@ -332,13 +331,8 @@ static int rionet_open(struct net_device *ndev)
|
|||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* If device has initialized inbound doorbells,
|
||||
* 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);
|
||||
/* Send a join message */
|
||||
rio_send_doorbell(peer->rdev, RIONET_DOORBELL_JOIN);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
int rc = -ENODEV;
|
||||
u32 lpef, lsrc_ops, ldst_ops;
|
||||
u32 lsrc_ops, ldst_ops;
|
||||
struct rionet_peer *peer;
|
||||
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
|
||||
*/
|
||||
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,
|
||||
&lsrc_ops);
|
||||
rio_local_read_config_32(rdev->net->hport, RIO_DST_OPS_CAR,
|
||||
&ldst_ops);
|
||||
if (!is_rionet_capable(lpef, lsrc_ops, ldst_ops)) {
|
||||
if (!is_rionet_capable(lsrc_ops, ldst_ops)) {
|
||||
printk(KERN_ERR
|
||||
"%s: local device is not network capable\n",
|
||||
DRV_NAME);
|
||||
|
|
|
@ -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.coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
|
||||
if ((rdev->pef & RIO_PEF_INB_DOORBELL) &&
|
||||
(rdev->dst_ops & RIO_DST_OPS_DOORBELL))
|
||||
if (rdev->dst_ops & RIO_DST_OPS_DOORBELL)
|
||||
rio_init_dbell_res(&rdev->riores[RIO_DOORBELL_RESOURCE],
|
||||
0, 0xffff);
|
||||
|
||||
|
|
|
@ -152,10 +152,6 @@ static int s3c_rtc_gettime(struct device *dev, struct rtc_time *rtc_tm)
|
|||
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_min = bcd2bin(rtc_tm->tm_min);
|
||||
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 += 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;
|
||||
|
||||
clk_disable(rtc_clk);
|
||||
|
@ -269,10 +270,9 @@ static int s3c_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
|
|||
clk_enable(rtc_clk);
|
||||
pr_debug("s3c_rtc_setalarm: %d, %04d.%02d.%02d %02d:%02d:%02d\n",
|
||||
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);
|
||||
|
||||
|
||||
alrm_en = readb(base + S3C2410_RTCALM) & S3C2410_RTCALM_ALMEN;
|
||||
writeb(0x00, base + S3C2410_RTCALM);
|
||||
|
||||
|
@ -319,49 +319,7 @@ static int s3c_rtc_proc(struct device *dev, struct seq_file *seq)
|
|||
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 = {
|
||||
.open = s3c_rtc_open,
|
||||
.release = s3c_rtc_release,
|
||||
.read_time = s3c_rtc_gettime,
|
||||
.set_time = s3c_rtc_settime,
|
||||
.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);
|
||||
|
||||
free_irq(s3c_rtc_alarmno, rtc);
|
||||
free_irq(s3c_rtc_tickno, rtc);
|
||||
|
||||
platform_set_drvdata(dev, NULL);
|
||||
rtc_device_unregister(rtc);
|
||||
|
||||
|
@ -548,10 +509,32 @@ static int __devinit s3c_rtc_probe(struct platform_device *pdev)
|
|||
|
||||
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);
|
||||
|
||||
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:
|
||||
s3c_rtc_enable(pdev, 0);
|
||||
clk_disable(rtc_clk);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
struct dasd_profile_info_t *data;
|
||||
int rc = 0;
|
||||
|
||||
data = kmalloc(sizeof(*data), GFP_KERNEL);
|
||||
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);
|
||||
} else {
|
||||
spin_unlock_bh(&block->profile.lock);
|
||||
return -EIO;
|
||||
rc = -EIO;
|
||||
goto out;
|
||||
}
|
||||
if (copy_to_user(argp, data, sizeof(*data)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
rc = -EFAULT;
|
||||
out:
|
||||
kfree(data);
|
||||
return rc;
|
||||
}
|
||||
#else
|
||||
static int dasd_ioctl_reset_profile(struct dasd_block *block)
|
||||
|
|
|
@ -383,8 +383,10 @@ static int sclp_attach_storage(u8 id)
|
|||
switch (sccb->header.response_code) {
|
||||
case 0x0020:
|
||||
set_bit(id, sclp_storage_ids);
|
||||
for (i = 0; i < sccb->assigned; i++)
|
||||
sclp_unassign_storage(sccb->entries[i] >> 16);
|
||||
for (i = 0; i < sccb->assigned; i++) {
|
||||
if (sccb->entries[i])
|
||||
sclp_unassign_storage(sccb->entries[i] >> 16);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
rc = -EIO;
|
||||
|
|
|
@ -186,6 +186,9 @@ static unsigned char intc_irq_sense_table[IRQ_TYPE_SENSE_MASK + 1] = {
|
|||
!defined(CONFIG_CPU_SUBTYPE_SH7709)
|
||||
[IRQ_TYPE_LEVEL_HIGH] = VALID(3),
|
||||
#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)
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include <linux/io.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#include <brcm_hw_ids.h>
|
||||
#include <chipcommon.h>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#define _BRCM_TYPES_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
/* Bus types */
|
||||
#define SI_BUS 0 /* SOC Interconnect */
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
**********************************************************************/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <net/dst.h>
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
**********************************************************************/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <net/dst.h>
|
||||
|
||||
#include <asm/octeon/octeon.h>
|
||||
|
|
|
@ -209,7 +209,6 @@ int dsp_clk_enable(enum dsp_clk_id clk_id)
|
|||
break;
|
||||
#ifdef CONFIG_OMAP_MCBSP
|
||||
case MCBSP_CLK:
|
||||
omap_mcbsp_set_io_type(MCBSP_ID(clk_id), OMAP_MCBSP_POLL_IO);
|
||||
omap_mcbsp_request(MCBSP_ID(clk_id));
|
||||
omap2_mcbsp_set_clks_src(MCBSP_ID(clk_id), MCBSP_CLKS_PAD_SRC);
|
||||
break;
|
||||
|
|
|
@ -604,7 +604,7 @@ int tmem_get(struct tmem_pool *pool, struct tmem_oid *oidp, uint32_t index,
|
|||
struct tmem_obj *obj;
|
||||
void *pampd;
|
||||
bool ephemeral = is_ephemeral(pool);
|
||||
uint32_t ret = -1;
|
||||
int ret = -1;
|
||||
struct tmem_hashbucket *hb;
|
||||
bool free = (get_and_free == 1) || ((get_and_free == 0) && ephemeral);
|
||||
bool lock_held = false;
|
||||
|
|
|
@ -1158,7 +1158,7 @@ static void *zcache_pampd_create(char *data, size_t size, bool raw, int eph,
|
|||
size_t clen;
|
||||
int ret;
|
||||
unsigned long count;
|
||||
struct page *page = virt_to_page(data);
|
||||
struct page *page = (struct page *)(data);
|
||||
struct zcache_client *cli = pool->client;
|
||||
uint16_t client_id = get_client_id_from_client(cli);
|
||||
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;
|
||||
|
||||
BUG_ON(is_ephemeral(pool));
|
||||
zv_decompress(virt_to_page(data), pampd);
|
||||
zv_decompress((struct page *)(data), pampd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1539,7 +1539,7 @@ static int zcache_put_page(int cli_id, int pool_id, struct tmem_oid *oidp,
|
|||
goto out;
|
||||
if (!zcache_freeze && zcache_do_preload(pool) == 0) {
|
||||
/* 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));
|
||||
if (ret < 0) {
|
||||
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);
|
||||
if (likely(pool != NULL)) {
|
||||
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));
|
||||
zcache_put_pool(pool);
|
||||
}
|
||||
|
|
|
@ -2243,7 +2243,6 @@ static int iscsit_handle_snack(
|
|||
case 0:
|
||||
return iscsit_handle_recovery_datain_or_r2t(conn, buf,
|
||||
hdr->itt, hdr->ttt, hdr->begrun, hdr->runlength);
|
||||
return 0;
|
||||
case ISCSI_FLAG_SNACK_TYPE_STATUS:
|
||||
return iscsit_handle_status_snack(conn, hdr->itt, hdr->ttt,
|
||||
hdr->begrun, hdr->runlength);
|
||||
|
|
|
@ -268,7 +268,7 @@ struct se_tpg_np *lio_target_call_addnptotpg(
|
|||
ISCSI_TCP);
|
||||
if (IS_ERR(tpg_np)) {
|
||||
iscsit_put_tpg(tpg);
|
||||
return ERR_PTR(PTR_ERR(tpg_np));
|
||||
return ERR_CAST(tpg_np);
|
||||
}
|
||||
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);
|
||||
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.
|
||||
*/
|
||||
|
|
|
@ -834,7 +834,7 @@ static int iscsit_attach_ooo_cmdsn(
|
|||
*/
|
||||
list_for_each_entry(ooo_tmp, &sess->sess_ooo_cmdsn_list,
|
||||
ooo_list) {
|
||||
while (ooo_tmp->cmdsn < ooo_cmdsn->cmdsn)
|
||||
if (ooo_tmp->cmdsn < ooo_cmdsn->cmdsn)
|
||||
continue;
|
||||
|
||||
list_add(&ooo_cmdsn->ooo_list,
|
||||
|
|
|
@ -1013,19 +1013,9 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
|
|||
ISCSI_LOGIN_STATUS_TARGET_ERROR);
|
||||
goto new_sess_out;
|
||||
}
|
||||
#if 0
|
||||
if (!iscsi_ntop6((const unsigned char *)
|
||||
&sock_in6.sin6_addr.in6_u,
|
||||
(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
|
||||
snprintf(conn->login_ip, sizeof(conn->login_ip), "%pI6c",
|
||||
&sock_in6.sin6_addr.in6_u);
|
||||
conn->login_port = ntohs(sock_in6.sin6_port);
|
||||
} else {
|
||||
memset(&sock_in, 0, sizeof(struct sockaddr_in));
|
||||
|
||||
|
|
|
@ -545,13 +545,13 @@ int iscsi_copy_param_list(
|
|||
struct iscsi_param_list *src_param_list,
|
||||
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;
|
||||
|
||||
param_list = kzalloc(sizeof(struct iscsi_param_list), GFP_KERNEL);
|
||||
if (!param_list) {
|
||||
pr_err("Unable to allocate memory for"
|
||||
" struct iscsi_param_list.\n");
|
||||
pr_err("Unable to allocate memory for struct iscsi_param_list.\n");
|
||||
goto err_out;
|
||||
}
|
||||
INIT_LIST_HEAD(¶m_list->param_list);
|
||||
|
@ -567,8 +567,17 @@ int iscsi_copy_param_list(
|
|||
|
||||
new_param = kzalloc(sizeof(struct iscsi_param), GFP_KERNEL);
|
||||
if (!new_param) {
|
||||
pr_err("Unable to allocate memory for"
|
||||
" struct iscsi_param.\n");
|
||||
pr_err("Unable to allocate memory for 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;
|
||||
}
|
||||
|
||||
|
@ -580,32 +589,12 @@ int iscsi_copy_param_list(
|
|||
new_param->use = param->use;
|
||||
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, ¶m_list->param_list);
|
||||
}
|
||||
|
||||
if (!list_empty(¶m_list->param_list))
|
||||
if (!list_empty(¶m_list->param_list)) {
|
||||
*dst_param_list = param_list;
|
||||
else {
|
||||
} else {
|
||||
pr_err("No parameters allocated.\n");
|
||||
goto err_out;
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue