forked from luck/tmp_suning_uos_patched
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
commit
455ffa607f
|
@ -1246,7 +1246,7 @@ config PL310_ERRATA_588369
|
|||
|
||||
config ARM_ERRATA_720789
|
||||
bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID"
|
||||
depends on CPU_V7 && SMP
|
||||
depends on CPU_V7
|
||||
help
|
||||
This option enables the workaround for the 720789 Cortex-A9 (prior to
|
||||
r2p0) erratum. A faulty ASID can be sent to the other CPUs for the
|
||||
|
@ -1282,7 +1282,7 @@ config ARM_ERRATA_743622
|
|||
|
||||
config ARM_ERRATA_751472
|
||||
bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
|
||||
depends on CPU_V7 && SMP
|
||||
depends on CPU_V7
|
||||
help
|
||||
This option enables the workaround for the 751472 Cortex-A9 (prior
|
||||
to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
|
||||
|
|
|
@ -221,17 +221,6 @@
|
|||
*/
|
||||
#define MCODE_BUFF_PER_REQ 256
|
||||
|
||||
/*
|
||||
* Mark a _pl330_req as free.
|
||||
* We do it by writing DMAEND as the first instruction
|
||||
* because no valid request is going to have DMAEND as
|
||||
* its first instruction to execute.
|
||||
*/
|
||||
#define MARK_FREE(req) do { \
|
||||
_emit_END(0, (req)->mc_cpu); \
|
||||
(req)->mc_len = 0; \
|
||||
} while (0)
|
||||
|
||||
/* If the _pl330_req is available to the client */
|
||||
#define IS_FREE(req) (*((u8 *)((req)->mc_cpu)) == CMD_DMAEND)
|
||||
|
||||
|
@ -301,8 +290,10 @@ struct pl330_thread {
|
|||
struct pl330_dmac *dmac;
|
||||
/* Only two at a time */
|
||||
struct _pl330_req req[2];
|
||||
/* Index of the last submitted request */
|
||||
/* Index of the last enqueued request */
|
||||
unsigned lstenq;
|
||||
/* Index of the last submitted request or -1 if the DMA is stopped */
|
||||
int req_running;
|
||||
};
|
||||
|
||||
enum pl330_dmac_state {
|
||||
|
@ -778,6 +769,22 @@ static inline void _execute_DBGINSN(struct pl330_thread *thrd,
|
|||
writel(0, regs + DBGCMD);
|
||||
}
|
||||
|
||||
/*
|
||||
* Mark a _pl330_req as free.
|
||||
* We do it by writing DMAEND as the first instruction
|
||||
* because no valid request is going to have DMAEND as
|
||||
* its first instruction to execute.
|
||||
*/
|
||||
static void mark_free(struct pl330_thread *thrd, int idx)
|
||||
{
|
||||
struct _pl330_req *req = &thrd->req[idx];
|
||||
|
||||
_emit_END(0, req->mc_cpu);
|
||||
req->mc_len = 0;
|
||||
|
||||
thrd->req_running = -1;
|
||||
}
|
||||
|
||||
static inline u32 _state(struct pl330_thread *thrd)
|
||||
{
|
||||
void __iomem *regs = thrd->dmac->pinfo->base;
|
||||
|
@ -836,31 +843,6 @@ static inline u32 _state(struct pl330_thread *thrd)
|
|||
}
|
||||
}
|
||||
|
||||
/* If the request 'req' of thread 'thrd' is currently active */
|
||||
static inline bool _req_active(struct pl330_thread *thrd,
|
||||
struct _pl330_req *req)
|
||||
{
|
||||
void __iomem *regs = thrd->dmac->pinfo->base;
|
||||
u32 buf = req->mc_bus, pc = readl(regs + CPC(thrd->id));
|
||||
|
||||
if (IS_FREE(req))
|
||||
return false;
|
||||
|
||||
return (pc >= buf && pc <= buf + req->mc_len) ? true : false;
|
||||
}
|
||||
|
||||
/* Returns 0 if the thread is inactive, ID of active req + 1 otherwise */
|
||||
static inline unsigned _thrd_active(struct pl330_thread *thrd)
|
||||
{
|
||||
if (_req_active(thrd, &thrd->req[0]))
|
||||
return 1; /* First req active */
|
||||
|
||||
if (_req_active(thrd, &thrd->req[1]))
|
||||
return 2; /* Second req active */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void _stop(struct pl330_thread *thrd)
|
||||
{
|
||||
void __iomem *regs = thrd->dmac->pinfo->base;
|
||||
|
@ -892,17 +874,22 @@ static bool _trigger(struct pl330_thread *thrd)
|
|||
struct _arg_GO go;
|
||||
unsigned ns;
|
||||
u8 insn[6] = {0, 0, 0, 0, 0, 0};
|
||||
int idx;
|
||||
|
||||
/* Return if already ACTIVE */
|
||||
if (_state(thrd) != PL330_STATE_STOPPED)
|
||||
return true;
|
||||
|
||||
if (!IS_FREE(&thrd->req[1 - thrd->lstenq]))
|
||||
req = &thrd->req[1 - thrd->lstenq];
|
||||
else if (!IS_FREE(&thrd->req[thrd->lstenq]))
|
||||
req = &thrd->req[thrd->lstenq];
|
||||
else
|
||||
req = NULL;
|
||||
idx = 1 - thrd->lstenq;
|
||||
if (!IS_FREE(&thrd->req[idx]))
|
||||
req = &thrd->req[idx];
|
||||
else {
|
||||
idx = thrd->lstenq;
|
||||
if (!IS_FREE(&thrd->req[idx]))
|
||||
req = &thrd->req[idx];
|
||||
else
|
||||
req = NULL;
|
||||
}
|
||||
|
||||
/* Return if no request */
|
||||
if (!req || !req->r)
|
||||
|
@ -933,6 +920,8 @@ static bool _trigger(struct pl330_thread *thrd)
|
|||
/* Only manager can execute GO */
|
||||
_execute_DBGINSN(thrd, insn, true);
|
||||
|
||||
thrd->req_running = idx;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1382,8 +1371,8 @@ static void pl330_dotask(unsigned long data)
|
|||
|
||||
thrd->req[0].r = NULL;
|
||||
thrd->req[1].r = NULL;
|
||||
MARK_FREE(&thrd->req[0]);
|
||||
MARK_FREE(&thrd->req[1]);
|
||||
mark_free(thrd, 0);
|
||||
mark_free(thrd, 1);
|
||||
|
||||
/* Clear the reset flag */
|
||||
pl330->dmac_tbd.reset_chan &= ~(1 << i);
|
||||
|
@ -1461,14 +1450,12 @@ int pl330_update(const struct pl330_info *pi)
|
|||
|
||||
thrd = &pl330->channels[id];
|
||||
|
||||
active = _thrd_active(thrd);
|
||||
if (!active) /* Aborted */
|
||||
active = thrd->req_running;
|
||||
if (active == -1) /* Aborted */
|
||||
continue;
|
||||
|
||||
active -= 1;
|
||||
|
||||
rqdone = &thrd->req[active];
|
||||
MARK_FREE(rqdone);
|
||||
mark_free(thrd, active);
|
||||
|
||||
/* Get going again ASAP */
|
||||
_start(thrd);
|
||||
|
@ -1509,7 +1496,7 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
|
|||
struct pl330_thread *thrd = ch_id;
|
||||
struct pl330_dmac *pl330;
|
||||
unsigned long flags;
|
||||
int ret = 0, active;
|
||||
int ret = 0, active = thrd->req_running;
|
||||
|
||||
if (!thrd || thrd->free || thrd->dmac->state == DYING)
|
||||
return -EINVAL;
|
||||
|
@ -1525,28 +1512,24 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
|
|||
|
||||
thrd->req[0].r = NULL;
|
||||
thrd->req[1].r = NULL;
|
||||
MARK_FREE(&thrd->req[0]);
|
||||
MARK_FREE(&thrd->req[1]);
|
||||
mark_free(thrd, 0);
|
||||
mark_free(thrd, 1);
|
||||
break;
|
||||
|
||||
case PL330_OP_ABORT:
|
||||
active = _thrd_active(thrd);
|
||||
|
||||
/* Make sure the channel is stopped */
|
||||
_stop(thrd);
|
||||
|
||||
/* ABORT is only for the active req */
|
||||
if (!active)
|
||||
if (active == -1)
|
||||
break;
|
||||
|
||||
active--;
|
||||
|
||||
thrd->req[active].r = NULL;
|
||||
MARK_FREE(&thrd->req[active]);
|
||||
mark_free(thrd, active);
|
||||
|
||||
/* Start the next */
|
||||
case PL330_OP_START:
|
||||
if (!_thrd_active(thrd) && !_start(thrd))
|
||||
if ((active == -1) && !_start(thrd))
|
||||
ret = -EIO;
|
||||
break;
|
||||
|
||||
|
@ -1587,14 +1570,13 @@ int pl330_chan_status(void *ch_id, struct pl330_chanstatus *pstatus)
|
|||
else
|
||||
pstatus->faulting = false;
|
||||
|
||||
active = _thrd_active(thrd);
|
||||
active = thrd->req_running;
|
||||
|
||||
if (!active) {
|
||||
if (active == -1) {
|
||||
/* Indicate that the thread is not running */
|
||||
pstatus->top_req = NULL;
|
||||
pstatus->wait_req = NULL;
|
||||
} else {
|
||||
active--;
|
||||
pstatus->top_req = thrd->req[active].r;
|
||||
pstatus->wait_req = !IS_FREE(&thrd->req[1 - active])
|
||||
? thrd->req[1 - active].r : NULL;
|
||||
|
@ -1659,9 +1641,9 @@ void *pl330_request_channel(const struct pl330_info *pi)
|
|||
thrd->free = false;
|
||||
thrd->lstenq = 1;
|
||||
thrd->req[0].r = NULL;
|
||||
MARK_FREE(&thrd->req[0]);
|
||||
mark_free(thrd, 0);
|
||||
thrd->req[1].r = NULL;
|
||||
MARK_FREE(&thrd->req[1]);
|
||||
mark_free(thrd, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1767,14 +1749,14 @@ static inline void _reset_thread(struct pl330_thread *thrd)
|
|||
thrd->req[0].mc_bus = pl330->mcode_bus
|
||||
+ (thrd->id * pi->mcbufsz);
|
||||
thrd->req[0].r = NULL;
|
||||
MARK_FREE(&thrd->req[0]);
|
||||
mark_free(thrd, 0);
|
||||
|
||||
thrd->req[1].mc_cpu = thrd->req[0].mc_cpu
|
||||
+ pi->mcbufsz / 2;
|
||||
thrd->req[1].mc_bus = thrd->req[0].mc_bus
|
||||
+ pi->mcbufsz / 2;
|
||||
thrd->req[1].r = NULL;
|
||||
MARK_FREE(&thrd->req[1]);
|
||||
mark_free(thrd, 1);
|
||||
}
|
||||
|
||||
static int dmac_alloc_threads(struct pl330_dmac *pl330)
|
||||
|
|
|
@ -18,9 +18,10 @@ CONFIG_ARCH_MXC=y
|
|||
CONFIG_ARCH_IMX_V4_V5=y
|
||||
CONFIG_ARCH_MX1ADS=y
|
||||
CONFIG_MACH_SCB9328=y
|
||||
CONFIG_MACH_APF9328=y
|
||||
CONFIG_MACH_MX21ADS=y
|
||||
CONFIG_MACH_MX25_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX25=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX25SD=y
|
||||
CONFIG_MACH_MX27ADS=y
|
||||
CONFIG_MACH_PCM038=y
|
||||
CONFIG_MACH_CPUIMX27=y
|
||||
|
@ -72,17 +73,16 @@ CONFIG_MTD_CFI_GEOMETRY=y
|
|||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_MXC=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
CONFIG_EEPROM_AT25=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_SMC91X=y
|
||||
CONFIG_DM9000=y
|
||||
CONFIG_SMC91X=y
|
||||
CONFIG_SMC911X=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_SMSC_PHY=y
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
|
@ -100,6 +100,7 @@ CONFIG_I2C_CHARDEV=y
|
|||
CONFIG_I2C_IMX=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_IMX=y
|
||||
CONFIG_SPI_SPIDEV=y
|
||||
CONFIG_W1=y
|
||||
CONFIG_W1_MASTER_MXC=y
|
||||
CONFIG_W1_SLAVE_THERM=y
|
||||
|
@ -139,6 +140,7 @@ CONFIG_MMC=y
|
|||
CONFIG_MMC_MXC=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_MC13783=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
|
|
|
@ -110,11 +110,6 @@ static struct map_desc exynos4_iodesc[] __initdata = {
|
|||
.pfn = __phys_to_pfn(EXYNOS4_PA_DMC0),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S5P_VA_SROMC,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_SROMC),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = (unsigned long)S3C_VA_USB_HSPHY,
|
||||
.pfn = __phys_to_pfn(EXYNOS4_PA_HSPHY),
|
||||
|
|
|
@ -132,7 +132,7 @@ config MACH_MX25_3DS
|
|||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
|
||||
config MACH_EUKREA_CPUIMX25
|
||||
config MACH_EUKREA_CPUIMX25SD
|
||||
bool "Support Eukrea CPUIMX25 Platform"
|
||||
select SOC_IMX25
|
||||
select IMX_HAVE_PLATFORM_FLEXCAN
|
||||
|
@ -148,7 +148,7 @@ config MACH_EUKREA_CPUIMX25
|
|||
|
||||
choice
|
||||
prompt "Baseboard"
|
||||
depends on MACH_EUKREA_CPUIMX25
|
||||
depends on MACH_EUKREA_CPUIMX25SD
|
||||
default MACH_EUKREA_MBIMXSD25_BASEBOARD
|
||||
|
||||
config MACH_EUKREA_MBIMXSD25_BASEBOARD
|
||||
|
@ -542,7 +542,7 @@ config MACH_MX35_3DS
|
|||
Include support for MX35PDK platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_EUKREA_CPUIMX35
|
||||
config MACH_EUKREA_CPUIMX35SD
|
||||
bool "Support Eukrea CPUIMX35 Platform"
|
||||
select SOC_IMX35
|
||||
select IMX_HAVE_PLATFORM_FLEXCAN
|
||||
|
@ -560,7 +560,7 @@ config MACH_EUKREA_CPUIMX35
|
|||
|
||||
choice
|
||||
prompt "Baseboard"
|
||||
depends on MACH_EUKREA_CPUIMX35
|
||||
depends on MACH_EUKREA_CPUIMX35SD
|
||||
default MACH_EUKREA_MBIMXSD35_BASEBOARD
|
||||
|
||||
config MACH_EUKREA_MBIMXSD35_BASEBOARD
|
||||
|
|
|
@ -24,7 +24,7 @@ obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o
|
|||
|
||||
# i.MX25 based machines
|
||||
obj-$(CONFIG_MACH_MX25_3DS) += mach-mx25_3ds.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX25) += mach-eukrea_cpuimx25.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX25SD) += mach-eukrea_cpuimx25.o
|
||||
obj-$(CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD) += eukrea_mbimxsd25-baseboard.o
|
||||
|
||||
# i.MX27 based machines
|
||||
|
@ -57,7 +57,7 @@ obj-$(CONFIG_MACH_BUG) += mach-bug.o
|
|||
# i.MX35 based machines
|
||||
obj-$(CONFIG_MACH_PCM043) += mach-pcm043.o
|
||||
obj-$(CONFIG_MACH_MX35_3DS) += mach-mx35_3ds.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX35) += mach-cpuimx35.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX35SD) += mach-cpuimx35.o
|
||||
obj-$(CONFIG_MACH_EUKREA_MBIMXSD35_BASEBOARD) += eukrea_mbimxsd35-baseboard.o
|
||||
obj-$(CONFIG_MACH_VPR200) += mach-vpr200.o
|
||||
|
||||
|
|
|
@ -507,7 +507,7 @@ static struct clk_lookup lookups[] = {
|
|||
|
||||
int __init mx35_clocks_init()
|
||||
{
|
||||
unsigned int cgr2 = 3 << 26, cgr3 = 0;
|
||||
unsigned int cgr2 = 3 << 26;
|
||||
|
||||
#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_ICEDCC)
|
||||
cgr2 |= 3 << 16;
|
||||
|
@ -521,6 +521,12 @@ int __init mx35_clocks_init()
|
|||
__raw_writel((3 << 18), CCM_BASE + CCM_CGR0);
|
||||
__raw_writel((3 << 2) | (3 << 4) | (3 << 6) | (3 << 8) | (3 << 16),
|
||||
CCM_BASE + CCM_CGR1);
|
||||
__raw_writel(cgr2, CCM_BASE + CCM_CGR2);
|
||||
__raw_writel(0, CCM_BASE + CCM_CGR3);
|
||||
|
||||
clk_enable(&iim_clk);
|
||||
imx_print_silicon_rev("i.MX35", mx35_revision());
|
||||
clk_disable(&iim_clk);
|
||||
|
||||
/*
|
||||
* Check if we came up in internal boot mode. If yes, we need some
|
||||
|
@ -529,17 +535,11 @@ int __init mx35_clocks_init()
|
|||
*/
|
||||
if (!(__raw_readl(CCM_BASE + CCM_RCSR) & (3 << 10))) {
|
||||
/* Additionally turn on UART1, SCC, and IIM clocks */
|
||||
cgr2 |= 3 << 16 | 3 << 4;
|
||||
cgr3 |= 3 << 2;
|
||||
clk_enable(&iim_clk);
|
||||
clk_enable(&uart1_clk);
|
||||
clk_enable(&scc_clk);
|
||||
}
|
||||
|
||||
__raw_writel(cgr2, CCM_BASE + CCM_CGR2);
|
||||
__raw_writel(cgr3, CCM_BASE + CCM_CGR3);
|
||||
|
||||
clk_enable(&iim_clk);
|
||||
imx_print_silicon_rev("i.MX35", mx35_revision());
|
||||
clk_disable(&iim_clk);
|
||||
|
||||
#ifdef CONFIG_MXC_USE_EPIT
|
||||
epit_timer_init(&epit1_clk,
|
||||
MX35_IO_ADDRESS(MX35_EPIT1_BASE_ADDR), MX35_INT_EPIT1);
|
||||
|
|
|
@ -53,12 +53,18 @@ static const struct imxi2c_platform_data
|
|||
.bitrate = 100000,
|
||||
};
|
||||
|
||||
#define TSC2007_IRQGPIO IMX_GPIO_NR(3, 2)
|
||||
static int tsc2007_get_pendown_state(void)
|
||||
{
|
||||
return !gpio_get_value(TSC2007_IRQGPIO);
|
||||
}
|
||||
|
||||
static struct tsc2007_platform_data tsc2007_info = {
|
||||
.model = 2007,
|
||||
.x_plate_ohms = 180,
|
||||
.get_pendown_state = tsc2007_get_pendown_state,
|
||||
};
|
||||
|
||||
#define TSC2007_IRQGPIO IMX_GPIO_NR(3, 2)
|
||||
static struct i2c_board_info eukrea_cpuimx35_i2c_devices[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("pcf8563", 0x51),
|
||||
|
|
|
@ -3247,18 +3247,14 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
|
|||
|
||||
/* 3430ES1-only hwmods */
|
||||
static __initdata struct omap_hwmod *omap3430es1_hwmods[] = {
|
||||
&omap3xxx_iva_hwmod,
|
||||
&omap3430es1_dss_core_hwmod,
|
||||
&omap3xxx_mailbox_hwmod,
|
||||
NULL
|
||||
};
|
||||
|
||||
/* 3430ES2+-only hwmods */
|
||||
static __initdata struct omap_hwmod *omap3430es2plus_hwmods[] = {
|
||||
&omap3xxx_iva_hwmod,
|
||||
&omap3xxx_dss_core_hwmod,
|
||||
&omap3xxx_usbhsotg_hwmod,
|
||||
&omap3xxx_mailbox_hwmod,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
|
@ -363,11 +363,13 @@ __v7_setup:
|
|||
orreq r10, r10, #1 << 6 @ set bit #6
|
||||
mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register
|
||||
#endif
|
||||
#ifdef CONFIG_ARM_ERRATA_751472
|
||||
cmp r6, #0x30 @ present prior to r3p0
|
||||
#if defined(CONFIG_ARM_ERRATA_751472) && defined(CONFIG_SMP)
|
||||
ALT_SMP(cmp r6, #0x30) @ present prior to r3p0
|
||||
ALT_UP_B(1f)
|
||||
mrclt p15, 0, r10, c15, c0, 1 @ read diagnostic register
|
||||
orrlt r10, r10, #1 << 11 @ set bit #11
|
||||
mcrlt p15, 0, r10, c15, c0, 1 @ write diagnostic register
|
||||
1:
|
||||
#endif
|
||||
|
||||
3: mov r10, #0
|
||||
|
|
|
@ -98,7 +98,7 @@ static int mxc_set_target(struct cpufreq_policy *policy,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int __init mxc_cpufreq_init(struct cpufreq_policy *policy)
|
||||
static int mxc_cpufreq_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
int ret;
|
||||
int i;
|
||||
|
|
|
@ -98,6 +98,7 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id)
|
|||
case MACH_TYPE_PCM043:
|
||||
case MACH_TYPE_LILLY1131:
|
||||
case MACH_TYPE_VPR200:
|
||||
case MACH_TYPE_EUKREA_CPUIMX35SD:
|
||||
uart_base = MX3X_UART1_BASE_ADDR;
|
||||
break;
|
||||
case MACH_TYPE_MAGX_ZN5:
|
||||
|
|
|
@ -77,6 +77,15 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
|
|||
do_div(c, period_ns);
|
||||
duty_cycles = c;
|
||||
|
||||
/*
|
||||
* according to imx pwm RM, the real period value should be
|
||||
* PERIOD value in PWMPR plus 2.
|
||||
*/
|
||||
if (period_cycles > 2)
|
||||
period_cycles -= 2;
|
||||
else
|
||||
period_cycles = 0;
|
||||
|
||||
writel(duty_cycles, pwm->mmio_base + MX3_PWMSAR);
|
||||
writel(period_cycles, pwm->mmio_base + MX3_PWMPR);
|
||||
|
||||
|
|
|
@ -384,12 +384,16 @@ void __init orion_gpio_init(int gpio_base, int ngpio,
|
|||
struct orion_gpio_chip *ochip;
|
||||
struct irq_chip_generic *gc;
|
||||
struct irq_chip_type *ct;
|
||||
char gc_label[16];
|
||||
|
||||
if (orion_gpio_chip_count == ARRAY_SIZE(orion_gpio_chips))
|
||||
return;
|
||||
|
||||
snprintf(gc_label, sizeof(gc_label), "orion_gpio%d",
|
||||
orion_gpio_chip_count);
|
||||
|
||||
ochip = orion_gpio_chips + orion_gpio_chip_count;
|
||||
ochip->chip.label = "orion_gpio";
|
||||
ochip->chip.label = kstrdup(gc_label, GFP_KERNEL);
|
||||
ochip->chip.request = orion_gpio_request;
|
||||
ochip->chip.direction_input = orion_gpio_direction_input;
|
||||
ochip->chip.get = orion_gpio_get;
|
||||
|
|
|
@ -202,14 +202,6 @@ extern int s3c_plltab_register(struct cpufreq_frequency_table *plls,
|
|||
extern struct s3c_cpufreq_config *s3c_cpufreq_getconfig(void);
|
||||
extern struct s3c_iotimings *s3c_cpufreq_getiotimings(void);
|
||||
|
||||
extern void s3c2410_iotiming_debugfs(struct seq_file *seq,
|
||||
struct s3c_cpufreq_config *cfg,
|
||||
union s3c_iobank *iob);
|
||||
|
||||
extern void s3c2412_iotiming_debugfs(struct seq_file *seq,
|
||||
struct s3c_cpufreq_config *cfg,
|
||||
union s3c_iobank *iob);
|
||||
|
||||
#ifdef CONFIG_CPU_FREQ_S3C24XX_DEBUGFS
|
||||
#define s3c_cpufreq_debugfs_call(x) x
|
||||
#else
|
||||
|
@ -226,6 +218,10 @@ extern void s3c2410_cpufreq_setrefresh(struct s3c_cpufreq_config *cfg);
|
|||
extern void s3c2410_set_fvco(struct s3c_cpufreq_config *cfg);
|
||||
|
||||
#ifdef CONFIG_S3C2410_IOTIMING
|
||||
extern void s3c2410_iotiming_debugfs(struct seq_file *seq,
|
||||
struct s3c_cpufreq_config *cfg,
|
||||
union s3c_iobank *iob);
|
||||
|
||||
extern int s3c2410_iotiming_calc(struct s3c_cpufreq_config *cfg,
|
||||
struct s3c_iotimings *iot);
|
||||
|
||||
|
@ -235,6 +231,7 @@ extern int s3c2410_iotiming_get(struct s3c_cpufreq_config *cfg,
|
|||
extern void s3c2410_iotiming_set(struct s3c_cpufreq_config *cfg,
|
||||
struct s3c_iotimings *iot);
|
||||
#else
|
||||
#define s3c2410_iotiming_debugfs NULL
|
||||
#define s3c2410_iotiming_calc NULL
|
||||
#define s3c2410_iotiming_get NULL
|
||||
#define s3c2410_iotiming_set NULL
|
||||
|
@ -242,8 +239,10 @@ extern void s3c2410_iotiming_set(struct s3c_cpufreq_config *cfg,
|
|||
|
||||
/* S3C2412 compatible routines */
|
||||
|
||||
extern int s3c2412_iotiming_get(struct s3c_cpufreq_config *cfg,
|
||||
struct s3c_iotimings *timings);
|
||||
#ifdef CONFIG_S3C2412_IOTIMING
|
||||
extern void s3c2412_iotiming_debugfs(struct seq_file *seq,
|
||||
struct s3c_cpufreq_config *cfg,
|
||||
union s3c_iobank *iob);
|
||||
|
||||
extern int s3c2412_iotiming_get(struct s3c_cpufreq_config *cfg,
|
||||
struct s3c_iotimings *timings);
|
||||
|
@ -253,6 +252,12 @@ extern int s3c2412_iotiming_calc(struct s3c_cpufreq_config *cfg,
|
|||
|
||||
extern void s3c2412_iotiming_set(struct s3c_cpufreq_config *cfg,
|
||||
struct s3c_iotimings *iot);
|
||||
#else
|
||||
#define s3c2412_iotiming_debugfs NULL
|
||||
#define s3c2412_iotiming_calc NULL
|
||||
#define s3c2412_iotiming_get NULL
|
||||
#define s3c2412_iotiming_set NULL
|
||||
#endif /* CONFIG_S3C2412_IOTIMING */
|
||||
|
||||
#ifdef CONFIG_CPU_FREQ_S3C24XX_DEBUG
|
||||
#define s3c_freq_dbg(x...) printk(KERN_INFO x)
|
||||
|
|
|
@ -124,7 +124,7 @@ config MV_XOR
|
|||
|
||||
config MX3_IPU
|
||||
bool "MX3x Image Processing Unit support"
|
||||
depends on ARCH_MX3
|
||||
depends on SOC_IMX31 || SOC_IMX35
|
||||
select DMA_ENGINE
|
||||
default y
|
||||
help
|
||||
|
@ -216,7 +216,7 @@ config PCH_DMA
|
|||
|
||||
config IMX_SDMA
|
||||
tristate "i.MX SDMA support"
|
||||
depends on ARCH_MX25 || ARCH_MX3 || ARCH_MX5
|
||||
depends on ARCH_MX25 || SOC_IMX31 || SOC_IMX35 || ARCH_MX5
|
||||
select DMA_ENGINE
|
||||
help
|
||||
Support the i.MX SDMA engine. This engine is integrated into
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Finger Sensing Pad PS/2 mouse driver.
|
||||
*
|
||||
* Copyright (C) 2005-2007 Asia Vital Components Co., Ltd.
|
||||
* Copyright (C) 2005-2010 Tai-hwa Liang, Sentelic Corporation.
|
||||
* Copyright (C) 2005-2011 Tai-hwa Liang, Sentelic Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -162,7 +162,7 @@ static int fsp_reg_write(struct psmouse *psmouse, int reg_addr, int reg_val)
|
|||
ps2_sendbyte(ps2dev, v, FSP_CMD_TIMEOUT2);
|
||||
|
||||
if (ps2_sendbyte(ps2dev, 0xf3, FSP_CMD_TIMEOUT) < 0)
|
||||
return -1;
|
||||
goto out;
|
||||
|
||||
if ((v = fsp_test_invert_cmd(reg_val)) != reg_val) {
|
||||
/* inversion is required */
|
||||
|
@ -261,7 +261,7 @@ static int fsp_page_reg_write(struct psmouse *psmouse, int reg_val)
|
|||
ps2_sendbyte(ps2dev, 0x88, FSP_CMD_TIMEOUT2);
|
||||
|
||||
if (ps2_sendbyte(ps2dev, 0xf3, FSP_CMD_TIMEOUT) < 0)
|
||||
return -1;
|
||||
goto out;
|
||||
|
||||
if ((v = fsp_test_invert_cmd(reg_val)) != reg_val) {
|
||||
ps2_sendbyte(ps2dev, 0x47, FSP_CMD_TIMEOUT2);
|
||||
|
@ -309,7 +309,7 @@ static int fsp_get_buttons(struct psmouse *psmouse, int *btn)
|
|||
};
|
||||
int val;
|
||||
|
||||
if (fsp_reg_read(psmouse, FSP_REG_TMOD_STATUS1, &val) == -1)
|
||||
if (fsp_reg_read(psmouse, FSP_REG_TMOD_STATUS, &val) == -1)
|
||||
return -EIO;
|
||||
|
||||
*btn = buttons[(val & 0x30) >> 4];
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Finger Sensing Pad PS/2 mouse driver.
|
||||
*
|
||||
* Copyright (C) 2005-2007 Asia Vital Components Co., Ltd.
|
||||
* Copyright (C) 2005-2009 Tai-hwa Liang, Sentelic Corporation.
|
||||
* Copyright (C) 2005-2011 Tai-hwa Liang, Sentelic Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -33,6 +33,7 @@
|
|||
/* Finger-sensing Pad control registers */
|
||||
#define FSP_REG_SYSCTL1 0x10
|
||||
#define FSP_BIT_EN_REG_CLK BIT(5)
|
||||
#define FSP_REG_TMOD_STATUS 0x20
|
||||
#define FSP_REG_OPC_QDOWN 0x31
|
||||
#define FSP_BIT_EN_OPC_TAG BIT(7)
|
||||
#define FSP_REG_OPTZ_XLO 0x34
|
||||
|
|
|
@ -957,7 +957,7 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev)
|
|||
ret = -EIO;
|
||||
goto out;
|
||||
}
|
||||
alt = ep_tb[--alt_idx].alt;
|
||||
gspca_dev->alt = ep_tb[--alt_idx].alt;
|
||||
}
|
||||
}
|
||||
out:
|
||||
|
|
|
@ -675,7 +675,8 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
|
|||
unsigned int status)
|
||||
{
|
||||
/* First check for errors */
|
||||
if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|MCI_RXOVERRUN)) {
|
||||
if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_STARTBITERR|
|
||||
MCI_TXUNDERRUN|MCI_RXOVERRUN)) {
|
||||
u32 remain, success;
|
||||
|
||||
/* Terminate the DMA transfer */
|
||||
|
@ -754,8 +755,12 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd,
|
|||
}
|
||||
|
||||
if (!cmd->data || cmd->error) {
|
||||
if (host->data)
|
||||
if (host->data) {
|
||||
/* Terminate the DMA transfer */
|
||||
if (dma_inprogress(host))
|
||||
mmci_dma_data_error(host);
|
||||
mmci_stop_data(host);
|
||||
}
|
||||
mmci_request_end(host, cmd->mrq);
|
||||
} else if (!(cmd->data->flags & MMC_DATA_READ)) {
|
||||
mmci_start_data(host, cmd->data);
|
||||
|
@ -955,8 +960,9 @@ static irqreturn_t mmci_irq(int irq, void *dev_id)
|
|||
dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status);
|
||||
|
||||
data = host->data;
|
||||
if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_TXUNDERRUN|
|
||||
MCI_RXOVERRUN|MCI_DATAEND|MCI_DATABLOCKEND) && data)
|
||||
if (status & (MCI_DATACRCFAIL|MCI_DATATIMEOUT|MCI_STARTBITERR|
|
||||
MCI_TXUNDERRUN|MCI_RXOVERRUN|MCI_DATAEND|
|
||||
MCI_DATABLOCKEND) && data)
|
||||
mmci_data_irq(host, data, status);
|
||||
|
||||
cmd = host->cmd;
|
||||
|
|
|
@ -2606,6 +2606,9 @@ static int skge_up(struct net_device *dev)
|
|||
spin_unlock_irq(&hw->hw_lock);
|
||||
|
||||
napi_enable(&skge->napi);
|
||||
|
||||
skge_set_multicast(dev);
|
||||
|
||||
return 0;
|
||||
|
||||
free_tx_ring:
|
||||
|
|
|
@ -144,6 +144,7 @@ void mlx4_en_destroy_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq)
|
|||
mlx4_free_hwq_res(mdev->dev, &cq->wqres, cq->buf_size);
|
||||
if (priv->mdev->dev->caps.comp_pool && cq->vector)
|
||||
mlx4_release_eq(priv->mdev->dev, cq->vector);
|
||||
cq->vector = 0;
|
||||
cq->buf_size = 0;
|
||||
cq->buf = NULL;
|
||||
}
|
||||
|
|
|
@ -314,7 +314,7 @@ static const struct of_dev_auxdata *of_dev_lookup(const struct of_dev_auxdata *l
|
|||
if (!lookup)
|
||||
return NULL;
|
||||
|
||||
for(; lookup->name != NULL; lookup++) {
|
||||
for(; lookup->compatible != NULL; lookup++) {
|
||||
if (!of_device_is_compatible(np, lookup->compatible))
|
||||
continue;
|
||||
if (of_address_to_resource(np, 0, &res))
|
||||
|
|
|
@ -76,8 +76,6 @@ static int irq;
|
|||
static void __iomem *virtbase;
|
||||
static unsigned long coh901327_users;
|
||||
static unsigned long boot_status;
|
||||
static u16 wdogenablestore;
|
||||
static u16 irqmaskstore;
|
||||
static struct device *parent;
|
||||
|
||||
/*
|
||||
|
@ -461,6 +459,10 @@ static int __init coh901327_probe(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
static u16 wdogenablestore;
|
||||
static u16 irqmaskstore;
|
||||
|
||||
static int coh901327_suspend(struct platform_device *pdev, pm_message_t state)
|
||||
{
|
||||
irqmaskstore = readw(virtbase + U300_WDOG_IMR) & 0x0001U;
|
||||
|
|
|
@ -231,6 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry,
|
|||
|
||||
cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE;
|
||||
|
||||
set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE));
|
||||
asminline_call(&cmn_regs, bios32_entrypoint);
|
||||
|
||||
if (cmn_regs.u1.ral != 0) {
|
||||
|
@ -248,8 +249,10 @@ static int __devinit cru_detect(unsigned long map_entry,
|
|||
if ((physical_bios_base + physical_bios_offset)) {
|
||||
cru_rom_addr =
|
||||
ioremap(cru_physical_address, cru_length);
|
||||
if (cru_rom_addr)
|
||||
if (cru_rom_addr) {
|
||||
set_memory_x((unsigned long)cru_rom_addr, cru_length);
|
||||
retval = 0;
|
||||
}
|
||||
}
|
||||
|
||||
printk(KERN_DEBUG "hpwdt: CRU Base Address: 0x%lx\n",
|
||||
|
|
|
@ -384,10 +384,10 @@ MODULE_PARM_DESC(nowayout,
|
|||
"Watchdog cannot be stopped once started (default="
|
||||
__MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
|
||||
|
||||
static int turn_SMI_watchdog_clear_off = 0;
|
||||
static int turn_SMI_watchdog_clear_off = 1;
|
||||
module_param(turn_SMI_watchdog_clear_off, int, 0);
|
||||
MODULE_PARM_DESC(turn_SMI_watchdog_clear_off,
|
||||
"Turn off SMI clearing watchdog (default=0)");
|
||||
"Turn off SMI clearing watchdog (depends on TCO-version)(default=1)");
|
||||
|
||||
/*
|
||||
* Some TCO specific functions
|
||||
|
@ -813,7 +813,7 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
|
|||
ret = -EIO;
|
||||
goto out_unmap;
|
||||
}
|
||||
if (turn_SMI_watchdog_clear_off) {
|
||||
if (turn_SMI_watchdog_clear_off >= iTCO_wdt_private.iTCO_version) {
|
||||
/* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
|
||||
val32 = inl(SMI_EN);
|
||||
val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
|
||||
|
|
|
@ -351,7 +351,7 @@ static int __devexit sp805_wdt_remove(struct amba_device *adev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct amba_id sp805_wdt_ids[] __initdata = {
|
||||
static struct amba_id sp805_wdt_ids[] = {
|
||||
{
|
||||
.id = 0x00141805,
|
||||
.mask = 0x00ffffff,
|
||||
|
|
|
@ -1094,42 +1094,19 @@ static int ceph_snapdir_d_revalidate(struct dentry *dentry,
|
|||
/*
|
||||
* Set/clear/test dir complete flag on the dir's dentry.
|
||||
*/
|
||||
static struct dentry * __d_find_any_alias(struct inode *inode)
|
||||
{
|
||||
struct dentry *alias;
|
||||
|
||||
if (list_empty(&inode->i_dentry))
|
||||
return NULL;
|
||||
alias = list_first_entry(&inode->i_dentry, struct dentry, d_alias);
|
||||
return alias;
|
||||
}
|
||||
|
||||
void ceph_dir_set_complete(struct inode *inode)
|
||||
{
|
||||
struct dentry *dentry = __d_find_any_alias(inode);
|
||||
|
||||
if (dentry && ceph_dentry(dentry)) {
|
||||
dout(" marking %p (%p) complete\n", inode, dentry);
|
||||
set_bit(CEPH_D_COMPLETE, &ceph_dentry(dentry)->flags);
|
||||
}
|
||||
/* not yet implemented */
|
||||
}
|
||||
|
||||
void ceph_dir_clear_complete(struct inode *inode)
|
||||
{
|
||||
struct dentry *dentry = __d_find_any_alias(inode);
|
||||
|
||||
if (dentry && ceph_dentry(dentry)) {
|
||||
dout(" marking %p (%p) NOT complete\n", inode, dentry);
|
||||
clear_bit(CEPH_D_COMPLETE, &ceph_dentry(dentry)->flags);
|
||||
}
|
||||
/* not yet implemented */
|
||||
}
|
||||
|
||||
bool ceph_dir_test_complete(struct inode *inode)
|
||||
{
|
||||
struct dentry *dentry = __d_find_any_alias(inode);
|
||||
|
||||
if (dentry && ceph_dentry(dentry))
|
||||
return test_bit(CEPH_D_COMPLETE, &ceph_dentry(dentry)->flags);
|
||||
/* not yet implemented */
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1207,7 +1207,7 @@ extern void ip_vs_control_cleanup(void);
|
|||
extern struct ip_vs_dest *
|
||||
ip_vs_find_dest(struct net *net, int af, const union nf_inet_addr *daddr,
|
||||
__be16 dport, const union nf_inet_addr *vaddr, __be16 vport,
|
||||
__u16 protocol, __u32 fwmark);
|
||||
__u16 protocol, __u32 fwmark, __u32 flags);
|
||||
extern struct ip_vs_dest *ip_vs_try_bind_dest(struct ip_vs_conn *cp);
|
||||
|
||||
|
||||
|
|
|
@ -314,17 +314,29 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
|
|||
#endif
|
||||
|
||||
lock_page(page_head);
|
||||
|
||||
/*
|
||||
* If page_head->mapping is NULL, then it cannot be a PageAnon
|
||||
* page; but it might be the ZERO_PAGE or in the gate area or
|
||||
* in a special mapping (all cases which we are happy to fail);
|
||||
* or it may have been a good file page when get_user_pages_fast
|
||||
* found it, but truncated or holepunched or subjected to
|
||||
* invalidate_complete_page2 before we got the page lock (also
|
||||
* cases which we are happy to fail). And we hold a reference,
|
||||
* so refcount care in invalidate_complete_page's remove_mapping
|
||||
* prevents drop_caches from setting mapping to NULL beneath us.
|
||||
*
|
||||
* The case we do have to guard against is when memory pressure made
|
||||
* shmem_writepage move it from filecache to swapcache beneath us:
|
||||
* an unlikely race, but we do need to retry for page_head->mapping.
|
||||
*/
|
||||
if (!page_head->mapping) {
|
||||
int shmem_swizzled = PageSwapCache(page_head);
|
||||
unlock_page(page_head);
|
||||
put_page(page_head);
|
||||
/*
|
||||
* ZERO_PAGE pages don't have a mapping. Avoid a busy loop
|
||||
* trying to find one. RW mapping would have COW'd (and thus
|
||||
* have a mapping) so this page is RO and won't ever change.
|
||||
*/
|
||||
if ((page_head == ZERO_PAGE(address)))
|
||||
return -EFAULT;
|
||||
goto again;
|
||||
if (shmem_swizzled)
|
||||
goto again;
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -387,7 +387,6 @@ void clockevents_exchange_device(struct clock_event_device *old,
|
|||
* released list and do a notify add later.
|
||||
*/
|
||||
if (old) {
|
||||
old->event_handler = clockevents_handle_noop;
|
||||
clockevents_set_mode(old, CLOCK_EVT_MODE_UNUSED);
|
||||
list_del(&old->list);
|
||||
list_add(&old->list, &clockevents_released);
|
||||
|
|
|
@ -616,7 +616,7 @@ struct ip_vs_dest *ip_vs_try_bind_dest(struct ip_vs_conn *cp)
|
|||
if ((cp) && (!cp->dest)) {
|
||||
dest = ip_vs_find_dest(ip_vs_conn_net(cp), cp->af, &cp->daddr,
|
||||
cp->dport, &cp->vaddr, cp->vport,
|
||||
cp->protocol, cp->fwmark);
|
||||
cp->protocol, cp->fwmark, cp->flags);
|
||||
ip_vs_bind_dest(cp, dest);
|
||||
return dest;
|
||||
} else
|
||||
|
|
|
@ -619,15 +619,21 @@ struct ip_vs_dest *ip_vs_find_dest(struct net *net, int af,
|
|||
const union nf_inet_addr *daddr,
|
||||
__be16 dport,
|
||||
const union nf_inet_addr *vaddr,
|
||||
__be16 vport, __u16 protocol, __u32 fwmark)
|
||||
__be16 vport, __u16 protocol, __u32 fwmark,
|
||||
__u32 flags)
|
||||
{
|
||||
struct ip_vs_dest *dest;
|
||||
struct ip_vs_service *svc;
|
||||
__be16 port = dport;
|
||||
|
||||
svc = ip_vs_service_get(net, af, fwmark, protocol, vaddr, vport);
|
||||
if (!svc)
|
||||
return NULL;
|
||||
dest = ip_vs_lookup_dest(svc, daddr, dport);
|
||||
if (fwmark && (flags & IP_VS_CONN_F_FWD_MASK) != IP_VS_CONN_F_MASQ)
|
||||
port = 0;
|
||||
dest = ip_vs_lookup_dest(svc, daddr, port);
|
||||
if (!dest)
|
||||
dest = ip_vs_lookup_dest(svc, daddr, port ^ dport);
|
||||
if (dest)
|
||||
atomic_inc(&dest->refcnt);
|
||||
ip_vs_service_put(svc);
|
||||
|
|
|
@ -740,7 +740,7 @@ static void ip_vs_proc_conn(struct net *net, struct ip_vs_conn_param *param,
|
|||
* but still handled.
|
||||
*/
|
||||
dest = ip_vs_find_dest(net, type, daddr, dport, param->vaddr,
|
||||
param->vport, protocol, fwmark);
|
||||
param->vport, protocol, fwmark, flags);
|
||||
|
||||
/* Set the approprite ativity flag */
|
||||
if (protocol == IPPROTO_TCP) {
|
||||
|
|
|
@ -135,7 +135,7 @@ ctnetlink_dump_status(struct sk_buff *skb, const struct nf_conn *ct)
|
|||
static inline int
|
||||
ctnetlink_dump_timeout(struct sk_buff *skb, const struct nf_conn *ct)
|
||||
{
|
||||
long timeout = (ct->timeout.expires - jiffies) / HZ;
|
||||
long timeout = ((long)ct->timeout.expires - (long)jiffies) / HZ;
|
||||
|
||||
if (timeout < 0)
|
||||
timeout = 0;
|
||||
|
@ -1650,7 +1650,7 @@ ctnetlink_exp_dump_expect(struct sk_buff *skb,
|
|||
const struct nf_conntrack_expect *exp)
|
||||
{
|
||||
struct nf_conn *master = exp->master;
|
||||
long timeout = (exp->timeout.expires - jiffies) / HZ;
|
||||
long timeout = ((long)exp->timeout.expires - (long)jiffies) / HZ;
|
||||
struct nf_conn_help *help;
|
||||
|
||||
if (timeout < 0)
|
||||
|
|
|
@ -235,6 +235,7 @@ static int wm8776_hw_params(struct snd_pcm_substream *substream,
|
|||
switch (snd_pcm_format_width(params_format(params))) {
|
||||
case 16:
|
||||
iface = 0;
|
||||
break;
|
||||
case 20:
|
||||
iface = 0x10;
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue
Block a user