mirror of
https://github.com/apache/nuttx.git
synced 2026-06-04 14:53:47 +08:00
arch/mips/: Change some *err() message to *info() messages if what was a *dbg() message does not indicate and error condition.
This commit is contained in:
@@ -87,8 +87,8 @@ static void _up_dumponexit(FAR struct tcb_s *tcb, FAR void *arg)
|
|||||||
int i;
|
int i;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
serr(" TCB=%p name=%s pid=%d\n", tcb, tcb->argv[0], tcb->pid);
|
sinfo(" TCB=%p name=%s pid=%d\n", tcb, tcb->argv[0], tcb->pid);
|
||||||
serr(" priority=%d state=%d\n", tcb->sched_priority, tcb->task_state);
|
sinfo(" priority=%d state=%d\n", tcb->sched_priority, tcb->task_state);
|
||||||
|
|
||||||
#if CONFIG_NFILE_DESCRIPTORS > 0
|
#if CONFIG_NFILE_DESCRIPTORS > 0
|
||||||
filelist = tcb->group->tg_filelist;
|
filelist = tcb->group->tg_filelist;
|
||||||
@@ -97,7 +97,7 @@ static void _up_dumponexit(FAR struct tcb_s *tcb, FAR void *arg)
|
|||||||
struct inode *inode = filelist->fl_files[i].f_inode;
|
struct inode *inode = filelist->fl_files[i].f_inode;
|
||||||
if (inode)
|
if (inode)
|
||||||
{
|
{
|
||||||
serr(" fd=%d refcount=%d\n",
|
sinfo(" fd=%d refcount=%d\n",
|
||||||
i, inode->i_crefs);
|
i, inode->i_crefs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,11 +111,11 @@ static void _up_dumponexit(FAR struct tcb_s *tcb, FAR void *arg)
|
|||||||
if (filep->fs_fd >= 0)
|
if (filep->fs_fd >= 0)
|
||||||
{
|
{
|
||||||
#if CONFIG_STDIO_BUFFER_SIZE > 0
|
#if CONFIG_STDIO_BUFFER_SIZE > 0
|
||||||
serr(" fd=%d nbytes=%d\n",
|
sinfo(" fd=%d nbytes=%d\n",
|
||||||
filep->fs_fd,
|
filep->fs_fd,
|
||||||
filep->fs_bufpos - filep->fs_bufstart);
|
filep->fs_bufpos - filep->fs_bufstart);
|
||||||
#else
|
#else
|
||||||
serr(" fd=%d\n", filep->fs_fd);
|
sinfo(" fd=%d\n", filep->fs_fd);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -148,10 +148,10 @@ void _exit(int status)
|
|||||||
|
|
||||||
(void)up_irq_save();
|
(void)up_irq_save();
|
||||||
|
|
||||||
sllerr("TCB=%p exiting\n", this_task());
|
sllinfo("TCB=%p exiting\n", this_task());
|
||||||
|
|
||||||
#if defined(CONFIG_DUMP_ON_EXIT) && defined(CONFIG_DEBUG_FEATURES)
|
#if defined(CONFIG_DUMP_ON_EXIT) && defined(CONFIG_DEBUG_FEATURES)
|
||||||
sllerr("Other tasks:\n");
|
sllinfo("Other tasks:\n");
|
||||||
sched_foreach(_up_dumponexit, NULL);
|
sched_foreach(_up_dumponexit, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -76,13 +76,13 @@ static void up_calibratedelay(void)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
llerr("Beginning 100s delay\n");
|
llwarn("Beginning 100s delay\n");
|
||||||
for (i = 0; i < 100; i++)
|
for (i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
up_mdelay(1000);
|
up_mdelay(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
llerr("End 100s delay\n");
|
llwarn("End 100s delay\n");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
# define up_calibratedelay()
|
# define up_calibratedelay()
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ void up_release_pending(void)
|
|||||||
{
|
{
|
||||||
struct tcb_s *rtcb = this_task();
|
struct tcb_s *rtcb = this_task();
|
||||||
|
|
||||||
sllerr("From TCB=%p\n", rtcb);
|
sllinfo("From TCB=%p\n", rtcb);
|
||||||
|
|
||||||
/* Merge the g_pendingtasks list into the ready-to-run task list */
|
/* Merge the g_pendingtasks list into the ready-to-run task list */
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_reprioritize_rtr(struct tcb_s *tcb, uint8_t priority)
|
|||||||
struct tcb_s *rtcb = this_task();
|
struct tcb_s *rtcb = this_task();
|
||||||
bool switch_needed;
|
bool switch_needed;
|
||||||
|
|
||||||
sllerr("TCB=%p PRI=%d\n", tcb, priority);
|
sllinfo("TCB=%p PRI=%d\n", tcb, priority);
|
||||||
|
|
||||||
/* Remove the tcb task from the ready-to-run list.
|
/* Remove the tcb task from the ready-to-run list.
|
||||||
* sched_removereadytorun will return true if we just
|
* sched_removereadytorun will return true if we just
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
irqstate_t flags;
|
irqstate_t flags;
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
|
|
||||||
serr("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
sinfo("tcb=0x%p sigdeliver=0x%p\n", tcb, sigdeliver);
|
||||||
|
|
||||||
/* Make sure that interrupts are disabled */
|
/* Make sure that interrupts are disabled */
|
||||||
|
|
||||||
@@ -109,7 +109,8 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver)
|
|||||||
* being delivered to the currently executing task.
|
* being delivered to the currently executing task.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
serr("rtcb=0x%p g_current_regs=0x%p\n", this_task(), g_current_regs);
|
sinfo("rtcb=0x%p g_current_regs=0x%p\n",
|
||||||
|
this_task(), g_current_regs);
|
||||||
|
|
||||||
if (tcb == this_task())
|
if (tcb == this_task())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ void up_sigdeliver(void)
|
|||||||
|
|
||||||
board_autoled_on(LED_SIGNAL);
|
board_autoled_on(LED_SIGNAL);
|
||||||
|
|
||||||
serr("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
|
sinfo("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
|
||||||
rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
|
rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
|
||||||
ASSERT(rtcb->xcp.sigdeliver != NULL);
|
ASSERT(rtcb->xcp.sigdeliver != NULL);
|
||||||
|
|
||||||
|
|||||||
@@ -66,18 +66,14 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_DEBUG_SYSCALL
|
#ifdef CONFIG_DEBUG_SYSCALL
|
||||||
# define swierr(format, ...) llerr(format, ##__VA_ARGS__)
|
# define swierr(format, ...) llerr(format, ##__VA_ARGS__)
|
||||||
|
# define swiwarn(format, ...) llwarn(format, ##__VA_ARGS__)
|
||||||
|
# define swiinfo(format, ...) llinfo(format, ##__VA_ARGS__)
|
||||||
#else
|
#else
|
||||||
# define swierr(x...)
|
# define swierr(x...)
|
||||||
|
# define swiwarn(x...)
|
||||||
|
# define swiinfo(x...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Data
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Public Data
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -89,23 +85,23 @@
|
|||||||
#ifdef CONFIG_DEBUG_SYSCALL
|
#ifdef CONFIG_DEBUG_SYSCALL
|
||||||
static void up_registerdump(const uint32_t *regs)
|
static void up_registerdump(const uint32_t *regs)
|
||||||
{
|
{
|
||||||
swierr("MFLO:%08x MFHI:%08x EPC:%08x STATUS:%08x\n",
|
swiinfo("MFLO:%08x MFHI:%08x EPC:%08x STATUS:%08x\n",
|
||||||
regs[REG_MFLO], regs[REG_MFHI], regs[REG_EPC], regs[REG_STATUS]);
|
regs[REG_MFLO], regs[REG_MFHI], regs[REG_EPC], regs[REG_STATUS]);
|
||||||
swierr("AT:%08x V0:%08x V1:%08x A0:%08x A1:%08x A2:%08x A3:%08x\n",
|
swiinfo("AT:%08x V0:%08x V1:%08x A0:%08x A1:%08x A2:%08x A3:%08x\n",
|
||||||
regs[REG_AT], regs[REG_V0], regs[REG_V1], regs[REG_A0],
|
regs[REG_AT], regs[REG_V0], regs[REG_V1], regs[REG_A0],
|
||||||
regs[REG_A1], regs[REG_A2], regs[REG_A3]);
|
regs[REG_A1], regs[REG_A2], regs[REG_A3]);
|
||||||
swierr("T0:%08x T1:%08x T2:%08x T3:%08x T4:%08x T5:%08x T6:%08x T7:%08x\n",
|
swiinfo("T0:%08x T1:%08x T2:%08x T3:%08x T4:%08x T5:%08x T6:%08x T7:%08x\n",
|
||||||
regs[REG_T0], regs[REG_T1], regs[REG_T2], regs[REG_T3],
|
regs[REG_T0], regs[REG_T1], regs[REG_T2], regs[REG_T3],
|
||||||
regs[REG_T4], regs[REG_T5], regs[REG_T6], regs[REG_T7]);
|
regs[REG_T4], regs[REG_T5], regs[REG_T6], regs[REG_T7]);
|
||||||
swierr("S0:%08x S1:%08x S2:%08x S3:%08x S4:%08x S5:%08x S6:%08x S7:%08x\n",
|
swiinfo("S0:%08x S1:%08x S2:%08x S3:%08x S4:%08x S5:%08x S6:%08x S7:%08x\n",
|
||||||
regs[REG_S0], regs[REG_S1], regs[REG_S2], regs[REG_S3],
|
regs[REG_S0], regs[REG_S1], regs[REG_S2], regs[REG_S3],
|
||||||
regs[REG_S4], regs[REG_S5], regs[REG_S6], regs[REG_S7]);
|
regs[REG_S4], regs[REG_S5], regs[REG_S6], regs[REG_S7]);
|
||||||
#ifdef MIPS32_SAVE_GP
|
#ifdef MIPS32_SAVE_GP
|
||||||
swierr("T8:%08x T9:%08x GP:%08x SP:%08x FP:%08x RA:%08x\n",
|
swiinfo("T8:%08x T9:%08x GP:%08x SP:%08x FP:%08x RA:%08x\n",
|
||||||
regs[REG_T8], regs[REG_T9], regs[REG_GP], regs[REG_SP],
|
regs[REG_T8], regs[REG_T9], regs[REG_GP], regs[REG_SP],
|
||||||
regs[REG_FP], regs[REG_RA]);
|
regs[REG_FP], regs[REG_RA]);
|
||||||
#else
|
#else
|
||||||
swierr("T8:%08x T9:%08x SP:%08x FP:%08x RA:%08x\n",
|
swiinfo("T8:%08x T9:%08x SP:%08x FP:%08x RA:%08x\n",
|
||||||
regs[REG_T8], regs[REG_T9], regs[REG_SP], regs[REG_FP],
|
regs[REG_T8], regs[REG_T9], regs[REG_SP], regs[REG_FP],
|
||||||
regs[REG_RA]);
|
regs[REG_RA]);
|
||||||
#endif
|
#endif
|
||||||
@@ -168,7 +164,7 @@ int up_swint0(int irq, FAR void *context)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_SYSCALL
|
#ifdef CONFIG_DEBUG_SYSCALL
|
||||||
swierr("Entry: regs: %p cmd: %d\n", regs, regs[REG_R4]);
|
swiinfo("Entry: regs: %p cmd: %d\n", regs, regs[REG_R4]);
|
||||||
up_registerdump(regs);
|
up_registerdump(regs);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -300,12 +296,12 @@ int up_swint0(int irq, FAR void *context)
|
|||||||
#ifdef CONFIG_DEBUG_SYSCALL
|
#ifdef CONFIG_DEBUG_SYSCALL
|
||||||
if (regs != g_current_regs)
|
if (regs != g_current_regs)
|
||||||
{
|
{
|
||||||
swierr("SWInt Return: Context switch!\n");
|
swiinfo("SWInt Return: Context switch!\n");
|
||||||
up_registerdump((const uint32_t *)g_current_regs);
|
up_registerdump((const uint32_t *)g_current_regs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
swierr("SWInt Return: %d\n", regs[REG_V0]);
|
swiinfo("SWInt Return: %d\n", regs[REG_V0]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ pid_t up_vfork(const struct vfork_s *context)
|
|||||||
child = task_vforksetup((start_t)context->ra);
|
child = task_vforksetup((start_t)context->ra);
|
||||||
if (!child)
|
if (!child)
|
||||||
{
|
{
|
||||||
serr("task_vforksetup failed\n");
|
sinfo("task_vforksetup failed\n");
|
||||||
return (pid_t)ERROR;
|
return (pid_t)ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ pid_t up_vfork(const struct vfork_s *context)
|
|||||||
parent->flags & TCB_FLAG_TTYPE_MASK);
|
parent->flags & TCB_FLAG_TTYPE_MASK);
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
{
|
{
|
||||||
serr("up_create_stack failed: %d\n", ret);
|
serr("ERROR: up_create_stack failed: %d\n", ret);
|
||||||
task_vforkabort(child, -ret);
|
task_vforkabort(child, -ret);
|
||||||
return (pid_t)ERROR;
|
return (pid_t)ERROR;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1034,7 +1034,7 @@ config PIC32MX_SPI_ENHBUF
|
|||||||
|
|
||||||
config PIC32MX_SPI_REGDEBUG
|
config PIC32MX_SPI_REGDEBUG
|
||||||
bool "SPI Register level debug"
|
bool "SPI Register level debug"
|
||||||
depends on DEBUG_FEATURES
|
depends on DEBUG_INFO
|
||||||
default n
|
default n
|
||||||
---help---
|
---help---
|
||||||
Output detailed register-level SPI device debug information.
|
Output detailed register-level SPI device debug information.
|
||||||
|
|||||||
@@ -141,15 +141,6 @@
|
|||||||
#define PIC32MX_NBUFFERS (CONFIG_NET_NRXDESC + CONFIG_NET_NTXDESC + 1)
|
#define PIC32MX_NBUFFERS (CONFIG_NET_NRXDESC + CONFIG_NET_NTXDESC + 1)
|
||||||
|
|
||||||
/* Debug Configuration *****************************************************/
|
/* Debug Configuration *****************************************************/
|
||||||
/* Register/Descriptor debug -- can only happen of CONFIG_DEBUG_FEATURES is selected.
|
|
||||||
* This will probably generate much more output than you care to see.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef CONFIG_DEBUG_FEATURES
|
|
||||||
# undef CONFIG_NET_REGDEBUG
|
|
||||||
# undef CONFIG_NET_DESCDEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* CONFIG_NET_DUMPPACKET will dump the contents of each packet to the
|
/* CONFIG_NET_DUMPPACKET will dump the contents of each packet to the
|
||||||
* console.
|
* console.
|
||||||
*/
|
*/
|
||||||
@@ -447,7 +438,7 @@ static void pic32mx_ethreset(struct pic32mx_driver_s *priv);
|
|||||||
#ifdef CONFIG_NET_REGDEBUG
|
#ifdef CONFIG_NET_REGDEBUG
|
||||||
static void pic32mx_printreg(uint32_t addr, uint32_t val, bool iswrite)
|
static void pic32mx_printreg(uint32_t addr, uint32_t val, bool iswrite)
|
||||||
{
|
{
|
||||||
llerr("%08x%s%08x\n", addr, iswrite ? "<-" : "->", val);
|
nllinfo("%08x%s%08x\n", addr, iswrite ? "<-" : "->", val);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -497,7 +488,7 @@ static void pic32mx_checkreg(uint32_t addr, uint32_t val, bool iswrite)
|
|||||||
{
|
{
|
||||||
/* No.. More than one. */
|
/* No.. More than one. */
|
||||||
|
|
||||||
llerr("[repeats %d more times]\n", count);
|
nllinfo("[repeats %d more times]\n", count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -576,12 +567,12 @@ static void pic32mx_putreg(uint32_t val, uint32_t addr)
|
|||||||
#ifdef CONFIG_NET_DESCDEBUG
|
#ifdef CONFIG_NET_DESCDEBUG
|
||||||
static void pic32mx_dumptxdesc(struct pic32mx_txdesc_s *txdesc, const char *msg)
|
static void pic32mx_dumptxdesc(struct pic32mx_txdesc_s *txdesc, const char *msg)
|
||||||
{
|
{
|
||||||
llerr("TX Descriptor [%p]: %s\n", txdesc, msg);
|
nllinfo("TX Descriptor [%p]: %s\n", txdesc, msg);
|
||||||
llerr(" status: %08x\n", txdesc->status);
|
nllinfo(" status: %08x\n", txdesc->status);
|
||||||
llerr(" address: %08x [%08x]\n", txdesc->address, VIRT_ADDR(txdesc->address));
|
nllinfo(" address: %08x [%08x]\n", txdesc->address, VIRT_ADDR(txdesc->address));
|
||||||
llerr(" tsv1: %08x\n", txdesc->tsv1);
|
nllinfo(" tsv1: %08x\n", txdesc->tsv1);
|
||||||
llerr(" tsv2: %08x\n", txdesc->tsv2);
|
nllinfo(" tsv2: %08x\n", txdesc->tsv2);
|
||||||
llerr(" nexted: %08x [%08x]\n", txdesc->nexted, VIRT_ADDR(txdesc->nexted));
|
nllinfo(" nexted: %08x [%08x]\n", txdesc->nexted, VIRT_ADDR(txdesc->nexted));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -603,12 +594,12 @@ static void pic32mx_dumptxdesc(struct pic32mx_txdesc_s *txdesc, const char *msg)
|
|||||||
#ifdef CONFIG_NET_DESCDEBUG
|
#ifdef CONFIG_NET_DESCDEBUG
|
||||||
static void pic32mx_dumprxdesc(struct pic32mx_rxdesc_s *rxdesc, const char *msg)
|
static void pic32mx_dumprxdesc(struct pic32mx_rxdesc_s *rxdesc, const char *msg)
|
||||||
{
|
{
|
||||||
llerr("RX Descriptor [%p]: %s\n", rxdesc, msg);
|
nllinfo("RX Descriptor [%p]: %s\n", rxdesc, msg);
|
||||||
llerr(" status: %08x\n", rxdesc->status);
|
nllinfo(" status: %08x\n", rxdesc->status);
|
||||||
llerr(" address: %08x [%08x]\n", rxdesc->address, VIRT_ADDR(rxdesc->address));
|
nllinfo(" address: %08x [%08x]\n", rxdesc->address, VIRT_ADDR(rxdesc->address));
|
||||||
llerr(" rsv1: %08x\n", rxdesc->rsv1);
|
nllinfo(" rsv1: %08x\n", rxdesc->rsv1);
|
||||||
llerr(" rsv2: %08x\n", rxdesc->rsv2);
|
nllinfo(" rsv2: %08x\n", rxdesc->rsv2);
|
||||||
llerr(" nexted: %08x [%08x]\n", rxdesc->nexted, VIRT_ADDR(rxdesc->nexted));
|
nllinfo(" nexted: %08x [%08x]\n", rxdesc->nexted, VIRT_ADDR(rxdesc->nexted));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1366,7 +1357,8 @@ static void pic32mx_rxdone(struct pic32mx_driver_s *priv)
|
|||||||
|
|
||||||
if ((rxdesc->rsv2 & RXDESC_RSV2_OK) == 0)
|
if ((rxdesc->rsv2 & RXDESC_RSV2_OK) == 0)
|
||||||
{
|
{
|
||||||
nllerr("ERROR. rsv1: %08x rsv2: %08x\n", rxdesc->rsv1, rxdesc->rsv2);
|
nllerr("ERROR. rsv1: %08x rsv2: %08x\n",
|
||||||
|
rxdesc->rsv1, rxdesc->rsv2);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
pic32mx_rxreturn(rxdesc);
|
pic32mx_rxreturn(rxdesc);
|
||||||
}
|
}
|
||||||
@@ -1379,7 +1371,7 @@ static void pic32mx_rxdone(struct pic32mx_driver_s *priv)
|
|||||||
|
|
||||||
else if (priv->pd_dev.d_len > CONFIG_NET_ETH_MTU)
|
else if (priv->pd_dev.d_len > CONFIG_NET_ETH_MTU)
|
||||||
{
|
{
|
||||||
nllerr("Too big. packet length: %d rxdesc: %08x\n",
|
nllerr("ERROR: Too big. packet length: %d rxdesc: %08x\n",
|
||||||
priv->pd_dev.d_len, rxdesc->status);
|
priv->pd_dev.d_len, rxdesc->status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
pic32mx_rxreturn(rxdesc);
|
pic32mx_rxreturn(rxdesc);
|
||||||
@@ -1390,7 +1382,8 @@ static void pic32mx_rxdone(struct pic32mx_driver_s *priv)
|
|||||||
else if ((rxdesc->status & (RXDESC_STATUS_EOP | RXDESC_STATUS_SOP)) !=
|
else if ((rxdesc->status & (RXDESC_STATUS_EOP | RXDESC_STATUS_SOP)) !=
|
||||||
(RXDESC_STATUS_EOP | RXDESC_STATUS_SOP))
|
(RXDESC_STATUS_EOP | RXDESC_STATUS_SOP))
|
||||||
{
|
{
|
||||||
nllerr("Fragment. packet length: %d rxdesc: %08x\n", priv->pd_dev.d_len, rxdesc->status);
|
nllerr("ERROR: Fragment. packet length: %d rxdesc: %08x\n",
|
||||||
|
priv->pd_dev.d_len, rxdesc->status);
|
||||||
NETDEV_RXFRAGMENTS(&priv->pd_dev);
|
NETDEV_RXFRAGMENTS(&priv->pd_dev);
|
||||||
pic32mx_rxreturn(rxdesc);
|
pic32mx_rxreturn(rxdesc);
|
||||||
}
|
}
|
||||||
@@ -1529,7 +1522,8 @@ static void pic32mx_rxdone(struct pic32mx_driver_s *priv)
|
|||||||
{
|
{
|
||||||
/* Unrecognized... drop it. */
|
/* Unrecognized... drop it. */
|
||||||
|
|
||||||
nllerr("Unrecognized packet type dropped: %04x\n", ntohs(BUF->type));
|
nllerr("ERROR: Unrecognized packet type dropped: %04x\n",
|
||||||
|
ntohs(BUF->type));
|
||||||
NETDEV_RXDROPPED(&priv->pd_dev);
|
NETDEV_RXDROPPED(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1691,7 +1685,7 @@ static int pic32mx_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_RXOVFLW) != 0)
|
if ((status & ETH_INT_RXOVFLW) != 0)
|
||||||
{
|
{
|
||||||
nllerr("RX Overrun. status: %08x\n", status);
|
nllerr("ERROR: RX Overrun. status: %08x\n", status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1702,7 +1696,7 @@ static int pic32mx_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_RXBUFNA) != 0)
|
if ((status & ETH_INT_RXBUFNA) != 0)
|
||||||
{
|
{
|
||||||
nllerr("RX buffer descriptor overrun. status: %08x\n", status);
|
nllerr("ERROR: RX buffer descriptor overrun. status: %08x\n", status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1713,7 +1707,7 @@ static int pic32mx_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_RXBUSE) != 0)
|
if ((status & ETH_INT_RXBUSE) != 0)
|
||||||
{
|
{
|
||||||
nllerr("RX BVCI bus error. status: %08x\n", status);
|
nllerr("ERROR: RX BVCI bus error. status: %08x\n", status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1756,7 +1750,7 @@ static int pic32mx_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_TXABORT) != 0)
|
if ((status & ETH_INT_TXABORT) != 0)
|
||||||
{
|
{
|
||||||
nllerr("TX abort. status: %08x\n", status);
|
nllerr("ERROR: TX abort. status: %08x\n", status);
|
||||||
NETDEV_TXERRORS(&priv->pd_dev);
|
NETDEV_TXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1767,7 +1761,7 @@ static int pic32mx_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_TXBUSE) != 0)
|
if ((status & ETH_INT_TXBUSE) != 0)
|
||||||
{
|
{
|
||||||
nllerr("TX BVCI bus error. status: %08x\n", status);
|
nllerr("ERROR: TX BVCI bus error. status: %08x\n", status);
|
||||||
NETDEV_TXERRORS(&priv->pd_dev);
|
NETDEV_TXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1921,7 +1915,7 @@ static int pic32mx_ifup(struct net_driver_s *dev)
|
|||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
nerr("Bringing up: %d.%d.%d.%d\n",
|
ninfo("Bringing up: %d.%d.%d.%d\n",
|
||||||
dev->d_ipaddr & 0xff, (dev->d_ipaddr >> 8) & 0xff,
|
dev->d_ipaddr & 0xff, (dev->d_ipaddr >> 8) & 0xff,
|
||||||
(dev->d_ipaddr >> 16) & 0xff, dev->d_ipaddr >> 24);
|
(dev->d_ipaddr >> 16) & 0xff, dev->d_ipaddr >> 24);
|
||||||
|
|
||||||
@@ -2011,7 +2005,7 @@ static int pic32mx_ifup(struct net_driver_s *dev)
|
|||||||
ret = pic32mx_phyinit(priv);
|
ret = pic32mx_phyinit(priv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
{
|
{
|
||||||
nerr("pic32mx_phyinit failed: %d\n", ret);
|
nerr("ERROR: pic32mx_phyinit failed: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2373,14 +2367,14 @@ static int pic32mx_rmmac(struct net_driver_s *dev, const uint8_t *mac)
|
|||||||
#if defined(CONFIG_NET_REGDEBUG) && defined(PIC32MX_HAVE_PHY)
|
#if defined(CONFIG_NET_REGDEBUG) && defined(PIC32MX_HAVE_PHY)
|
||||||
static void pic32mx_showmii(uint8_t phyaddr, const char *msg)
|
static void pic32mx_showmii(uint8_t phyaddr, const char *msg)
|
||||||
{
|
{
|
||||||
err("PHY " PIC32MX_PHYNAME ": %s\n", msg);
|
nllinfo("PHY " PIC32MX_PHYNAME ": %s\n", msg);
|
||||||
err(" MCR: %04x\n", pic32mx_phyread(phyaddr, MII_MCR));
|
nllinfo(" MCR: %04x\n", pic32mx_phyread(phyaddr, MII_MCR));
|
||||||
err(" MSR: %04x\n", pic32mx_phyread(phyaddr, MII_MSR));
|
nllinfo(" MSR: %04x\n", pic32mx_phyread(phyaddr, MII_MSR));
|
||||||
err(" ADVERTISE: %04x\n", pic32mx_phyread(phyaddr, MII_ADVERTISE));
|
nllinfo(" ADVERTISE: %04x\n", pic32mx_phyread(phyaddr, MII_ADVERTISE));
|
||||||
err(" LPA: %04x\n", pic32mx_phyread(phyaddr, MII_LPA));
|
nllinfo(" LPA: %04x\n", pic32mx_phyread(phyaddr, MII_LPA));
|
||||||
err(" EXPANSION: %04x\n", pic32mx_phyread(phyaddr, MII_EXPANSION));
|
nllinfo(" EXPANSION: %04x\n", pic32mx_phyread(phyaddr, MII_EXPANSION));
|
||||||
#ifdef CONFIG_ETH0_PHY_KS8721
|
#ifdef CONFIG_ETH0_PHY_KS8721
|
||||||
err(" 10BTCR: %04x\n", pic32mx_phyread(phyaddr, MII_KS8721_10BTCR));
|
nllinfo(" 10BTCR: %04x\n", pic32mx_phyread(phyaddr, MII_KS8721_10BTCR));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2543,7 +2537,7 @@ static inline int pic32mx_phyreset(uint8_t phyaddr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nerr("Reset failed. MCR: %04x\n", phyreg);
|
nerr("ERROR: Reset failed. MCR: %04x\n", phyreg);
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2590,7 +2584,7 @@ static inline int pic32mx_phyautoneg(uint8_t phyaddr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nerr("Auto-negotiation failed. MSR: %04x\n", phyreg);
|
nerr("ERROR: Auto-negotiation failed. MSR: %04x\n", phyreg);
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2669,7 +2663,7 @@ static int pic32mx_phymode(uint8_t phyaddr, uint8_t mode)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
nerr("Link failed. MSR: %04x\n", phyreg);
|
nerr("ERROR: Link failed. MSR: %04x\n", phyreg);
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2738,7 +2732,7 @@ static inline int pic32mx_phyinit(struct pic32mx_driver_s *priv)
|
|||||||
ret = pic32mx_phyreset(phyaddr);
|
ret = pic32mx_phyreset(phyaddr);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
nerr("Failed to reset PHY at address %d\n", phyaddr);
|
nerr("ERROR: Failed to reset PHY at address %d\n", phyaddr);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2771,7 +2765,7 @@ static inline int pic32mx_phyinit(struct pic32mx_driver_s *priv)
|
|||||||
{
|
{
|
||||||
/* Failed to find PHY at any location */
|
/* Failed to find PHY at any location */
|
||||||
|
|
||||||
nerr("No PHY detected\n");
|
nerr("ERROR: No PHY detected\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
ninfo("phyaddr: %d\n", phyaddr);
|
ninfo("phyaddr: %d\n", phyaddr);
|
||||||
@@ -2875,7 +2869,7 @@ static inline int pic32mx_phyinit(struct pic32mx_driver_s *priv)
|
|||||||
priv->pd_mode = PIC32MX_100BASET_FD;
|
priv->pd_mode = PIC32MX_100BASET_FD;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nerr("Unrecognized mode: %04x\n", phyreg);
|
nerr("ERROR: Unrecognized mode: %04x\n", phyreg);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
#elif defined(CONFIG_ETH0_PHY_DP83848C)
|
#elif defined(CONFIG_ETH0_PHY_DP83848C)
|
||||||
@@ -2898,7 +2892,7 @@ static inline int pic32mx_phyinit(struct pic32mx_driver_s *priv)
|
|||||||
priv->pd_mode = PIC32MX_10BASET_FD;
|
priv->pd_mode = PIC32MX_10BASET_FD;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nerr("Unrecognized mode: %04x\n", phyreg);
|
nerr("ERROR: Unrecognized mode: %04x\n", phyreg);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
#elif defined(CONFIG_ETH0_PHY_LAN8720)
|
#elif defined(CONFIG_ETH0_PHY_LAN8720)
|
||||||
@@ -2943,7 +2937,7 @@ static inline int pic32mx_phyinit(struct pic32mx_driver_s *priv)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nerr("Unrecognized mode: %04x\n", phyreg);
|
nerr("ERROR: Unrecognized mode: %04x\n", phyreg);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2951,7 +2945,7 @@ static inline int pic32mx_phyinit(struct pic32mx_driver_s *priv)
|
|||||||
# warning "PHY Unknown: speed and duplex are bogus"
|
# warning "PHY Unknown: speed and duplex are bogus"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nerr("%dBase-T %s duplex\n",
|
ninfo("%dBase-T %s duplex\n",
|
||||||
(priv->pd_mode & PIC32MX_SPEED_MASK) == PIC32MX_SPEED_100 ? 100 : 10,
|
(priv->pd_mode & PIC32MX_SPEED_MASK) == PIC32MX_SPEED_100 ? 100 : 10,
|
||||||
(priv->pd_mode & PIC32MX_DUPLEX_MASK) == PIC32MX_DUPLEX_FULL ?"full" : "half");
|
(priv->pd_mode & PIC32MX_DUPLEX_MASK) == PIC32MX_DUPLEX_FULL ?"full" : "half");
|
||||||
|
|
||||||
|
|||||||
@@ -55,22 +55,6 @@
|
|||||||
#include "pic32mx-int.h"
|
#include "pic32mx-int.h"
|
||||||
#include "pic32mx.h"
|
#include "pic32mx.h"
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Pre-processor Definitions
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Public Data
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Data
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Functions
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -106,88 +90,88 @@ uint32_t *pic32mx_exception(uint32_t *regs)
|
|||||||
switch (cause & CP0_CAUSE_EXCCODE_MASK)
|
switch (cause & CP0_CAUSE_EXCCODE_MASK)
|
||||||
{
|
{
|
||||||
case CP0_CAUSE_EXCCODE_INT: /* Interrupt */
|
case CP0_CAUSE_EXCCODE_INT: /* Interrupt */
|
||||||
llinfo("EXCEPTION: Interrupt"
|
alert("EXCEPTION: Interrupt"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_TLBL: /* TLB exception (load or instruction fetch) */
|
case CP0_CAUSE_EXCCODE_TLBL: /* TLB exception (load or instruction fetch) */
|
||||||
llinfo("EXCEPTION: TLB exception (load or instruction fetch)"
|
alert("EXCEPTION: TLB exception (load or instruction fetch)"
|
||||||
" CAUSE: %08x EPC:%08x\n", cause, epc);
|
" CAUSE: %08x EPC:%08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_TLBS: /* TLB exception (store) */
|
case CP0_CAUSE_EXCCODE_TLBS: /* TLB exception (store) */
|
||||||
llinfo("EXCEPTION: TLB exception (store)"
|
alert("EXCEPTION: TLB exception (store)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_ADEL: /* Address error exception (load or instruction fetch) */
|
case CP0_CAUSE_EXCCODE_ADEL: /* Address error exception (load or instruction fetch) */
|
||||||
llinfo("EXCEPTION: Address error exception (load or instruction fetch)"
|
alert("EXCEPTION: Address error exception (load or instruction fetch)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_ADES: /* Address error exception (store) */
|
case CP0_CAUSE_EXCCODE_ADES: /* Address error exception (store) */
|
||||||
llinfo("EXCEPTION: Address error exception (store)"
|
alert("EXCEPTION: Address error exception (store)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_IBE: /* Bus error exception (instruction fetch) */
|
case CP0_CAUSE_EXCCODE_IBE: /* Bus error exception (instruction fetch) */
|
||||||
llinfo("EXCEPTION: Bus error exception (instruction fetch)"
|
alert("EXCEPTION: Bus error exception (instruction fetch)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_DBE: /* Bus error exception (data reference: load or store) */
|
case CP0_CAUSE_EXCCODE_DBE: /* Bus error exception (data reference: load or store) */
|
||||||
llinfo("EXCEPTION: Bus error exception (data reference: load or store)"
|
alert("EXCEPTION: Bus error exception (data reference: load or store)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_SYS: /* Syscall exception */
|
case CP0_CAUSE_EXCCODE_SYS: /* Syscall exception */
|
||||||
llinfo("EXCEPTION: Syscall exception"
|
alert("EXCEPTION: Syscall exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_BP: /* Breakpoint exception */
|
case CP0_CAUSE_EXCCODE_BP: /* Breakpoint exception */
|
||||||
llinfo("EXCEPTION: Breakpoint exception"
|
alert("EXCEPTION: Breakpoint exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_RI: /* Reserved instruction exception */
|
case CP0_CAUSE_EXCCODE_RI: /* Reserved instruction exception */
|
||||||
llinfo("EXCEPTION: Reserved instruction exception"
|
alert("EXCEPTION: Reserved instruction exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_CPU: /* Coprocessor Unusable exception */
|
case CP0_CAUSE_EXCCODE_CPU: /* Coprocessor Unusable exception */
|
||||||
llinfo("EXCEPTION: Coprocessor Unusable exception"
|
alert("EXCEPTION: Coprocessor Unusable exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_OV: /* Arithmetic Overflow exception */
|
case CP0_CAUSE_EXCCODE_OV: /* Arithmetic Overflow exception */
|
||||||
llinfo("EXCEPTION: Arithmetic Overflow exception"
|
alert("EXCEPTION: Arithmetic Overflow exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_TR: /* Trap exception */
|
case CP0_CAUSE_EXCCODE_TR: /* Trap exception */
|
||||||
llinfo("EXCEPTION: Trap exception"
|
alert("EXCEPTION: Trap exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_FPE: /* Floating point exception */
|
case CP0_CAUSE_EXCCODE_FPE: /* Floating point exception */
|
||||||
llinfo("EXCEPTION: Floating point exception"
|
alert("EXCEPTION: Floating point exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_C2E: /* Precise Coprocessor 2 exceptions */
|
case CP0_CAUSE_EXCCODE_C2E: /* Precise Coprocessor 2 exceptions */
|
||||||
llinfo("EXCEPTION: Precise Coprocessor 2 exceptions"
|
alert("EXCEPTION: Precise Coprocessor 2 exceptions"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_MDMX: /* MDMX Unusable (MIPS64) */
|
case CP0_CAUSE_EXCCODE_MDMX: /* MDMX Unusable (MIPS64) */
|
||||||
llinfo("EXCEPTION: MDMX Unusable (MIPS64)"
|
alert("EXCEPTION: MDMX Unusable (MIPS64)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_WATCH: /* WatchHi/WatchLo address */
|
case CP0_CAUSE_EXCCODE_WATCH: /* WatchHi/WatchLo address */
|
||||||
llinfo("EXCEPTION: WatchHi/WatchLo address"
|
alert("EXCEPTION: WatchHi/WatchLo address"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_MCHECK: /* Machine check */
|
case CP0_CAUSE_EXCCODE_MCHECK: /* Machine check */
|
||||||
llinfo("EXCEPTION: Machine check"
|
alert("EXCEPTION: Machine check"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_CACHEERR: /* Cache error */
|
case CP0_CAUSE_EXCCODE_CACHEERR: /* Cache error */
|
||||||
llinfo("EXCEPTION: Cache error"
|
alert("EXCEPTION: Cache error"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
llinfo("EXCEPTION: Unknown"
|
alert("EXCEPTION: Unknown"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
llerr("EXCEPTION: CAUSE: %08x EPC: %08x\n", cause, epc);
|
alert("EXCEPTION: CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -321,14 +321,14 @@ void pic32mx_dumpgpio(uint32_t pinset, const char *msg)
|
|||||||
/* The following requires exclusive access to the GPIO registers */
|
/* The following requires exclusive access to the GPIO registers */
|
||||||
|
|
||||||
sched_lock();
|
sched_lock();
|
||||||
llerr("IOPORT%c pinset: %04x base: %08x -- %s\n",
|
llinfo("IOPORT%c pinset: %04x base: %08x -- %s\n",
|
||||||
'A'+port, pinset, base, msg);
|
'A'+port, pinset, base, msg);
|
||||||
llerr(" TRIS: %08x PORT: %08x LAT: %08x ODC: %08x\n",
|
llinfo(" TRIS: %08x PORT: %08x LAT: %08x ODC: %08x\n",
|
||||||
getreg32(base + PIC32MX_IOPORT_TRIS_OFFSET),
|
getreg32(base + PIC32MX_IOPORT_TRIS_OFFSET),
|
||||||
getreg32(base + PIC32MX_IOPORT_PORT_OFFSET),
|
getreg32(base + PIC32MX_IOPORT_PORT_OFFSET),
|
||||||
getreg32(base + PIC32MX_IOPORT_LAT_OFFSET),
|
getreg32(base + PIC32MX_IOPORT_LAT_OFFSET),
|
||||||
getreg32(base + PIC32MX_IOPORT_ODC_OFFSET));
|
getreg32(base + PIC32MX_IOPORT_ODC_OFFSET));
|
||||||
llerr(" CNCON: %08x CNEN: %08x CNPUE: %08x\n",
|
llinfo(" CNCON: %08x CNEN: %08x CNPUE: %08x\n",
|
||||||
getreg32(PIC32MX_IOPORT_CNCON),
|
getreg32(PIC32MX_IOPORT_CNCON),
|
||||||
getreg32(PIC32MX_IOPORT_CNEN),
|
getreg32(PIC32MX_IOPORT_CNEN),
|
||||||
getreg32(PIC32MX_IOPORT_CNPUE));
|
getreg32(PIC32MX_IOPORT_CNPUE));
|
||||||
|
|||||||
@@ -76,13 +76,11 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_DEBUG_SPI
|
#ifdef CONFIG_DEBUG_SPI
|
||||||
# define spierr llerr
|
# define spierr llerr
|
||||||
# ifdef CONFIG_DEBUG_INFO
|
# define spiwarn llwarn
|
||||||
# define spiinfo llerr
|
# define spiinfo llinfo
|
||||||
# else
|
|
||||||
# define spiinfo(x...)
|
|
||||||
# endif
|
|
||||||
#else
|
#else
|
||||||
# define spierr(x...)
|
# define spierr(x...)
|
||||||
|
# define spiwarn(x...)
|
||||||
# define spiinfo(x...)
|
# define spiinfo(x...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -329,7 +327,7 @@ static uint32_t spi_getreg(FAR struct pic32mx_dev_s *priv, unsigned int offset)
|
|||||||
{
|
{
|
||||||
if (count == 4)
|
if (count == 4)
|
||||||
{
|
{
|
||||||
llerr("...\n");
|
llinfo("...\n");
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@@ -345,7 +343,7 @@ static uint32_t spi_getreg(FAR struct pic32mx_dev_s *priv, unsigned int offset)
|
|||||||
{
|
{
|
||||||
/* Yes.. then show how many times the value repeated */
|
/* Yes.. then show how many times the value repeated */
|
||||||
|
|
||||||
llerr("[repeats %d more times]\n", count-3);
|
llinfo("[repeats %d more times]\n", count-3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save the new address, value, and count */
|
/* Save the new address, value, and count */
|
||||||
@@ -357,7 +355,7 @@ static uint32_t spi_getreg(FAR struct pic32mx_dev_s *priv, unsigned int offset)
|
|||||||
|
|
||||||
/* Show the register value read */
|
/* Show the register value read */
|
||||||
|
|
||||||
llerr("%08x->%08x\n", addr, value);
|
llinfo("%08x->%08x\n", addr, value);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -395,7 +393,7 @@ static void spi_putreg(FAR struct pic32mx_dev_s *priv, unsigned int offset,
|
|||||||
|
|
||||||
/* Show the register value being written */
|
/* Show the register value being written */
|
||||||
|
|
||||||
llerr("%08x<-%08x\n", addr, value);
|
llinfo("%08x<-%08x\n", addr, value);
|
||||||
|
|
||||||
/* Then do the write */
|
/* Then do the write */
|
||||||
|
|
||||||
@@ -526,7 +524,7 @@ static uint32_t spi_setfrequency(FAR struct spi_dev_s *dev, uint32_t frequency)
|
|||||||
priv->frequency = frequency;
|
priv->frequency = frequency;
|
||||||
priv->actual = actual;
|
priv->actual = actual;
|
||||||
|
|
||||||
spierr("New frequency: %d Actual: %d\n", frequency, actual);
|
spiinfo("New frequency: %d Actual: %d\n", frequency, actual);
|
||||||
return actual;
|
return actual;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -665,7 +663,7 @@ static void spi_setbits(FAR struct spi_dev_s *dev, int nbits)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spierr("Unsupported nbits: %d\n", nbits);
|
spierr("ERROR: Unsupported nbits: %d\n", nbits);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -897,7 +895,7 @@ FAR struct spi_dev_s *pic32mx_spibus_initialize(int port)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
spierr("Unsuppport port: %d\n", port);
|
spierr("ERROR: Unsuppport port: %d\n", port);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -926,7 +924,8 @@ FAR struct spi_dev_s *pic32mx_spibus_initialize(int port)
|
|||||||
ret = irq_attach(priv->vector, spi_interrupt);
|
ret = irq_attach(priv->vector, spi_interrupt);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("Failed to attach vector: %d port: %d\n", priv->vector, port);
|
spierr("ERROR: Failed to attach vector: %d port: %d\n",
|
||||||
|
priv->vector, port);
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -976,7 +975,7 @@ FAR struct spi_dev_s *pic32mx_spibus_initialize(int port)
|
|||||||
ret = up_prioritize_irq(priv->vector, CONFIG_PIC32MX_SPI_PRIORITY)
|
ret = up_prioritize_irq(priv->vector, CONFIG_PIC32MX_SPI_PRIORITY)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("up_prioritize_irq failed: %d\n", ret);
|
spierr("ERROR: up_prioritize_irq failed: %d\n", ret);
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -79,15 +79,6 @@
|
|||||||
# define CONFIG_USBDEV_EP0_MAXSIZE 64
|
# define CONFIG_USBDEV_EP0_MAXSIZE 64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Extremely detailed register/BDT debug that you would normally never want
|
|
||||||
* enabled.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef CONFIG_DEBUG_FEATURES
|
|
||||||
# undef CONFIG_PIC32MX_USBDEV_REGDEBUG
|
|
||||||
# undef CONFIG_PIC32MX_USBDEV_BDTDEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Disable this logic because it is buggy. It works most of the time but
|
/* Disable this logic because it is buggy. It works most of the time but
|
||||||
* has some lurking issues that keep this higher performance solution from
|
* has some lurking issues that keep this higher performance solution from
|
||||||
* being usable.
|
* being usable.
|
||||||
@@ -290,17 +281,15 @@
|
|||||||
# define CONFIG_PIC32MX_USBDEV_BDTDEBUG 1
|
# define CONFIG_PIC32MX_USBDEV_BDTDEBUG 1
|
||||||
|
|
||||||
# define regerr llerr
|
# define regerr llerr
|
||||||
# ifdef CONFIG_DEBUG_INFO
|
# define regwarn llwarn
|
||||||
# define reginfo llerr
|
# define reginfo llinfo
|
||||||
# else
|
|
||||||
# define reginfo(x...)
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# define pic32mx_getreg(addr) getreg16(addr)
|
# define pic32mx_getreg(addr) getreg16(addr)
|
||||||
# define pic32mx_putreg(val,addr) putreg16(val,addr)
|
# define pic32mx_putreg(val,addr) putreg16(val,addr)
|
||||||
# define regerr(x...)
|
# define regerr(x...)
|
||||||
|
# define regwarn(x...)
|
||||||
# define reginfo(x...)
|
# define reginfo(x...)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -310,15 +299,13 @@
|
|||||||
#ifdef CONFIG_PIC32MX_USBDEV_BDTDEBUG
|
#ifdef CONFIG_PIC32MX_USBDEV_BDTDEBUG
|
||||||
|
|
||||||
# define bdterr llerr
|
# define bdterr llerr
|
||||||
# ifdef CONFIG_DEBUG_INFO
|
# define bdtwarn llwarn
|
||||||
# define bdtinfo llerr
|
# define bdtinfo llinfo
|
||||||
# else
|
|
||||||
# define bdtinfo(x...)
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# define bdterr(x...)
|
# define bdterr(x...)
|
||||||
|
# define bdtwarn(x...)
|
||||||
# define bdtinfo(x...)
|
# define bdtinfo(x...)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -602,16 +589,13 @@ static volatile struct usbotg_bdtentry_s g_bdt[4*PIC32MX_NENDPOINTS]
|
|||||||
__attribute__ ((aligned(512)));
|
__attribute__ ((aligned(512)));
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Data
|
* Private Functions
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Private Functions
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Register Operations
|
* Register Operations
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: pic32mx_getreg
|
* Name: pic32mx_getreg
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -637,8 +621,9 @@ static uint16_t pic32mx_getreg(uint32_t addr)
|
|||||||
{
|
{
|
||||||
if (count == 4)
|
if (count == 4)
|
||||||
{
|
{
|
||||||
llerr("...\n");
|
reginfo("...\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -653,7 +638,7 @@ static uint16_t pic32mx_getreg(uint32_t addr)
|
|||||||
{
|
{
|
||||||
/* Yes.. then show how many times the value repeated */
|
/* Yes.. then show how many times the value repeated */
|
||||||
|
|
||||||
llerr("[repeats %d more times]\n", count-3);
|
reginfo("[repeats %d more times]\n", count-3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save the new address, value, and count */
|
/* Save the new address, value, and count */
|
||||||
@@ -665,7 +650,7 @@ static uint16_t pic32mx_getreg(uint32_t addr)
|
|||||||
|
|
||||||
/* Show the register value read */
|
/* Show the register value read */
|
||||||
|
|
||||||
llerr("%08x->%04x\n", addr, val);
|
reginfo("%08x->%04x\n", addr, val);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -679,7 +664,7 @@ static void pic32mx_putreg(uint16_t val, uint32_t addr)
|
|||||||
{
|
{
|
||||||
/* Show the register value being written */
|
/* Show the register value being written */
|
||||||
|
|
||||||
llerr("%08x<-%04x\n", addr, val);
|
reginfo("%08x<-%04x\n", addr, val);
|
||||||
|
|
||||||
/* Write the value */
|
/* Write the value */
|
||||||
|
|
||||||
@@ -874,7 +859,7 @@ static void pic32mx_epwrite(struct pic32mx_ep_s *privep,
|
|||||||
|
|
||||||
/* And, finally, give the BDT to the USB */
|
/* And, finally, give the BDT to the USB */
|
||||||
|
|
||||||
bdterr("EP%d BDT IN [%p] {%08x, %08x}\n",
|
bdtinfo("EP%d BDT IN [%p] {%08x, %08x}\n",
|
||||||
USB_EPNO(privep->ep.eplog), bdt, status, bdt->addr);
|
USB_EPNO(privep->ep.eplog), bdt, status, bdt->addr);
|
||||||
|
|
||||||
bdt->status = status;
|
bdt->status = status;
|
||||||
@@ -915,7 +900,7 @@ static void pic32mx_wrcomplete(struct pic32mx_usbdev_s *priv,
|
|||||||
epno, privreq->req.len, privreq->req.xfrd,
|
epno, privreq->req.len, privreq->req.xfrd,
|
||||||
privreq->inflight[0], privreq->inflight[1]);
|
privreq->inflight[0], privreq->inflight[1]);
|
||||||
#endif
|
#endif
|
||||||
bdterr("EP%d BDT IN [%p] {%08x, %08x}\n",
|
bdtinfo("EP%d BDT IN [%p] {%08x, %08x}\n",
|
||||||
epno, bdtin, bdtin->status, bdtin->addr);
|
epno, bdtin, bdtin->status, bdtin->addr);
|
||||||
|
|
||||||
/* We should own the BDT that just completed. But NULLify the entire BDT IN.
|
/* We should own the BDT that just completed. But NULLify the entire BDT IN.
|
||||||
@@ -1340,7 +1325,7 @@ static int pic32mx_rdcomplete(struct pic32mx_usbdev_s *priv,
|
|||||||
|
|
||||||
ullinfo("EP%d: len=%d xfrd=%d\n",
|
ullinfo("EP%d: len=%d xfrd=%d\n",
|
||||||
epno, privreq->req.len, privreq->req.xfrd);
|
epno, privreq->req.len, privreq->req.xfrd);
|
||||||
bdterr("EP%d BDT OUT [%p] {%08x, %08x}\n",
|
bdtinfo("EP%d BDT OUT [%p] {%08x, %08x}\n",
|
||||||
epno, bdtout, bdtout->status, bdtout->addr);
|
epno, bdtout, bdtout->status, bdtout->addr);
|
||||||
|
|
||||||
/* We should own the BDT that just completed */
|
/* We should own the BDT that just completed */
|
||||||
@@ -1484,7 +1469,8 @@ static int pic32mx_ep0rdsetup(struct pic32mx_usbdev_s *priv, uint8_t *dest,
|
|||||||
|
|
||||||
/* Then give the BDT to the USB */
|
/* Then give the BDT to the USB */
|
||||||
|
|
||||||
bdterr("EP0 BDT OUT [%p] {%08x, %08x}\n", bdtout, status, bdtout->addr);
|
bdtinfo("EP0 BDT OUT [%p] {%08x, %08x}\n",
|
||||||
|
bdtout, status, bdtout->addr);
|
||||||
bdtout->status = status;
|
bdtout->status = status;
|
||||||
|
|
||||||
priv->ctrlstate = CTRLSTATE_RDREQUEST;
|
priv->ctrlstate = CTRLSTATE_RDREQUEST;
|
||||||
@@ -1585,7 +1571,8 @@ static int pic32mx_rdsetup(struct pic32mx_ep_s *privep, uint8_t *dest, int readl
|
|||||||
|
|
||||||
/* Then give the BDT to the USB */
|
/* Then give the BDT to the USB */
|
||||||
|
|
||||||
bdterr("EP%d BDT OUT [%p] {%08x, %08x}\n", epno, bdtout, status, bdtout->addr);
|
bdtinfo("EP%d BDT OUT [%p] {%08x, %08x}\n",
|
||||||
|
epno, bdtout, status, bdtout->addr);
|
||||||
|
|
||||||
bdtout->status = status;
|
bdtout->status = status;
|
||||||
return OK;
|
return OK;
|
||||||
@@ -2596,7 +2583,8 @@ static void pic32mx_ep0transfer(struct pic32mx_usbdev_s *priv, uint16_t ustat)
|
|||||||
bdt = &g_bdt[index];
|
bdt = &g_bdt[index];
|
||||||
priv->eplist[0].bdtout = bdt;
|
priv->eplist[0].bdtout = bdt;
|
||||||
|
|
||||||
bdterr("EP0 BDT OUT [%p] {%08x, %08x}\n", bdt, bdt->status, bdt->addr);
|
bdtinfo("EP0 BDT OUT [%p] {%08x, %08x}\n",
|
||||||
|
bdt, bdt->status, bdt->addr);
|
||||||
|
|
||||||
/* Check the current EP0 OUT buffer contains a SETUP packet */
|
/* Check the current EP0 OUT buffer contains a SETUP packet */
|
||||||
|
|
||||||
@@ -2832,7 +2820,7 @@ static int pic32mx_interrupt(int irq, void *context)
|
|||||||
if ((usbir & USB_INT_UERR) != 0)
|
if ((usbir & USB_INT_UERR) != 0)
|
||||||
{
|
{
|
||||||
usbtrace(TRACE_INTDECODE(PIC32MX_TRACEINTID_UERR), usbir);
|
usbtrace(TRACE_INTDECODE(PIC32MX_TRACEINTID_UERR), usbir);
|
||||||
ullerr("Error: EIR=%04x\n", pic32mx_getreg(PIC32MX_USB_EIR));
|
ullerr("ERROR: EIR=%04x\n", pic32mx_getreg(PIC32MX_USB_EIR));
|
||||||
|
|
||||||
/* Clear all pending USB error interrupts */
|
/* Clear all pending USB error interrupts */
|
||||||
|
|
||||||
@@ -3210,7 +3198,8 @@ static int pic32mx_epconfigure(struct usbdev_ep_s *ep,
|
|||||||
bdt->status = 0;
|
bdt->status = 0;
|
||||||
bdt->addr = 0;
|
bdt->addr = 0;
|
||||||
|
|
||||||
bdterr("EP%d BDT IN [%p] {%08x, %08x}\n", epno, bdt, bdt->status, bdt->addr);
|
bdtinfo("EP%d BDT IN [%p] {%08x, %08x}\n",
|
||||||
|
epno, bdt, bdt->status, bdt->addr);
|
||||||
|
|
||||||
/* Now do the same for the other buffer. */
|
/* Now do the same for the other buffer. */
|
||||||
|
|
||||||
@@ -3218,7 +3207,8 @@ static int pic32mx_epconfigure(struct usbdev_ep_s *ep,
|
|||||||
bdt->status = 0;
|
bdt->status = 0;
|
||||||
bdt->addr = 0;
|
bdt->addr = 0;
|
||||||
|
|
||||||
bdterr("EP%d BDT IN [%p] {%08x, %08x}\n", epno, bdt, bdt->status, bdt->addr);
|
bdtinfo("EP%d BDT IN [%p] {%08x, %08x}\n",
|
||||||
|
epno, bdt, bdt->status, bdt->addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!epin || bidi)
|
if (!epin || bidi)
|
||||||
@@ -3232,7 +3222,8 @@ static int pic32mx_epconfigure(struct usbdev_ep_s *ep,
|
|||||||
bdt->status = 0;
|
bdt->status = 0;
|
||||||
bdt->addr = 0;
|
bdt->addr = 0;
|
||||||
|
|
||||||
bdterr("EP%d BDT OUT [%p] {%08x, %08x}\n", epno, bdt, bdt->status, bdt->addr);
|
bdtinfo("EP%d BDT OUT [%p] {%08x, %08x}\n",
|
||||||
|
epno, bdt, bdt->status, bdt->addr);
|
||||||
|
|
||||||
/* Now do the same for the other buffer. */
|
/* Now do the same for the other buffer. */
|
||||||
|
|
||||||
@@ -3240,7 +3231,8 @@ static int pic32mx_epconfigure(struct usbdev_ep_s *ep,
|
|||||||
bdt->status = 0;
|
bdt->status = 0;
|
||||||
bdt->addr = 0;
|
bdt->addr = 0;
|
||||||
|
|
||||||
bdterr("EP%d BDT OUT [%p] {%08x, %08x}\n", epno, bdt, bdt->status, bdt->addr);
|
bdtinfo("EP%d BDT OUT [%p] {%08x, %08x}\n",
|
||||||
|
epno, bdt, bdt->status, bdt->addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the maxpacket size of the endpoint. */
|
/* Get the maxpacket size of the endpoint. */
|
||||||
@@ -3376,7 +3368,8 @@ static int pic32mx_epsubmit(struct usbdev_ep_s *ep, struct usbdev_req_s *req)
|
|||||||
if (!req || !req->callback || !req->buf || !ep)
|
if (!req || !req->callback || !req->buf || !ep)
|
||||||
{
|
{
|
||||||
usbtrace(TRACE_DEVERROR(PIC32MX_TRACEERR_INVALIDPARMS), 0);
|
usbtrace(TRACE_DEVERROR(PIC32MX_TRACEERR_INVALIDPARMS), 0);
|
||||||
ullerr("ERROR: req=%p callback=%p buf=%p ep=%p\n", req, req->callback, req->buf, ep);
|
ullerr("ERROR: req=%p callback=%p buf=%p ep=%p\n",
|
||||||
|
req, req->callback, req->buf, ep);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -3575,9 +3568,9 @@ static int pic32mx_epbdtstall(struct usbdev_ep_s *ep, bool resume, bool epin)
|
|||||||
bdt->addr = (uint8_t *)physaddr;
|
bdt->addr = (uint8_t *)physaddr;
|
||||||
bdt->status = (USB_BDT_UOWN | bytecount);
|
bdt->status = (USB_BDT_UOWN | bytecount);
|
||||||
|
|
||||||
bdterr("EP0 BDT IN [%p] {%08x, %08x}\n",
|
bdtinfo("EP0 BDT IN [%p] {%08x, %08x}\n",
|
||||||
bdt, bdt->status, bdt->addr);
|
bdt, bdt->status, bdt->addr);
|
||||||
bdterr("EP0 BDT IN [%p] {%08x, %08x}\n",
|
bdtinfo("EP0 BDT IN [%p] {%08x, %08x}\n",
|
||||||
otherbdt, otherbdt->status, otherbdt->addr);
|
otherbdt, otherbdt->status, otherbdt->addr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -3592,10 +3585,11 @@ static int pic32mx_epbdtstall(struct usbdev_ep_s *ep, bool resume, bool epin)
|
|||||||
bdt->addr = 0;
|
bdt->addr = 0;
|
||||||
bdt->status = 0;
|
bdt->status = 0;
|
||||||
|
|
||||||
bdterr("EP%d BDT %s [%p] {%08x, %08x}\n",
|
bdtinfo("EP%d BDT %s [%p] {%08x, %08x}\n",
|
||||||
epno, epin ? "IN" : "OUT", bdt, bdt->status, bdt->addr);
|
epno, epin ? "IN" : "OUT", bdt, bdt->status, bdt->addr);
|
||||||
bdterr("EP%d BDT %s [%p] {%08x, %08x}\n",
|
bdtinfo("EP%d BDT %s [%p] {%08x, %08x}\n",
|
||||||
epno, epin ? "IN" : "OUT", otherbdt, otherbdt->status, otherbdt->addr);
|
epno, epin ? "IN" : "OUT", otherbdt, otherbdt->status,
|
||||||
|
otherbdt->addr);
|
||||||
|
|
||||||
/* Restart any queued requests (after a delay so that we can be assured
|
/* Restart any queued requests (after a delay so that we can be assured
|
||||||
* that the hardware has recovered from the stall -- I don't know of any
|
* that the hardware has recovered from the stall -- I don't know of any
|
||||||
@@ -3627,10 +3621,11 @@ static int pic32mx_epbdtstall(struct usbdev_ep_s *ep, bool resume, bool epin)
|
|||||||
|
|
||||||
pic32mx_rqstop(privep);
|
pic32mx_rqstop(privep);
|
||||||
|
|
||||||
bdterr("EP%d BDT %s [%p] {%08x, %08x}\n",
|
bdtinfo("EP%d BDT %s [%p] {%08x, %08x}\n",
|
||||||
epno, epin ? "IN" : "OUT", bdt, bdt->status, bdt->addr);
|
epno, epin ? "IN" : "OUT", bdt, bdt->status, bdt->addr);
|
||||||
bdterr("EP%d BDT %s [%p] {%08x, %08x}\n",
|
bdtinfo("EP%d BDT %s [%p] {%08x, %08x}\n",
|
||||||
epno, epin ? "IN" : "OUT", otherbdt, otherbdt->status, otherbdt->addr);
|
epno, epin ? "IN" : "OUT", otherbdt, otherbdt->status,
|
||||||
|
otherbdt->addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ config PIC32MZ_SPI_ENHBUF
|
|||||||
|
|
||||||
config PIC32MZ_SPI_REGDEBUG
|
config PIC32MZ_SPI_REGDEBUG
|
||||||
bool "SPI Register level debug"
|
bool "SPI Register level debug"
|
||||||
depends on DEBUG_FEATURES
|
depends on DEBUG_INFO
|
||||||
default n
|
default n
|
||||||
---help---
|
---help---
|
||||||
Output detailed register-level SPI device debug information.
|
Output detailed register-level SPI device debug information.
|
||||||
@@ -400,7 +400,7 @@ config NET_WOL
|
|||||||
config NET_REGDEBUG
|
config NET_REGDEBUG
|
||||||
bool "Register level debug"
|
bool "Register level debug"
|
||||||
default n
|
default n
|
||||||
depends on PIC32MZ_ETHERNET && DEBUG_FEATURES
|
depends on PIC32MZ_ETHERNET && DEBUG_NET_INFO
|
||||||
---help---
|
---help---
|
||||||
Enabled low level register debug. Also needs CONFIG_DEBUG_FEATURES.
|
Enabled low level register debug. Also needs CONFIG_DEBUG_FEATURES.
|
||||||
|
|
||||||
|
|||||||
@@ -465,7 +465,7 @@ static void pic32mz_ethreset(struct pic32mz_driver_s *priv);
|
|||||||
#ifdef CONFIG_NET_REGDEBUG
|
#ifdef CONFIG_NET_REGDEBUG
|
||||||
static void pic32mz_printreg(uint32_t addr, uint32_t val, bool iswrite)
|
static void pic32mz_printreg(uint32_t addr, uint32_t val, bool iswrite)
|
||||||
{
|
{
|
||||||
llerr("%08x%s%08x\n", addr, iswrite ? "<-" : "->", val);
|
nllinfo("%08x%s%08x\n", addr, iswrite ? "<-" : "->", val);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -515,7 +515,7 @@ static void pic32mz_checkreg(uint32_t addr, uint32_t val, bool iswrite)
|
|||||||
{
|
{
|
||||||
/* No.. More than one. */
|
/* No.. More than one. */
|
||||||
|
|
||||||
llerr("[repeats %d more times]\n", count);
|
nllinfo("[repeats %d more times]\n", count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,12 +594,12 @@ static void pic32mz_putreg(uint32_t val, uint32_t addr)
|
|||||||
#ifdef CONFIG_NET_DESCDEBUG
|
#ifdef CONFIG_NET_DESCDEBUG
|
||||||
static void pic32mz_dumptxdesc(struct pic32mz_txdesc_s *txdesc, const char *msg)
|
static void pic32mz_dumptxdesc(struct pic32mz_txdesc_s *txdesc, const char *msg)
|
||||||
{
|
{
|
||||||
llerr("TX Descriptor [%p]: %s\n", txdesc, msg);
|
nllinfo("TX Descriptor [%p]: %s\n", txdesc, msg);
|
||||||
llerr(" status: %08x\n", txdesc->status);
|
nllinfo(" status: %08x\n", txdesc->status);
|
||||||
llerr(" address: %08x [%08x]\n", txdesc->address, VIRT_ADDR(txdesc->address));
|
nllinfo(" address: %08x [%08x]\n", txdesc->address, VIRT_ADDR(txdesc->address));
|
||||||
llerr(" tsv1: %08x\n", txdesc->tsv1);
|
nllinfo(" tsv1: %08x\n", txdesc->tsv1);
|
||||||
llerr(" tsv2: %08x\n", txdesc->tsv2);
|
nllinfo(" tsv2: %08x\n", txdesc->tsv2);
|
||||||
llerr(" nexted: %08x [%08x]\n", txdesc->nexted, VIRT_ADDR(txdesc->nexted));
|
nllinfo(" nexted: %08x [%08x]\n", txdesc->nexted, VIRT_ADDR(txdesc->nexted));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -621,12 +621,12 @@ static void pic32mz_dumptxdesc(struct pic32mz_txdesc_s *txdesc, const char *msg)
|
|||||||
#ifdef CONFIG_NET_DESCDEBUG
|
#ifdef CONFIG_NET_DESCDEBUG
|
||||||
static void pic32mz_dumprxdesc(struct pic32mz_rxdesc_s *rxdesc, const char *msg)
|
static void pic32mz_dumprxdesc(struct pic32mz_rxdesc_s *rxdesc, const char *msg)
|
||||||
{
|
{
|
||||||
llerr("RX Descriptor [%p]: %s\n", rxdesc, msg);
|
nllinfo("RX Descriptor [%p]: %s\n", rxdesc, msg);
|
||||||
llerr(" status: %08x\n", rxdesc->status);
|
nllinfo(" status: %08x\n", rxdesc->status);
|
||||||
llerr(" address: %08x [%08x]\n", rxdesc->address, VIRT_ADDR(rxdesc->address));
|
nllinfo(" address: %08x [%08x]\n", rxdesc->address, VIRT_ADDR(rxdesc->address));
|
||||||
llerr(" rsv1: %08x\n", rxdesc->rsv1);
|
nllinfo(" rsv1: %08x\n", rxdesc->rsv1);
|
||||||
llerr(" rsv2: %08x\n", rxdesc->rsv2);
|
nllinfo(" rsv2: %08x\n", rxdesc->rsv2);
|
||||||
llerr(" nexted: %08x [%08x]\n", rxdesc->nexted, VIRT_ADDR(rxdesc->nexted));
|
nllinfo(" nexted: %08x [%08x]\n", rxdesc->nexted, VIRT_ADDR(rxdesc->nexted));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1384,7 +1384,8 @@ static void pic32mz_rxdone(struct pic32mz_driver_s *priv)
|
|||||||
|
|
||||||
if ((rxdesc->rsv2 & RXDESC_RSV2_OK) == 0)
|
if ((rxdesc->rsv2 & RXDESC_RSV2_OK) == 0)
|
||||||
{
|
{
|
||||||
nllerr("ERROR. rsv1: %08x rsv2: %08x\n", rxdesc->rsv1, rxdesc->rsv2);
|
nllwarn("WARNING. rsv1: %08x rsv2: %08x\n",
|
||||||
|
rxdesc->rsv1, rxdesc->rsv2);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
pic32mz_rxreturn(rxdesc);
|
pic32mz_rxreturn(rxdesc);
|
||||||
}
|
}
|
||||||
@@ -1397,7 +1398,8 @@ static void pic32mz_rxdone(struct pic32mz_driver_s *priv)
|
|||||||
|
|
||||||
else if (priv->pd_dev.d_len > CONFIG_NET_ETH_MTU)
|
else if (priv->pd_dev.d_len > CONFIG_NET_ETH_MTU)
|
||||||
{
|
{
|
||||||
nllerr("Too big. packet length: %d rxdesc: %08x\n", priv->pd_dev.d_len, rxdesc->status);
|
nllwarn("WARNING: Too big. packet length: %d rxdesc: %08x\n",
|
||||||
|
priv->pd_dev.d_len, rxdesc->status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
pic32mz_rxreturn(rxdesc);
|
pic32mz_rxreturn(rxdesc);
|
||||||
}
|
}
|
||||||
@@ -1407,7 +1409,8 @@ static void pic32mz_rxdone(struct pic32mz_driver_s *priv)
|
|||||||
else if ((rxdesc->status & (RXDESC_STATUS_EOP | RXDESC_STATUS_SOP)) !=
|
else if ((rxdesc->status & (RXDESC_STATUS_EOP | RXDESC_STATUS_SOP)) !=
|
||||||
(RXDESC_STATUS_EOP | RXDESC_STATUS_SOP))
|
(RXDESC_STATUS_EOP | RXDESC_STATUS_SOP))
|
||||||
{
|
{
|
||||||
nllerr("Fragment. packet length: %d rxdesc: %08x\n", priv->pd_dev.d_len, rxdesc->status);
|
nllwarn("WARNING: Fragment. packet length: %d rxdesc: %08x\n",
|
||||||
|
priv->pd_dev.d_len, rxdesc->status);
|
||||||
NETDEV_RXFRAGMENTS(&priv->pd_dev);
|
NETDEV_RXFRAGMENTS(&priv->pd_dev);
|
||||||
pic32mz_rxreturn(rxdesc);
|
pic32mz_rxreturn(rxdesc);
|
||||||
}
|
}
|
||||||
@@ -1546,7 +1549,8 @@ static void pic32mz_rxdone(struct pic32mz_driver_s *priv)
|
|||||||
{
|
{
|
||||||
/* Unrecognized... drop it. */
|
/* Unrecognized... drop it. */
|
||||||
|
|
||||||
nllerr("Unrecognized packet type dropped: %04x\n", ntohs(BUF->type));
|
nllwarn("WARNING: Unrecognized packet type dropped: %04x\n",
|
||||||
|
ntohs(BUF->type));
|
||||||
NETDEV_RXDROPPED(&priv->pd_dev);
|
NETDEV_RXDROPPED(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1708,7 +1712,7 @@ static int pic32mz_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_RXOVFLW) != 0)
|
if ((status & ETH_INT_RXOVFLW) != 0)
|
||||||
{
|
{
|
||||||
nllerr("RX Overrun. status: %08x\n", status);
|
nllerr("ERROR: RX Overrun. status: %08x\n", status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1719,7 +1723,7 @@ static int pic32mz_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_RXBUFNA) != 0)
|
if ((status & ETH_INT_RXBUFNA) != 0)
|
||||||
{
|
{
|
||||||
nllerr("RX buffer descriptor overrun. status: %08x\n", status);
|
nllerr("ERROR: RX buffer descriptor overrun. status: %08x\n", status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1730,7 +1734,7 @@ static int pic32mz_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_RXBUSE) != 0)
|
if ((status & ETH_INT_RXBUSE) != 0)
|
||||||
{
|
{
|
||||||
nllerr("RX BVCI bus error. status: %08x\n", status);
|
nllerr("ERROR: RX BVCI bus error. status: %08x\n", status);
|
||||||
NETDEV_RXERRORS(&priv->pd_dev);
|
NETDEV_RXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1773,7 +1777,7 @@ static int pic32mz_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_TXABORT) != 0)
|
if ((status & ETH_INT_TXABORT) != 0)
|
||||||
{
|
{
|
||||||
nllerr("TX abort. status: %08x\n", status);
|
nllerr("ERROR: TX abort. status: %08x\n", status);
|
||||||
NETDEV_TXERRORS(&priv->pd_dev);
|
NETDEV_TXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1784,7 +1788,7 @@ static int pic32mz_interrupt(int irq, void *context)
|
|||||||
|
|
||||||
if ((status & ETH_INT_TXBUSE) != 0)
|
if ((status & ETH_INT_TXBUSE) != 0)
|
||||||
{
|
{
|
||||||
nllerr("TX BVCI bus error. status: %08x\n", status);
|
nllerr("ERROR: TX BVCI bus error. status: %08x\n", status);
|
||||||
NETDEV_TXERRORS(&priv->pd_dev);
|
NETDEV_TXERRORS(&priv->pd_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1938,7 +1942,7 @@ static int pic32mz_ifup(struct net_driver_s *dev)
|
|||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
nerr("Bringing up: %d.%d.%d.%d\n",
|
nnllinfoBringing up: %d.%d.%d.%d\n",
|
||||||
dev->d_ipaddr & 0xff, (dev->d_ipaddr >> 8) & 0xff,
|
dev->d_ipaddr & 0xff, (dev->d_ipaddr >> 8) & 0xff,
|
||||||
(dev->d_ipaddr >> 16) & 0xff, dev->d_ipaddr >> 24);
|
(dev->d_ipaddr >> 16) & 0xff, dev->d_ipaddr >> 24);
|
||||||
|
|
||||||
@@ -2028,7 +2032,7 @@ static int pic32mz_ifup(struct net_driver_s *dev)
|
|||||||
ret = pic32mz_phyinit(priv);
|
ret = pic32mz_phyinit(priv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
{
|
{
|
||||||
nerr("pic32mz_phyinit failed: %d\n", ret);
|
nerr("ERROR: pic32mz_phyinit failed: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2105,11 +2109,10 @@ static int pic32mz_ifup(struct net_driver_s *dev)
|
|||||||
priv->pd_dev.d_mac.ether_addr_octet[0] = (uint32_t)(regval & 0xff);
|
priv->pd_dev.d_mac.ether_addr_octet[0] = (uint32_t)(regval & 0xff);
|
||||||
priv->pd_dev.d_mac.ether_addr_octet[1] = (uint32_t)((regval >> 8) & 0xff);
|
priv->pd_dev.d_mac.ether_addr_octet[1] = (uint32_t)((regval >> 8) & 0xff);
|
||||||
|
|
||||||
nerr("MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
ninfo("MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||||
dev->d_mac.ether_addr_octet[0], dev->d_mac.ether_addr_octet[1],
|
dev->d_mac.ether_addr_octet[0], dev->d_mac.ether_addr_octet[1],
|
||||||
dev->d_mac.ether_addr_octet[2], dev->d_mac.ether_addr_octet[3],
|
dev->d_mac.ether_addr_octet[2], dev->d_mac.ether_addr_octet[3],
|
||||||
dev->d_mac.ether_addr_octet[4], dev->d_mac.ether_addr_octet[5]);
|
dev->d_mac.ether_addr_octet[4], dev->d_mac.ether_addr_octet[5]);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Continue Ethernet Controller Initialization ****************************/
|
/* Continue Ethernet Controller Initialization ****************************/
|
||||||
@@ -2396,14 +2399,14 @@ static int pic32mz_rmmac(struct net_driver_s *dev, const uint8_t *mac)
|
|||||||
#if defined(CONFIG_NET_REGDEBUG) && defined(PIC32MZ_HAVE_PHY)
|
#if defined(CONFIG_NET_REGDEBUG) && defined(PIC32MZ_HAVE_PHY)
|
||||||
static void pic32mz_showmii(uint8_t phyaddr, const char *msg)
|
static void pic32mz_showmii(uint8_t phyaddr, const char *msg)
|
||||||
{
|
{
|
||||||
err("PHY " PIC32MZ_PHYNAME ": %s\n", msg);
|
nllinfo("PHY " PIC32MZ_PHYNAME ": %s\n", msg);
|
||||||
err(" MCR: %04x\n", pic32mz_phyread(phyaddr, MII_MCR));
|
nllinfo(" MCR: %04x\n", pic32mz_phyread(phyaddr, MII_MCR));
|
||||||
err(" MSR: %04x\n", pic32mz_phyread(phyaddr, MII_MSR));
|
nllinfo(" MSR: %04x\n", pic32mz_phyread(phyaddr, MII_MSR));
|
||||||
err(" ADVERTISE: %04x\n", pic32mz_phyread(phyaddr, MII_ADVERTISE));
|
nllinfo(" ADVERTISE: %04x\n", pic32mz_phyread(phyaddr, MII_ADVERTISE));
|
||||||
err(" LPA: %04x\n", pic32mz_phyread(phyaddr, MII_LPA));
|
nllinfo(" LPA: %04x\n", pic32mz_phyread(phyaddr, MII_LPA));
|
||||||
err(" EXPANSION: %04x\n", pic32mz_phyread(phyaddr, MII_EXPANSION));
|
nllinfo(" EXPANSION: %04x\n", pic32mz_phyread(phyaddr, MII_EXPANSION));
|
||||||
#ifdef CONFIG_ETH0_PHY_KS8721
|
#ifdef CONFIG_ETH0_PHY_KS8721
|
||||||
err(" 10BTCR: %04x\n", pic32mz_phyread(phyaddr, MII_KS8721_10BTCR));
|
nllinfo(" 10BTCR: %04x\n", pic32mz_phyread(phyaddr, MII_KS8721_10BTCR));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2566,7 +2569,7 @@ static inline int pic32mz_phyreset(uint8_t phyaddr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nerr("Reset failed. MCR: %04x\n", phyreg);
|
nerr("ERROR: Reset failed. MCR: %04x\n", phyreg);
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2613,7 +2616,7 @@ static inline int pic32mz_phyautoneg(uint8_t phyaddr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nerr("Auto-negotiation failed. MSR: %04x\n", phyreg);
|
nerr("ERROR: Auto-negotiation failed. MSR: %04x\n", phyreg);
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2692,7 +2695,7 @@ static int pic32mz_phymode(uint8_t phyaddr, uint8_t mode)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
nerr("Link failed. MSR: %04x\n", phyreg);
|
nerr("ERROR: Link failed. MSR: %04x\n", phyreg);
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -2761,7 +2764,7 @@ static inline int pic32mz_phyinit(struct pic32mz_driver_s *priv)
|
|||||||
ret = pic32mz_phyreset(phyaddr);
|
ret = pic32mz_phyreset(phyaddr);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
nerr("Failed to reset PHY at address %d\n", phyaddr);
|
nerr("ERROR: Failed to reset PHY at address %d\n", phyaddr);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2794,7 +2797,7 @@ static inline int pic32mz_phyinit(struct pic32mz_driver_s *priv)
|
|||||||
{
|
{
|
||||||
/* Failed to find PHY at any location */
|
/* Failed to find PHY at any location */
|
||||||
|
|
||||||
nerr("No PHY detected\n");
|
nerr("ERROR: No PHY detected\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
ninfo("phyaddr: %d\n", phyaddr);
|
ninfo("phyaddr: %d\n", phyaddr);
|
||||||
@@ -2898,7 +2901,7 @@ static inline int pic32mz_phyinit(struct pic32mz_driver_s *priv)
|
|||||||
priv->pd_mode = PIC32MZ_100BASET_FD;
|
priv->pd_mode = PIC32MZ_100BASET_FD;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nerr("Unrecognized mode: %04x\n", phyreg);
|
nerr("ERROR: Unrecognized mode: %04x\n", phyreg);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
#elif defined(CONFIG_ETH0_PHY_DP83848C)
|
#elif defined(CONFIG_ETH0_PHY_DP83848C)
|
||||||
@@ -2921,7 +2924,7 @@ static inline int pic32mz_phyinit(struct pic32mz_driver_s *priv)
|
|||||||
priv->pd_mode = PIC32MZ_10BASET_FD;
|
priv->pd_mode = PIC32MZ_10BASET_FD;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nerr("Unrecognized mode: %04x\n", phyreg);
|
nerr("ERROR: Unrecognized mode: %04x\n", phyreg);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
#elif defined(CONFIG_ETH0_PHY_LAN8720) || defined(CONFIG_ETH0_PHY_LAN8740) || defined(CONFIG_ETH0_PHY_LAN8740A)
|
#elif defined(CONFIG_ETH0_PHY_LAN8720) || defined(CONFIG_ETH0_PHY_LAN8740) || defined(CONFIG_ETH0_PHY_LAN8740A)
|
||||||
@@ -2966,7 +2969,7 @@ static inline int pic32mz_phyinit(struct pic32mz_driver_s *priv)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nerr("Unrecognized mode: %04x\n", phyreg);
|
nerr("ERROR: Unrecognized mode: %04x\n", phyreg);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2974,7 +2977,7 @@ static inline int pic32mz_phyinit(struct pic32mz_driver_s *priv)
|
|||||||
# warning "PHY Unknown: speed and duplex are bogus"
|
# warning "PHY Unknown: speed and duplex are bogus"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nerr("%dBase-T %s duplex\n",
|
ninfo("%dBase-T %s duplex\n",
|
||||||
(priv->pd_mode & PIC32MZ_SPEED_MASK) == PIC32MZ_SPEED_100 ? 100 : 10,
|
(priv->pd_mode & PIC32MZ_SPEED_MASK) == PIC32MZ_SPEED_100 ? 100 : 10,
|
||||||
(priv->pd_mode & PIC32MZ_DUPLEX_MASK) == PIC32MZ_DUPLEX_FULL ?"full" : "half");
|
(priv->pd_mode & PIC32MZ_DUPLEX_MASK) == PIC32MZ_DUPLEX_FULL ?"full" : "half");
|
||||||
|
|
||||||
|
|||||||
@@ -55,22 +55,6 @@
|
|||||||
|
|
||||||
#include "chip/pic32mz-int.h"
|
#include "chip/pic32mz-int.h"
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Pre-processor Definitions
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Public Data
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Data
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Functions
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -106,88 +90,88 @@ uint32_t *pic32mz_exception(uint32_t *regs)
|
|||||||
switch (cause & CP0_CAUSE_EXCCODE_MASK)
|
switch (cause & CP0_CAUSE_EXCCODE_MASK)
|
||||||
{
|
{
|
||||||
case CP0_CAUSE_EXCCODE_INT: /* Interrupt */
|
case CP0_CAUSE_EXCCODE_INT: /* Interrupt */
|
||||||
llinfo("EXCEPTION: Interrupt"
|
alert("EXCEPTION: Interrupt"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_TLBL: /* TLB exception (load or instruction fetch) */
|
case CP0_CAUSE_EXCCODE_TLBL: /* TLB exception (load or instruction fetch) */
|
||||||
llinfo("EXCEPTION: TLB exception (load or instruction fetch)"
|
alert("EXCEPTION: TLB exception (load or instruction fetch)"
|
||||||
" CAUSE: %08x EPC:%08x\n", cause, epc);
|
" CAUSE: %08x EPC:%08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_TLBS: /* TLB exception (store) */
|
case CP0_CAUSE_EXCCODE_TLBS: /* TLB exception (store) */
|
||||||
llinfo("EXCEPTION: TLB exception (store)"
|
alert("EXCEPTION: TLB exception (store)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_ADEL: /* Address error exception (load or instruction fetch) */
|
case CP0_CAUSE_EXCCODE_ADEL: /* Address error exception (load or instruction fetch) */
|
||||||
llinfo("EXCEPTION: Address error exception (load or instruction fetch)"
|
alert("EXCEPTION: Address error exception (load or instruction fetch)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_ADES: /* Address error exception (store) */
|
case CP0_CAUSE_EXCCODE_ADES: /* Address error exception (store) */
|
||||||
llinfo("EXCEPTION: Address error exception (store)"
|
alert("EXCEPTION: Address error exception (store)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_IBE: /* Bus error exception (instruction fetch) */
|
case CP0_CAUSE_EXCCODE_IBE: /* Bus error exception (instruction fetch) */
|
||||||
llinfo("EXCEPTION: Bus error exception (instruction fetch)"
|
alert("EXCEPTION: Bus error exception (instruction fetch)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_DBE: /* Bus error exception (data reference: load or store) */
|
case CP0_CAUSE_EXCCODE_DBE: /* Bus error exception (data reference: load or store) */
|
||||||
llinfo("EXCEPTION: Bus error exception (data reference: load or store)"
|
alert("EXCEPTION: Bus error exception (data reference: load or store)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_SYS: /* Syscall exception */
|
case CP0_CAUSE_EXCCODE_SYS: /* Syscall exception */
|
||||||
llinfo("EXCEPTION: Syscall exception"
|
alert("EXCEPTION: Syscall exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_BP: /* Breakpoint exception */
|
case CP0_CAUSE_EXCCODE_BP: /* Breakpoint exception */
|
||||||
llinfo("EXCEPTION: Breakpoint exception"
|
alert("EXCEPTION: Breakpoint exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_RI: /* Reserved instruction exception */
|
case CP0_CAUSE_EXCCODE_RI: /* Reserved instruction exception */
|
||||||
llinfo("EXCEPTION: Reserved instruction exception"
|
alert("EXCEPTION: Reserved instruction exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_CPU: /* Coprocessor Unusable exception */
|
case CP0_CAUSE_EXCCODE_CPU: /* Coprocessor Unusable exception */
|
||||||
llinfo("EXCEPTION: Coprocessor Unusable exception"
|
alert("EXCEPTION: Coprocessor Unusable exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_OV: /* Arithmetic Overflow exception */
|
case CP0_CAUSE_EXCCODE_OV: /* Arithmetic Overflow exception */
|
||||||
llinfo("EXCEPTION: Arithmetic Overflow exception"
|
alert("EXCEPTION: Arithmetic Overflow exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_TR: /* Trap exception */
|
case CP0_CAUSE_EXCCODE_TR: /* Trap exception */
|
||||||
llinfo("EXCEPTION: Trap exception"
|
alert("EXCEPTION: Trap exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_FPE: /* Floating point exception */
|
case CP0_CAUSE_EXCCODE_FPE: /* Floating point exception */
|
||||||
llinfo("EXCEPTION: Floating point exception"
|
alert("EXCEPTION: Floating point exception"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_C2E: /* Precise Coprocessor 2 exceptions */
|
case CP0_CAUSE_EXCCODE_C2E: /* Precise Coprocessor 2 exceptions */
|
||||||
llinfo("EXCEPTION: Precise Coprocessor 2 exceptions"
|
alert("EXCEPTION: Precise Coprocessor 2 exceptions"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_MDMX: /* MDMX Unusable (MIPS64) */
|
case CP0_CAUSE_EXCCODE_MDMX: /* MDMX Unusable (MIPS64) */
|
||||||
llinfo("EXCEPTION: MDMX Unusable (MIPS64)"
|
alert("EXCEPTION: MDMX Unusable (MIPS64)"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_WATCH: /* WatchHi/WatchLo address */
|
case CP0_CAUSE_EXCCODE_WATCH: /* WatchHi/WatchLo address */
|
||||||
llinfo("EXCEPTION: WatchHi/WatchLo address"
|
alert("EXCEPTION: WatchHi/WatchLo address"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_MCHECK: /* Machine check */
|
case CP0_CAUSE_EXCCODE_MCHECK: /* Machine check */
|
||||||
llinfo("EXCEPTION: Machine check"
|
alert("EXCEPTION: Machine check"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
case CP0_CAUSE_EXCCODE_CACHEERR: /* Cache error */
|
case CP0_CAUSE_EXCCODE_CACHEERR: /* Cache error */
|
||||||
llinfo("EXCEPTION: Cache error"
|
alert("EXCEPTION: Cache error"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
llinfo("EXCEPTION: Unknown"
|
alert("EXCEPTION: Unknown"
|
||||||
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
" CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
llerr("EXCEPTION: CAUSE: %08x EPC: %08x\n", cause, epc);
|
alert("EXCEPTION: CAUSE: %08x EPC: %08x\n", cause, epc);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ bool pic32mz_gpioread(pinset_t pinset)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if defined(CONFIG_DEBUG_FEATURES) && defined(CONFIG_DEBUG_INFO) && defined(CONFIG_DEBUG_GPIO)
|
#if defined(CONFIG_DEBUG_INFO) && defined(CONFIG_DEBUG_GPIO)
|
||||||
void pic32mz_dumpgpio(uint32_t pinset, const char *msg)
|
void pic32mz_dumpgpio(uint32_t pinset, const char *msg)
|
||||||
{
|
{
|
||||||
unsigned int port = pic32mz_portno(pinset);
|
unsigned int port = pic32mz_portno(pinset);
|
||||||
@@ -325,14 +325,14 @@ void pic32mz_dumpgpio(uint32_t pinset, const char *msg)
|
|||||||
/* The following requires exclusive access to the GPIO registers */
|
/* The following requires exclusive access to the GPIO registers */
|
||||||
|
|
||||||
sched_lock();
|
sched_lock();
|
||||||
llerr("IOPORT%c pinset: %04x base: %08x -- %s\n",
|
llinfo("IOPORT%c pinset: %04x base: %08x -- %s\n",
|
||||||
'A'+port, pinset, base, msg);
|
'A'+port, pinset, base, msg);
|
||||||
llerr(" TRIS: %08x PORT: %08x LAT: %08x ODC: %08x\n",
|
llinfo(" TRIS: %08x PORT: %08x LAT: %08x ODC: %08x\n",
|
||||||
getreg32(base + PIC32MZ_IOPORT_TRIS_OFFSET),
|
getreg32(base + PIC32MZ_IOPORT_TRIS_OFFSET),
|
||||||
getreg32(base + PIC32MZ_IOPORT_PORT_OFFSET),
|
getreg32(base + PIC32MZ_IOPORT_PORT_OFFSET),
|
||||||
getreg32(base + PIC32MZ_IOPORT_LAT_OFFSET),
|
getreg32(base + PIC32MZ_IOPORT_LAT_OFFSET),
|
||||||
getreg32(base + PIC32MZ_IOPORT_ODC_OFFSET));
|
getreg32(base + PIC32MZ_IOPORT_ODC_OFFSET));
|
||||||
llerr(" CNCON: %08x CNEN: %08x CNPUE: %08x\n",
|
llinfo(" CNCON: %08x CNEN: %08x CNPUE: %08x\n",
|
||||||
getreg32(PIC32MZ_IOPORT_CNCON),
|
getreg32(PIC32MZ_IOPORT_CNCON),
|
||||||
getreg32(PIC32MZ_IOPORT_CNEN),
|
getreg32(PIC32MZ_IOPORT_CNEN),
|
||||||
getreg32(PIC32MZ_IOPORT_CNPUE));
|
getreg32(PIC32MZ_IOPORT_CNPUE));
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ void pic32mz_gpioirqdisable(pinset_t pinset);
|
|||||||
*
|
*
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_GPIO
|
#if defined(CONFIG_DEBUG_INFO) && defined(CONFIG_DEBUG_GPIO)
|
||||||
void pic32mz_dumpgpio(uint32_t pinset, const char *msg);
|
void pic32mz_dumpgpio(uint32_t pinset, const char *msg);
|
||||||
#else
|
#else
|
||||||
# define pic32mz_dumpgpio(p,m)
|
# define pic32mz_dumpgpio(p,m)
|
||||||
|
|||||||
@@ -71,13 +71,11 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_DEBUG_SPI
|
#ifdef CONFIG_DEBUG_SPI
|
||||||
# define spierr llerr
|
# define spierr llerr
|
||||||
# ifdef CONFIG_DEBUG_INFO
|
# define spiwarn llwarn
|
||||||
# define spiinfo llerr
|
# define spiinfo llinfo
|
||||||
# else
|
|
||||||
# define spiinfo(x...)
|
|
||||||
# endif
|
|
||||||
#else
|
#else
|
||||||
# define spierr(x...)
|
# define spierr(x...)
|
||||||
|
# define spiwarn(x...)
|
||||||
# define spiinfo(x...)
|
# define spiinfo(x...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -496,7 +494,7 @@ static bool spi_checkreg(struct pic32mz_dev_s *priv, uintptr_t regaddr,
|
|||||||
{
|
{
|
||||||
/* Yes... show how many times we did it */
|
/* Yes... show how many times we did it */
|
||||||
|
|
||||||
llerr("...[Repeats %d times]...\n", priv->ntimes);
|
llinfo("...[Repeats %d times]...\n", priv->ntimes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save information about the new access */
|
/* Save information about the new access */
|
||||||
@@ -546,7 +544,7 @@ static uint32_t spi_getreg(FAR struct pic32mz_dev_s *priv,
|
|||||||
{
|
{
|
||||||
/* Yes.. */
|
/* Yes.. */
|
||||||
|
|
||||||
llerr("%08lx->%08lx\n",
|
llinfo("%08lx->%08lx\n",
|
||||||
(unsigned long)regaddr, (unsigned long)regval);
|
(unsigned long)regaddr, (unsigned long)regval);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -588,7 +586,7 @@ static void spi_putaddr(FAR struct pic32mz_dev_s *priv, uintptr_t regaddr,
|
|||||||
{
|
{
|
||||||
/* Yes.. */
|
/* Yes.. */
|
||||||
|
|
||||||
llerr("%08lx<-%08lx\n",
|
llinfo("%08lx<-%08lx\n",
|
||||||
(unsigned long)regaddr, (unsigned long)regval);
|
(unsigned long)regaddr, (unsigned long)regval);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -887,7 +885,7 @@ static uint32_t spi_setfrequency(FAR struct spi_dev_s *dev, uint32_t frequency)
|
|||||||
priv->frequency = frequency;
|
priv->frequency = frequency;
|
||||||
priv->actual = actual;
|
priv->actual = actual;
|
||||||
|
|
||||||
spierr("New frequency: %d Actual: %d\n", frequency, actual);
|
spiinfo("New frequency: %d Actual: %d\n", frequency, actual);
|
||||||
return actual;
|
return actual;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1025,7 +1023,7 @@ static void spi_setbits(FAR struct spi_dev_s *dev, int nbits)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spierr("Unsupported nbits: %d\n", nbits);
|
spierr("ERROR: Unsupported nbits: %d\n", nbits);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1275,7 +1273,7 @@ FAR struct spi_dev_s *pic32mz_spibus_initialize(int port)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
spierr("Unsuppport port: %d\n", port);
|
spierr("ERROR: Unsuppport port: %d\n", port);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1311,7 +1309,7 @@ FAR struct spi_dev_s *pic32mz_spibus_initialize(int port)
|
|||||||
ret = irq_attach(priv->config->rxirq, spi_interrupt);
|
ret = irq_attach(priv->config->rxirq, spi_interrupt);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("Failed to attach RX interrupt: %d port: %d\n",
|
spierr("ERROR: Failed to attach RX interrupt: %d port: %d\n",
|
||||||
priv->config->rxirq, port);
|
priv->config->rxirq, port);
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
@@ -1319,7 +1317,7 @@ FAR struct spi_dev_s *pic32mz_spibus_initialize(int port)
|
|||||||
ret = irq_attach(priv->config->txirq, spi_interrupt);
|
ret = irq_attach(priv->config->txirq, spi_interrupt);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("Failed to attach TX interrupt: %d port: %d\n",
|
spierr("ERROR: Failed to attach TX interrupt: %d port: %d\n",
|
||||||
priv->tconfig->xirq, port);
|
priv->tconfig->xirq, port);
|
||||||
goto errout_with_rxirq;
|
goto errout_with_rxirq;
|
||||||
}
|
}
|
||||||
@@ -1327,7 +1325,7 @@ FAR struct spi_dev_s *pic32mz_spibus_initialize(int port)
|
|||||||
ret = irq_attach(priv->config->firq, spi_interrupt);
|
ret = irq_attach(priv->config->firq, spi_interrupt);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("Failed to attach fault interrupt: %d port: %d\n",
|
spierr("ERROR: Failed to attach fault interrupt: %d port: %d\n",
|
||||||
priv->config->firq, port);
|
priv->config->firq, port);
|
||||||
goto errout_with_txirq;
|
goto errout_with_txirq;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -263,23 +263,27 @@ static int up_setup(struct uart_dev_s *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set speed; requires DLAB latch
|
// Set speed; requires DLAB latch
|
||||||
|
|
||||||
outb(base+COM_LCR, COM_LCR_DLAB);
|
outb(base+COM_LCR, COM_LCR_DLAB);
|
||||||
data.val = 115200 / priv->baud;
|
data.val = 115200 / priv->baud;
|
||||||
outb(base+COM_DLL, data.sep.low);
|
outb(base+COM_DLL, data.sep.low);
|
||||||
outb(base+COM_DLM, data.sep.high);
|
outb(base+COM_DLM, data.sep.high);
|
||||||
|
|
||||||
// set data bits, stop bit, parity; turn off DLAB latch
|
// set data bits, stop bit, parity; turn off DLAB latch
|
||||||
|
|
||||||
outb(base+COM_LCR, priv->lcr.val);
|
outb(base+COM_LCR, priv->lcr.val);
|
||||||
|
|
||||||
// OUT2 must be set to enable interrupt
|
// OUT2 must be set to enable interrupt
|
||||||
|
|
||||||
outb(base+COM_MCR, COM_MCR_OUT2);
|
outb(base+COM_MCR, COM_MCR_OUT2);
|
||||||
|
|
||||||
// setup FIFO
|
// setup FIFO
|
||||||
|
|
||||||
outb(base+COM_FCR, 1);
|
outb(base+COM_FCR, 1);
|
||||||
|
|
||||||
// disable COM interrupts
|
// disable COM interrupts
|
||||||
outb(base+COM_IER, 0);
|
|
||||||
|
|
||||||
|
outb(base+COM_IER, 0);
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user