Changeset c885a21 in mainline for uspace/drv/audio/sb16/main.c


Ignore:
Timestamp:
2011-11-14T12:38:50Z (14 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1269160
Parents:
1b93658
Message:

sb16: Switch to new ISA bus provided DMA controller access.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/audio/sb16/main.c

    r1b93658 rc885a21  
    5050static int sb_add_device(ddf_dev_t *device);
    5151static int sb_get_res(const ddf_dev_t *device, uintptr_t *sb_regs,
    52     size_t *sb_regs_size, uintptr_t *mpu_regs, size_t *mpu_regs_size, int *irq);
     52    size_t *sb_regs_size, uintptr_t *mpu_regs, size_t *mpu_regs_size,
     53    int *irq, int *dma8, int *dma16);
    5354static int sb_enable_interrupts(ddf_dev_t *device);
    5455/*----------------------------------------------------------------------------*/
     
    8182{
    8283        assert(dev);
    83         sb16_drv_t *sb = dev->driver_data;
    84         assert(sb);
    85         sb16_interrupt(sb);
     84        assert(dev->driver_data);
     85        sb16_interrupt(dev->driver_data);
    8686}
    8787/*----------------------------------------------------------------------------*/
     
    101101        assert(device);
    102102
    103         sb16_drv_t *soft_state = ddf_dev_data_alloc(device, sizeof(sb16_drv_t));
     103        sb16_t *soft_state = ddf_dev_data_alloc(device, sizeof(sb16_t));
    104104        int ret = soft_state ? EOK : ENOMEM;
    105105        CHECK_RET_RETURN(ret, "Failed to allocate sb16 structure.\n");
     
    107107        uintptr_t sb_regs = 0, mpu_regs = 0;
    108108        size_t sb_regs_size = 0, mpu_regs_size = 0;
    109         int irq = 0;
     109        int irq = 0, dma8 = 0, dma16 = 0;
    110110
    111111        ret = sb_get_res(device, &sb_regs, &sb_regs_size, &mpu_regs,
    112             &mpu_regs_size, &irq);
     112            &mpu_regs_size, &irq, &dma8, &dma16);
    113113        CHECK_RET_RETURN(ret,
    114114            "Failed to get resources: %s.\n", str_error(ret));
     
    145145        CHECK_RET_UNREG_DEST_RETURN(ret, "Failed to create mixer function.");
    146146
    147         ret = sb16_init_sb16(soft_state, (void*)sb_regs, sb_regs_size);
     147        ret = sb16_init_sb16(
     148            soft_state, (void*)sb_regs, sb_regs_size, device, dma8, dma16);
    148149        CHECK_RET_UNREG_DEST_RETURN(ret,
    149150            "Failed to init sb16 driver: %s.\n", str_error(ret));
     
    183184/*----------------------------------------------------------------------------*/
    184185static int sb_get_res(const ddf_dev_t *device, uintptr_t *sb_regs,
    185     size_t *sb_regs_size, uintptr_t *mpu_regs, size_t *mpu_regs_size, int *irq)
     186    size_t *sb_regs_size, uintptr_t *mpu_regs, size_t *mpu_regs_size,
     187    int *irq, int *dma8, int *dma16)
    186188{
    187189        assert(device);
     
    191193        assert(mpu_regs_size);
    192194        assert(irq);
     195        assert(dma8);
     196        assert(dma16);
    193197
    194198        async_sess_t *parent_sess =
     
    224228                        }
    225229                        break;
     230                case DMA_CHANNEL_16:
     231                        *dma16 = res->res.dma_channel.dma16;
     232                        ddf_log_debug("Found DMA16 channel: %d.\n", *dma16);
     233                        break;
     234                case DMA_CHANNEL_8:
     235                        *dma8 = res->res.dma_channel.dma8;
     236                        ddf_log_debug("Found DMA8 channel: %d.\n", *dma8);
    226237                default:
    227238                        break;
Note: See TracChangeset for help on using the changeset viewer.