Changeset 21b6307 in mainline


Ignore:
Timestamp:
2012-10-31T18:26:45Z (11 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3da166f0
Parents:
6bbe470
Message:

Merge ns16550_output into ns16550_init.

Location:
kernel
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/amd64.c

    r6bbe470 r21b6307  
    222222         * Initialize the ns16550 controller.
    223223         */
     224#ifdef CONFIG_NS16550_OUT
     225        outdev_t *ns16550_out;
     226        outdev_t **ns16550_out_ptr = &ns16550_out;
     227#else
     228        outdev_t **ns16550_out_ptr = NULL;
     229#endif
    224230        ns16550_instance_t *ns16550_instance
    225             = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL);
     231            = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL,
     232            ns16550_out_ptr);
    226233        if (ns16550_instance) {
    227234#ifdef CONFIG_NS16550
     
    235242#endif
    236243#ifdef CONFIG_NS16550_OUT
    237                 outdev_t *ns16550_out = ns16550_output(ns16550_instance);
    238244                if (ns16550_out) {
    239245                        stdout_wire(ns16550_out);
  • kernel/arch/ia32/src/ia32.c

    r6bbe470 r21b6307  
    176176         * Initialize the ns16550 controller.
    177177         */
     178#ifdef CONFIG_NS16550_OUT
     179        outdev_t *ns16550_out;
     180        outdev_t **ns16550_out_ptr = &ns16550_out;
     181#else
     182        outdev_t **ns16550_out_ptr = NULL;
     183#endif
    178184        ns16550_instance_t *ns16550_instance
    179             = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL);
     185            = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL,
     186            ns16550_out_ptr);
    180187        if (ns16550_instance) {
    181188#ifdef CONFIG_NS16550
     
    189196#endif
    190197#ifdef CONFIG_NS16550_OUT
    191                 outdev_t *ns16550_out = ns16550_output(ns16550_instance);
    192198                if (ns16550_out) {
    193199                        stdout_wire(ns16550_out);
  • kernel/arch/ia64/src/ia64.c

    r6bbe470 r21b6307  
    173173#ifdef CONFIG_NS16550
    174174        ns16550_instance_t *ns16550_instance
    175             = ns16550_init((ns16550_t *) NS16550_BASE, NS16550_IRQ, NULL, NULL);
     175            = ns16550_init((ns16550_t *) NS16550_BASE, NS16550_IRQ, NULL, NULL,
     176            NULL);
    176177        if (ns16550_instance) {
    177178                srln_instance_t *srln_instance = srln_init();
  • kernel/arch/sparc64/src/drivers/kbd.c

    r6bbe470 r21b6307  
    117117            PAGE_WRITE | PAGE_NOT_CACHEABLE) + offset);
    118118       
    119         ns16550_instance_t *ns16550_instance = ns16550_init(ns16550, inr, cir, cir_arg);
     119        ns16550_instance_t *ns16550_instance = ns16550_init(ns16550, inr, cir,
     120            cir_arg, NULL);
    120121        if (ns16550_instance) {
    121122                kbrd_instance_t *kbrd_instance = kbrd_init();
  • kernel/genarch/include/drivers/ns16550/ns16550.h

    r6bbe470 r21b6307  
    7474} ns16550_instance_t;
    7575
    76 extern ns16550_instance_t *ns16550_init(ns16550_t *, inr_t, cir_t, void *);
     76extern ns16550_instance_t *ns16550_init(ns16550_t *, inr_t, cir_t, void *,
     77    outdev_t **);
    7778extern void ns16550_wire(ns16550_instance_t *, indev_t *);
    78 extern outdev_t *ns16550_output(ns16550_instance_t *);
    7979
    8080#endif
  • kernel/genarch/src/drivers/ns16550/ns16550.c

    r6bbe470 r21b6307  
    102102 *
    103103 * @param dev      Addrress of the beginning of the device in I/O space.
    104  * @param devno    Device number.
    105104 * @param inr      Interrupt number.
    106105 * @param cir      Clear interrupt function.
    107106 * @param cir_arg  First argument to cir.
     107 * @param output   Where to store pointer to the output device
     108 *                 or NULL if the caller is not interested in
     109 *                 writing to the serial port.
    108110 *
    109111 * @return Keyboard instance or NULL on failure.
    110112 *
    111113 */
    112 ns16550_instance_t *ns16550_init(ns16550_t *dev, inr_t inr, cir_t cir, void *cir_arg)
     114ns16550_instance_t *ns16550_init(ns16550_t *dev, inr_t inr, cir_t cir,
     115    void *cir_arg, outdev_t **output)
    113116{
    114117        ns16550_instance_t *instance
     
    118121                instance->input = NULL;
    119122                instance->output = NULL;
     123               
     124                if (output) {
     125                        instance->output = malloc(sizeof(outdev_t),
     126                            FRAME_ATOMIC);
     127                        if (!instance->output) {
     128                                free(instance);
     129                                return NULL;
     130                        }
     131                       
     132                        outdev_initialize("ns16550", instance->output,
     133                            &ns16550_ops);
     134                        instance->output->data = instance;
     135                        *output = instance->output;
     136                }
    120137               
    121138                irq_initialize(&instance->irq);
     
    153170}
    154171
    155 outdev_t *ns16550_output(ns16550_instance_t *instance)
    156 {
    157         ASSERT(instance);
    158        
    159         if (instance->output == NULL) {
    160                 instance->output = malloc(sizeof(outdev_t),
    161                     FRAME_ATOMIC);
    162                 if (instance->output) {
    163                         outdev_initialize("ns16550", instance->output,
    164                             &ns16550_ops);
    165                         instance->output->data = instance;
    166                 }
    167         }
    168        
    169         return instance->output;
    170 }
    171 
    172172/** @}
    173173 */
Note: See TracChangeset for help on using the changeset viewer.