change log for rtems (2011-07-11)
rtems-vc at rtems.org
rtems-vc at rtems.org
Mon Jul 11 14:12:07 UTC 2011
*sh*:
2011-07-11 Sebastian Huber <sebastian.huber at embedded-brains.de>
* libchip/serial/ns16550_p.h, libchip/serial/ns16550.c: Remove
interrupt handler during last close.
M 1.552 c/src/ChangeLog
M 1.50 c/src/libchip/serial/ns16550.c
M 1.17 c/src/libchip/serial/ns16550_p.h
diff -u rtems/c/src/ChangeLog:1.551 rtems/c/src/ChangeLog:1.552
--- rtems/c/src/ChangeLog:1.551 Thu Jul 7 17:15:24 2011
+++ rtems/c/src/ChangeLog Mon Jul 11 08:31:12 2011
@@ -1,3 +1,8 @@
+2011-07-11 Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+ * libchip/serial/ns16550_p.h, libchip/serial/ns16550.c: Remove
+ interrupt handler during last close.
+
2011-07-07 Joel Sherrill <joel.sherrill at oarcorp.com>
* libchip/display/disp_hcms29xx.c, libchip/flash/am29lv160.c,
diff -u rtems/c/src/libchip/serial/ns16550.c:1.49 rtems/c/src/libchip/serial/ns16550.c:1.50
--- rtems/c/src/libchip/serial/ns16550.c:1.49 Wed Feb 16 02:25:00 2011
+++ rtems/c/src/libchip/serial/ns16550.c Mon Jul 11 08:31:13 2011
@@ -203,15 +203,21 @@
void * arg
)
{
+ console_tbl *c = &Console_Port_Tbl [minor];
+
/*
* Negate DTR
*/
- if(Console_Port_Tbl[minor].pDeviceFlow != &ns16550_flow_DTRCTS) {
+ if (c->pDeviceFlow != &ns16550_flow_DTRCTS) {
ns16550_negate_DTR(minor);
}
ns16550_enable_interrupts(minor, NS16550_DISABLE_ALL_INTR);
+ if (c->pDeviceFns->deviceOutputUsesInterrupts) {
+ ns16550_cleanup_interrupts(minor);
+ }
+
return(RTEMS_SUCCESSFUL);
}
@@ -651,6 +657,38 @@
#endif
}
+NS16550_STATIC void ns16550_cleanup_interrupts(int minor)
+{
+ #if defined(BSP_FEATURE_IRQ_EXTENSION)
+ rtems_status_code sc = RTEMS_SUCCESSFUL;
+ console_tbl *c = &Console_Port_Tbl [minor];
+ sc = rtems_interrupt_handler_remove(
+ c->ulIntVector,
+ ns16550_isr,
+ (void *) minor
+ );
+ if (sc != RTEMS_SUCCESSFUL) {
+ /* FIXME */
+ printk("%s: Error: Remove interrupt handler\n", __func__);
+ rtems_fatal_error_occurred(0xdeadbeef);
+ }
+ #elif defined(BSP_FEATURE_IRQ_LEGACY)
+ int rv = 0;
+ console_tbl *c = &Console_Port_Tbl [minor];
+ rtems_irq_connect_data cd = {
+ .name = c->ulIntVector,
+ .hdl = ns16550_isr,
+ .handle = (void *) minor
+ };
+ rv = BSP_remove_rtems_irq_handler(&cd);
+ if (rv == 0) {
+ /* FIXME */
+ printk("%s: Error: Remove interrupt handler\n", __func__);
+ rtems_fatal_error_occurred(0xdeadbeef);
+ }
+ #endif
+}
+
/*
* ns16550_write_support_polled
*
diff -u rtems/c/src/libchip/serial/ns16550_p.h:1.16 rtems/c/src/libchip/serial/ns16550_p.h:1.17
--- rtems/c/src/libchip/serial/ns16550_p.h:1.16 Tue Feb 15 17:25:24 2011
+++ rtems/c/src/libchip/serial/ns16550_p.h Mon Jul 11 08:31:13 2011
@@ -171,6 +171,8 @@
NS16550_STATIC void ns16550_initialize_interrupts(int minor);
+NS16550_STATIC void ns16550_cleanup_interrupts(int minor);
+
NS16550_STATIC ssize_t ns16550_write_support_int(
int minor,
const char *buf,
--
Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20110711/8867ab3b/attachment-0001.html>
More information about the vc
mailing list