Changeset ba21938 in mainline


Ignore:
Timestamp:
2011-01-06T22:23:21Z (14 years ago)
Author:
martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3d5e190, efa8aec6
Parents:
c2f3e0b (diff), d8d8bbd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

merge I/O space handling improvements

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/ddi/irq.h

    rc2f3e0b rba21938  
    5454        /** Read 4 bytes from the I/O space. */
    5555        CMD_PIO_READ_32,
     56       
    5657        /** Write 1 byte to the I/O space. */
    5758        CMD_PIO_WRITE_8,
     
    6263       
    6364        /**
    64          * Perform a bit test on the source argument and store the result into
    65          * the destination argument.
     65         * Write 1 byte from the source argument
     66         * to the I/O space.
     67         */
     68        CMD_PIO_WRITE_A_8,
     69        /**
     70         * Write 2 bytes from the source argument
     71         * to the I/O space.
     72         */
     73        CMD_PIO_WRITE_A_16,
     74        /**
     75         * Write 4 bytes from the source argument
     76         * to the I/O space.
     77         */
     78        CMD_PIO_WRITE_A_32,
     79       
     80        /**
     81         * Perform a bit masking on the source argument
     82         * and store the result into the destination argument.
    6683         */
    6784        CMD_BTEST,
    6885       
    6986        /**
    70          * Predicate the execution of the following N commands by the boolean
    71          * value of the source argument.
     87         * Predicate the execution of the following
     88         * N commands by the boolean value of the source
     89         * argument.
    7290         */
    7391        CMD_PREDICATE,
     
    7593        /** Accept the interrupt. */
    7694        CMD_ACCEPT,
     95       
    7796        /** Decline the interrupt. */
    7897        CMD_DECLINE,
  • kernel/generic/src/ipc/irq.c

    rc2f3e0b rba21938  
    404404                            (uint32_t) code->cmds[i].value);
    405405                        break;
     406                case CMD_PIO_WRITE_A_8:
     407                        if (srcarg) {
     408                                pio_write_8((ioport8_t *) code->cmds[i].addr,
     409                                    (uint8_t) scratch[srcarg]);
     410                        }
     411                        break;
     412                case CMD_PIO_WRITE_A_16:
     413                        if (srcarg) {
     414                                pio_write_16((ioport16_t *) code->cmds[i].addr,
     415                                    (uint16_t) scratch[srcarg]);
     416                        }
     417                        break;
     418                case CMD_PIO_WRITE_A_32:
     419                        if (srcarg) {
     420                                pio_write_32((ioport32_t *) code->cmds[i].addr,
     421                                    (uint32_t) scratch[srcarg]);
     422                        }
     423                        break;
    406424                case CMD_BTEST:
    407425                        if ((srcarg) && (dstarg)) {
  • uspace/srv/hw/netif/dp8390/dp8390.c

    rc2f3e0b rba21938  
    375375}
    376376
    377 void dp_check_ints(int nil_phone, device_id_t device_id, dpeth_t *dep, int isr)
     377static uint8_t isr_acknowledge(dpeth_t *dep)
     378{
     379        uint8_t isr = inb_reg0(dep, DP_ISR) & 0x7f;
     380        if (isr != 0)
     381                outb_reg0(dep, DP_ISR, isr);
     382       
     383        return isr;
     384}
     385
     386void dp_check_ints(int nil_phone, device_id_t device_id, dpeth_t *dep, uint8_t isr)
    378387{
    379388        int tsr;
     
    383392                fprintf(stderr, "dp8390: got premature interrupt\n");
    384393       
    385         for (; isr; isr = inb_reg0(dep, DP_ISR)) {
    386                 outb_reg0(dep, DP_ISR, isr);
    387                
     394        for (; isr != 0; isr = isr_acknowledge(dep)) {
    388395                if (isr & (ISR_PTX | ISR_TXE)) {
    389396                        if (isr & ISR_TXE)
  • uspace/srv/hw/netif/dp8390/dp8390_drv.h

    rc2f3e0b rba21938  
    5656 *  @param[in,out] dep The network interface structure.
    5757 */
    58 void dp_check_ints(int nil_phone, device_id_t device_id, dpeth_t *dep, int isr);
     58void dp_check_ints(int nil_phone, device_id_t device_id, dpeth_t *dep, uint8_t isr);
    5959
    6060/** Probes and initializes the network interface.
  • uspace/srv/hw/netif/dp8390/dp8390_module.c

    rc2f3e0b rba21938  
    9292        },
    9393        {
    94                 .cmd = CMD_PIO_WRITE_8,
     94                .cmd = CMD_PIO_WRITE_A_8,
    9595                .addr = NULL,
    96                 .value = 0xff
     96                .srcarg = 3
    9797        },
    9898        {
Note: See TracChangeset for help on using the changeset viewer.