mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-19 19:14:01 +08:00
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: arch/powerpc: use printk_ratelimited instead of printk_ratelimit powerpc/rtas-rtc: remove sideeffects of printk_ratelimit powerpc/pseries: remove duplicate SCSI_BNX2_ISCSI in pseries_defconfig powerpc/e500: fix breakage with fsl_rio_mcheck_exception powerpc/p1022ds: fix audio-related properties in the device tree powerpc/85xx: fix NAND_CMD_READID read bytes number
This commit is contained in:
commit
78a3cc38f7
@ -209,8 +209,10 @@
|
|||||||
wm8776:codec@1a {
|
wm8776:codec@1a {
|
||||||
compatible = "wlf,wm8776";
|
compatible = "wlf,wm8776";
|
||||||
reg = <0x1a>;
|
reg = <0x1a>;
|
||||||
/* MCLK source is a stand-alone oscillator */
|
/*
|
||||||
clock-frequency = <12288000>;
|
* clock-frequency will be set by U-Boot if
|
||||||
|
* the clock is enabled.
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -280,7 +282,8 @@
|
|||||||
codec-handle = <&wm8776>;
|
codec-handle = <&wm8776>;
|
||||||
fsl,playback-dma = <&dma00>;
|
fsl,playback-dma = <&dma00>;
|
||||||
fsl,capture-dma = <&dma01>;
|
fsl,capture-dma = <&dma01>;
|
||||||
fsl,fifo-depth = <16>;
|
fsl,fifo-depth = <15>;
|
||||||
|
fsl,ssi-asynchronous;
|
||||||
};
|
};
|
||||||
|
|
||||||
dma@c300 {
|
dma@c300 {
|
||||||
|
@ -148,7 +148,6 @@ CONFIG_SCSI_SAS_ATTRS=m
|
|||||||
CONFIG_SCSI_CXGB3_ISCSI=m
|
CONFIG_SCSI_CXGB3_ISCSI=m
|
||||||
CONFIG_SCSI_CXGB4_ISCSI=m
|
CONFIG_SCSI_CXGB4_ISCSI=m
|
||||||
CONFIG_SCSI_BNX2_ISCSI=m
|
CONFIG_SCSI_BNX2_ISCSI=m
|
||||||
CONFIG_SCSI_BNX2_ISCSI=m
|
|
||||||
CONFIG_BE2ISCSI=m
|
CONFIG_BE2ISCSI=m
|
||||||
CONFIG_SCSI_IBMVSCSI=y
|
CONFIG_SCSI_IBMVSCSI=y
|
||||||
CONFIG_SCSI_IBMVFC=m
|
CONFIG_SCSI_IBMVFC=m
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/rtc.h>
|
#include <linux/rtc.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
#include <linux/ratelimit.h>
|
||||||
#include <asm/prom.h>
|
#include <asm/prom.h>
|
||||||
#include <asm/rtas.h>
|
#include <asm/rtas.h>
|
||||||
#include <asm/time.h>
|
#include <asm/time.h>
|
||||||
@ -29,9 +30,10 @@ unsigned long __init rtas_get_boot_time(void)
|
|||||||
}
|
}
|
||||||
} while (wait_time && (get_tb() < max_wait_tb));
|
} while (wait_time && (get_tb() < max_wait_tb));
|
||||||
|
|
||||||
if (error != 0 && printk_ratelimit()) {
|
if (error != 0) {
|
||||||
printk(KERN_WARNING "error: reading the clock failed (%d)\n",
|
printk_ratelimited(KERN_WARNING
|
||||||
error);
|
"error: reading the clock failed (%d)\n",
|
||||||
|
error);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,19 +57,21 @@ void rtas_get_rtc_time(struct rtc_time *rtc_tm)
|
|||||||
|
|
||||||
wait_time = rtas_busy_delay_time(error);
|
wait_time = rtas_busy_delay_time(error);
|
||||||
if (wait_time) {
|
if (wait_time) {
|
||||||
if (in_interrupt() && printk_ratelimit()) {
|
if (in_interrupt()) {
|
||||||
memset(rtc_tm, 0, sizeof(struct rtc_time));
|
memset(rtc_tm, 0, sizeof(struct rtc_time));
|
||||||
printk(KERN_WARNING "error: reading clock"
|
printk_ratelimited(KERN_WARNING
|
||||||
" would delay interrupt\n");
|
"error: reading clock "
|
||||||
|
"would delay interrupt\n");
|
||||||
return; /* delay not allowed */
|
return; /* delay not allowed */
|
||||||
}
|
}
|
||||||
msleep(wait_time);
|
msleep(wait_time);
|
||||||
}
|
}
|
||||||
} while (wait_time && (get_tb() < max_wait_tb));
|
} while (wait_time && (get_tb() < max_wait_tb));
|
||||||
|
|
||||||
if (error != 0 && printk_ratelimit()) {
|
if (error != 0) {
|
||||||
printk(KERN_WARNING "error: reading the clock failed (%d)\n",
|
printk_ratelimited(KERN_WARNING
|
||||||
error);
|
"error: reading the clock failed (%d)\n",
|
||||||
|
error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,9 +103,10 @@ int rtas_set_rtc_time(struct rtc_time *tm)
|
|||||||
}
|
}
|
||||||
} while (wait_time && (get_tb() < max_wait_tb));
|
} while (wait_time && (get_tb() < max_wait_tb));
|
||||||
|
|
||||||
if (error != 0 && printk_ratelimit())
|
if (error != 0)
|
||||||
printk(KERN_WARNING "error: setting the clock failed (%d)\n",
|
printk_ratelimited(KERN_WARNING
|
||||||
error);
|
"error: setting the clock failed (%d)\n",
|
||||||
|
error);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/elf.h>
|
#include <linux/elf.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
|
#include <linux/ratelimit.h>
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
#include <linux/syscalls.h>
|
#include <linux/syscalls.h>
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
@ -892,11 +893,12 @@ badframe:
|
|||||||
printk("badframe in handle_rt_signal, regs=%p frame=%p newsp=%lx\n",
|
printk("badframe in handle_rt_signal, regs=%p frame=%p newsp=%lx\n",
|
||||||
regs, frame, newsp);
|
regs, frame, newsp);
|
||||||
#endif
|
#endif
|
||||||
if (show_unhandled_signals && printk_ratelimit())
|
if (show_unhandled_signals)
|
||||||
printk(KERN_INFO "%s[%d]: bad frame in handle_rt_signal32: "
|
printk_ratelimited(KERN_INFO
|
||||||
"%p nip %08lx lr %08lx\n",
|
"%s[%d]: bad frame in handle_rt_signal32: "
|
||||||
current->comm, current->pid,
|
"%p nip %08lx lr %08lx\n",
|
||||||
addr, regs->nip, regs->link);
|
current->comm, current->pid,
|
||||||
|
addr, regs->nip, regs->link);
|
||||||
|
|
||||||
force_sigsegv(sig, current);
|
force_sigsegv(sig, current);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1058,11 +1060,12 @@ long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
bad:
|
bad:
|
||||||
if (show_unhandled_signals && printk_ratelimit())
|
if (show_unhandled_signals)
|
||||||
printk(KERN_INFO "%s[%d]: bad frame in sys_rt_sigreturn: "
|
printk_ratelimited(KERN_INFO
|
||||||
"%p nip %08lx lr %08lx\n",
|
"%s[%d]: bad frame in sys_rt_sigreturn: "
|
||||||
current->comm, current->pid,
|
"%p nip %08lx lr %08lx\n",
|
||||||
rt_sf, regs->nip, regs->link);
|
current->comm, current->pid,
|
||||||
|
rt_sf, regs->nip, regs->link);
|
||||||
|
|
||||||
force_sig(SIGSEGV, current);
|
force_sig(SIGSEGV, current);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1149,12 +1152,12 @@ int sys_debug_setcontext(struct ucontext __user *ctx,
|
|||||||
* We kill the task with a SIGSEGV in this situation.
|
* We kill the task with a SIGSEGV in this situation.
|
||||||
*/
|
*/
|
||||||
if (do_setcontext(ctx, regs, 1)) {
|
if (do_setcontext(ctx, regs, 1)) {
|
||||||
if (show_unhandled_signals && printk_ratelimit())
|
if (show_unhandled_signals)
|
||||||
printk(KERN_INFO "%s[%d]: bad frame in "
|
printk_ratelimited(KERN_INFO "%s[%d]: bad frame in "
|
||||||
"sys_debug_setcontext: %p nip %08lx "
|
"sys_debug_setcontext: %p nip %08lx "
|
||||||
"lr %08lx\n",
|
"lr %08lx\n",
|
||||||
current->comm, current->pid,
|
current->comm, current->pid,
|
||||||
ctx, regs->nip, regs->link);
|
ctx, regs->nip, regs->link);
|
||||||
|
|
||||||
force_sig(SIGSEGV, current);
|
force_sig(SIGSEGV, current);
|
||||||
goto out;
|
goto out;
|
||||||
@ -1236,11 +1239,12 @@ badframe:
|
|||||||
printk("badframe in handle_signal, regs=%p frame=%p newsp=%lx\n",
|
printk("badframe in handle_signal, regs=%p frame=%p newsp=%lx\n",
|
||||||
regs, frame, newsp);
|
regs, frame, newsp);
|
||||||
#endif
|
#endif
|
||||||
if (show_unhandled_signals && printk_ratelimit())
|
if (show_unhandled_signals)
|
||||||
printk(KERN_INFO "%s[%d]: bad frame in handle_signal32: "
|
printk_ratelimited(KERN_INFO
|
||||||
"%p nip %08lx lr %08lx\n",
|
"%s[%d]: bad frame in handle_signal32: "
|
||||||
current->comm, current->pid,
|
"%p nip %08lx lr %08lx\n",
|
||||||
frame, regs->nip, regs->link);
|
current->comm, current->pid,
|
||||||
|
frame, regs->nip, regs->link);
|
||||||
|
|
||||||
force_sigsegv(sig, current);
|
force_sigsegv(sig, current);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1288,11 +1292,12 @@ long sys_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
badframe:
|
badframe:
|
||||||
if (show_unhandled_signals && printk_ratelimit())
|
if (show_unhandled_signals)
|
||||||
printk(KERN_INFO "%s[%d]: bad frame in sys_sigreturn: "
|
printk_ratelimited(KERN_INFO
|
||||||
"%p nip %08lx lr %08lx\n",
|
"%s[%d]: bad frame in sys_sigreturn: "
|
||||||
current->comm, current->pid,
|
"%p nip %08lx lr %08lx\n",
|
||||||
addr, regs->nip, regs->link);
|
current->comm, current->pid,
|
||||||
|
addr, regs->nip, regs->link);
|
||||||
|
|
||||||
force_sig(SIGSEGV, current);
|
force_sig(SIGSEGV, current);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <linux/elf.h>
|
#include <linux/elf.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
#include <linux/ratelimit.h>
|
||||||
|
|
||||||
#include <asm/sigcontext.h>
|
#include <asm/sigcontext.h>
|
||||||
#include <asm/ucontext.h>
|
#include <asm/ucontext.h>
|
||||||
@ -380,10 +381,10 @@ badframe:
|
|||||||
printk("badframe in sys_rt_sigreturn, regs=%p uc=%p &uc->uc_mcontext=%p\n",
|
printk("badframe in sys_rt_sigreturn, regs=%p uc=%p &uc->uc_mcontext=%p\n",
|
||||||
regs, uc, &uc->uc_mcontext);
|
regs, uc, &uc->uc_mcontext);
|
||||||
#endif
|
#endif
|
||||||
if (show_unhandled_signals && printk_ratelimit())
|
if (show_unhandled_signals)
|
||||||
printk(regs->msr & MSR_64BIT ? fmt64 : fmt32,
|
printk_ratelimited(regs->msr & MSR_64BIT ? fmt64 : fmt32,
|
||||||
current->comm, current->pid, "rt_sigreturn",
|
current->comm, current->pid, "rt_sigreturn",
|
||||||
(long)uc, regs->nip, regs->link);
|
(long)uc, regs->nip, regs->link);
|
||||||
|
|
||||||
force_sig(SIGSEGV, current);
|
force_sig(SIGSEGV, current);
|
||||||
return 0;
|
return 0;
|
||||||
@ -468,10 +469,10 @@ badframe:
|
|||||||
printk("badframe in setup_rt_frame, regs=%p frame=%p newsp=%lx\n",
|
printk("badframe in setup_rt_frame, regs=%p frame=%p newsp=%lx\n",
|
||||||
regs, frame, newsp);
|
regs, frame, newsp);
|
||||||
#endif
|
#endif
|
||||||
if (show_unhandled_signals && printk_ratelimit())
|
if (show_unhandled_signals)
|
||||||
printk(regs->msr & MSR_64BIT ? fmt64 : fmt32,
|
printk_ratelimited(regs->msr & MSR_64BIT ? fmt64 : fmt32,
|
||||||
current->comm, current->pid, "setup_rt_frame",
|
current->comm, current->pid, "setup_rt_frame",
|
||||||
(long)frame, regs->nip, regs->link);
|
(long)frame, regs->nip, regs->link);
|
||||||
|
|
||||||
force_sigsegv(signr, current);
|
force_sigsegv(signr, current);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include <linux/bug.h>
|
#include <linux/bug.h>
|
||||||
#include <linux/kdebug.h>
|
#include <linux/kdebug.h>
|
||||||
#include <linux/debugfs.h>
|
#include <linux/debugfs.h>
|
||||||
|
#include <linux/ratelimit.h>
|
||||||
|
|
||||||
#include <asm/emulated_ops.h>
|
#include <asm/emulated_ops.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
@ -197,12 +198,11 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)
|
|||||||
if (die("Exception in kernel mode", regs, signr))
|
if (die("Exception in kernel mode", regs, signr))
|
||||||
return;
|
return;
|
||||||
} else if (show_unhandled_signals &&
|
} else if (show_unhandled_signals &&
|
||||||
unhandled_signal(current, signr) &&
|
unhandled_signal(current, signr)) {
|
||||||
printk_ratelimit()) {
|
printk_ratelimited(regs->msr & MSR_64BIT ? fmt64 : fmt32,
|
||||||
printk(regs->msr & MSR_64BIT ? fmt64 : fmt32,
|
current->comm, current->pid, signr,
|
||||||
current->comm, current->pid, signr,
|
addr, regs->nip, regs->link, code);
|
||||||
addr, regs->nip, regs->link, code);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
memset(&info, 0, sizeof(info));
|
memset(&info, 0, sizeof(info));
|
||||||
info.si_signo = signr;
|
info.si_signo = signr;
|
||||||
@ -425,7 +425,7 @@ int machine_check_e500mc(struct pt_regs *regs)
|
|||||||
unsigned long reason = mcsr;
|
unsigned long reason = mcsr;
|
||||||
int recoverable = 1;
|
int recoverable = 1;
|
||||||
|
|
||||||
if (reason & MCSR_BUS_RBERR) {
|
if (reason & MCSR_LD) {
|
||||||
recoverable = fsl_rio_mcheck_exception(regs);
|
recoverable = fsl_rio_mcheck_exception(regs);
|
||||||
if (recoverable == 1)
|
if (recoverable == 1)
|
||||||
goto silent_out;
|
goto silent_out;
|
||||||
@ -1342,9 +1342,8 @@ void altivec_assist_exception(struct pt_regs *regs)
|
|||||||
} else {
|
} else {
|
||||||
/* didn't recognize the instruction */
|
/* didn't recognize the instruction */
|
||||||
/* XXX quick hack for now: set the non-Java bit in the VSCR */
|
/* XXX quick hack for now: set the non-Java bit in the VSCR */
|
||||||
if (printk_ratelimit())
|
printk_ratelimited(KERN_ERR "Unrecognized altivec instruction "
|
||||||
printk(KERN_ERR "Unrecognized altivec instruction "
|
"in %s at %lx\n", current->comm, regs->nip);
|
||||||
"in %s at %lx\n", current->comm, regs->nip);
|
|
||||||
current->thread.vscr.u[3] |= 0x10000;
|
current->thread.vscr.u[3] |= 0x10000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1548,9 +1547,8 @@ u32 ppc_warn_emulated;
|
|||||||
|
|
||||||
void ppc_warn_emulated_print(const char *type)
|
void ppc_warn_emulated_print(const char *type)
|
||||||
{
|
{
|
||||||
if (printk_ratelimit())
|
pr_warn_ratelimited("%s used emulated %s instruction\n", current->comm,
|
||||||
pr_warning("%s used emulated %s instruction\n", current->comm,
|
type);
|
||||||
type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init ppc_warn_emulated_init(void)
|
static int __init ppc_warn_emulated_init(void)
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include <linux/kdebug.h>
|
#include <linux/kdebug.h>
|
||||||
#include <linux/perf_event.h>
|
#include <linux/perf_event.h>
|
||||||
#include <linux/magic.h>
|
#include <linux/magic.h>
|
||||||
|
#include <linux/ratelimit.h>
|
||||||
|
|
||||||
#include <asm/firmware.h>
|
#include <asm/firmware.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
@ -346,11 +347,10 @@ bad_area_nosemaphore:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_exec && (error_code & DSISR_PROTFAULT)
|
if (is_exec && (error_code & DSISR_PROTFAULT))
|
||||||
&& printk_ratelimit())
|
printk_ratelimited(KERN_CRIT "kernel tried to execute NX-protected"
|
||||||
printk(KERN_CRIT "kernel tried to execute NX-protected"
|
" page (%lx) - exploit attempt? (uid: %d)\n",
|
||||||
" page (%lx) - exploit attempt? (uid: %d)\n",
|
address, current_uid());
|
||||||
address, current_uid());
|
|
||||||
|
|
||||||
return SIGSEGV;
|
return SIGSEGV;
|
||||||
|
|
||||||
|
@ -283,23 +283,24 @@ static void __iomem *rio_regs_win;
|
|||||||
#ifdef CONFIG_E500
|
#ifdef CONFIG_E500
|
||||||
int fsl_rio_mcheck_exception(struct pt_regs *regs)
|
int fsl_rio_mcheck_exception(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
const struct exception_table_entry *entry = NULL;
|
const struct exception_table_entry *entry;
|
||||||
unsigned long reason = mfspr(SPRN_MCSR);
|
unsigned long reason;
|
||||||
|
|
||||||
if (reason & MCSR_BUS_RBERR) {
|
if (!rio_regs_win)
|
||||||
reason = in_be32((u32 *)(rio_regs_win + RIO_LTLEDCSR));
|
return 0;
|
||||||
if (reason & (RIO_LTLEDCSR_IER | RIO_LTLEDCSR_PRT)) {
|
|
||||||
/* Check if we are prepared to handle this fault */
|
reason = in_be32((u32 *)(rio_regs_win + RIO_LTLEDCSR));
|
||||||
entry = search_exception_tables(regs->nip);
|
if (reason & (RIO_LTLEDCSR_IER | RIO_LTLEDCSR_PRT)) {
|
||||||
if (entry) {
|
/* Check if we are prepared to handle this fault */
|
||||||
pr_debug("RIO: %s - MC Exception handled\n",
|
entry = search_exception_tables(regs->nip);
|
||||||
__func__);
|
if (entry) {
|
||||||
out_be32((u32 *)(rio_regs_win + RIO_LTLEDCSR),
|
pr_debug("RIO: %s - MC Exception handled\n",
|
||||||
0);
|
__func__);
|
||||||
regs->msr |= MSR_RI;
|
out_be32((u32 *)(rio_regs_win + RIO_LTLEDCSR),
|
||||||
regs->nip = entry->fixup;
|
0);
|
||||||
return 1;
|
regs->msr |= MSR_RI;
|
||||||
}
|
regs->nip = entry->fixup;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/syscore_ops.h>
|
#include <linux/syscore_ops.h>
|
||||||
|
#include <linux/ratelimit.h>
|
||||||
|
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/signal.h>
|
#include <asm/signal.h>
|
||||||
@ -1648,9 +1649,8 @@ static unsigned int _mpic_get_one_irq(struct mpic *mpic, int reg)
|
|||||||
return NO_IRQ;
|
return NO_IRQ;
|
||||||
}
|
}
|
||||||
if (unlikely(mpic->protected && test_bit(src, mpic->protected))) {
|
if (unlikely(mpic->protected && test_bit(src, mpic->protected))) {
|
||||||
if (printk_ratelimit())
|
printk_ratelimited(KERN_WARNING "%s: Got protected source %d !\n",
|
||||||
printk(KERN_WARNING "%s: Got protected source %d !\n",
|
mpic->name, (int)src);
|
||||||
mpic->name, (int)src);
|
|
||||||
mpic_eoi(mpic);
|
mpic_eoi(mpic);
|
||||||
return NO_IRQ;
|
return NO_IRQ;
|
||||||
}
|
}
|
||||||
@ -1688,9 +1688,8 @@ unsigned int mpic_get_coreint_irq(void)
|
|||||||
return NO_IRQ;
|
return NO_IRQ;
|
||||||
}
|
}
|
||||||
if (unlikely(mpic->protected && test_bit(src, mpic->protected))) {
|
if (unlikely(mpic->protected && test_bit(src, mpic->protected))) {
|
||||||
if (printk_ratelimit())
|
printk_ratelimited(KERN_WARNING "%s: Got protected source %d !\n",
|
||||||
printk(KERN_WARNING "%s: Got protected source %d !\n",
|
mpic->name, (int)src);
|
||||||
mpic->name, (int)src);
|
|
||||||
return NO_IRQ;
|
return NO_IRQ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,9 +339,9 @@ static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command,
|
|||||||
(FIR_OP_UA << FIR_OP1_SHIFT) |
|
(FIR_OP_UA << FIR_OP1_SHIFT) |
|
||||||
(FIR_OP_RBW << FIR_OP2_SHIFT));
|
(FIR_OP_RBW << FIR_OP2_SHIFT));
|
||||||
out_be32(&lbc->fcr, NAND_CMD_READID << FCR_CMD0_SHIFT);
|
out_be32(&lbc->fcr, NAND_CMD_READID << FCR_CMD0_SHIFT);
|
||||||
/* 5 bytes for manuf, device and exts */
|
/* nand_get_flash_type() reads 8 bytes of entire ID string */
|
||||||
out_be32(&lbc->fbcr, 5);
|
out_be32(&lbc->fbcr, 8);
|
||||||
elbc_fcm_ctrl->read_bytes = 5;
|
elbc_fcm_ctrl->read_bytes = 8;
|
||||||
elbc_fcm_ctrl->use_mdr = 1;
|
elbc_fcm_ctrl->use_mdr = 1;
|
||||||
elbc_fcm_ctrl->mdr = 0;
|
elbc_fcm_ctrl->mdr = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user