Ignore:
Timestamp:
2012-10-31T18:26:45Z (12 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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.