Changes in / [730dce77:1bebadee] in mainline


Ignore:
Files:
58 added
25 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    r730dce77 r1bebadee  
    562562! CONFIG_OPTIMIZE_FOR_SIZE (n/y)
    563563
     564% Number of consoles
     565@ "1"
     566@ "2"
     567@ "3"
     568@ "4"
     569@ "5"
     570@ "6"
     571! CONFIG_VC_COUNT(choice)
     572
     573%Kernel log on console 6
     574! CONFIG_KERNEL_LOG_VC_6 (y/n)
     575
    564576% Barebone build with essential binaries only
    565577! CONFIG_BAREBONE (n/y)
  • boot/Makefile.common

    r730dce77 r1bebadee  
    115115        $(USPACE_PATH)/srv/devman/devman
    116116
    117 RD_DRVS = \
    118         infrastructure/root \
     117RD_DRVS_ESSENTIAL = \
     118        infrastructure/root
     119
     120RD_DRVS_NON_ESSENTIAL = \
    119121        infrastructure/rootvirt \
    120122        test/test1 \
     
    157159        $(USPACE_PATH)/app/dltest2/dltest2 \
    158160        $(USPACE_PATH)/app/dload/dload \
     161        $(USPACE_PATH)/app/dplay/dplay \
    159162        $(USPACE_PATH)/app/edit/edit \
    160163        $(USPACE_PATH)/app/ext2info/ext2info \
     
    163166        $(USPACE_PATH)/app/killall/killall \
    164167        $(USPACE_PATH)/app/loc/loc \
     168        $(USPACE_PATH)/app/mixerctl/mixerctl \
    165169        $(USPACE_PATH)/app/mkfat/mkfat \
    166170        $(USPACE_PATH)/app/mkexfat/mkexfat \
     
    222226RD_SRVS = $(RD_SRVS_ESSENTIAL)
    223227RD_APPS = $(RD_APPS_ESSENTIAL)
     228RD_DRVS = $(RD_DRVS_ESSENTIAL)
    224229else
    225230RD_SRVS = $(RD_SRVS_ESSENTIAL) $(RD_SRVS_NON_ESSENTIAL)
    226231RD_APPS = $(RD_APPS_ESSENTIAL) $(RD_APPS_NON_ESSENTIAL)
     232RD_DRVS = $(RD_DRVS_ESSENTIAL) $(RD_DRVS_NON_ESSENTAIL)
    227233endif
    228234
  • boot/arch/amd64/Makefile.inc

    r730dce77 r1bebadee  
    2828
    2929RD_SRVS_ESSENTIAL += \
     30        $(USPACE_PATH)/srv/audio/hound/hound \
     31        $(USPACE_PATH)/srv/devman/devman \
    3032        $(USPACE_PATH)/srv/hw/irc/apic/apic \
    3133        $(USPACE_PATH)/srv/hw/irc/i8259/i8259
     
    3436        $(USPACE_PATH)/srv/bd/ata_bd/ata_bd
    3537
    36 RD_DRVS += \
     38RD_DRVS_ESSENTIAL += \
    3739        infrastructure/rootpc \
    3840        bus/pci/pciintel \
    3941        bus/isa \
     42        audio/sb16 \
    4043        char/i8042 \
     44        char/ps2mouse \
     45        char/xtkbd
     46
     47RD_DRVS_NON_ESSENTIAL += \
    4148        char/ns8250 \
    42         char/ps2mouse \
    43         char/xtkbd \
    4449        bus/usb/ehci\
    4550        bus/usb/ohci \
     
    5661        bus/isa
    5762
     63RD_APPS_ESSENTIAL += \
     64        $(USPACE_PATH)/app/edit/edit \
     65        $(USPACE_PATH)/app/mixerctl/mixerctl \
     66        $(USPACE_PATH)/app/wavplay/wavplay \
     67       
    5868BOOT_OUTPUT = $(ROOT_PATH)/image.iso
    5969PREBUILD = $(INITRD).img
  • boot/arch/ppc32/Makefile.inc

    r730dce77 r1bebadee  
    4242        $(USPACE_PATH)/srv/hw/bus/cuda_adb/cuda_adb
    4343
    44 RD_DRVS += \
     44RD_DRVS_NON_ESSENTIAL += \
    4545        infrastructure/rootmac
    4646
  • defaults/amd64/Makefile.config

    r730dce77 r1bebadee  
    2525# Kernel console support
    2626CONFIG_KCONSOLE = y
     27
     28# Number of shell consoles
     29CONFIG_VC_COUNT = 5
    2730
    2831# Kernel symbol information
  • defaults/arm32/Makefile.config

    r730dce77 r1bebadee  
    1616# Kernel console support
    1717CONFIG_KCONSOLE = y
     18
     19# Number of shell consoles
     20CONFIG_VC_COUNT = 5
    1821
    1922# Kernel symbol information
  • defaults/ia32/Makefile.config

    r730dce77 r1bebadee  
    3131# Kernel console support
    3232CONFIG_KCONSOLE = y
     33
     34# Number of shell consoles
     35CONFIG_VC_COUNT = 5
    3336
    3437# Kernel symbol information
  • defaults/ia64/Makefile.config

    r730dce77 r1bebadee  
    2929CONFIG_KCONSOLE = y
    3030
     31# Number of shell consoles
     32CONFIG_VC_COUNT = 5
     33
    3134# Kernel symbol information
    3235CONFIG_SYMTAB = y
  • defaults/mips32/Makefile.config

    r730dce77 r1bebadee  
    2222# Kernel console support
    2323CONFIG_KCONSOLE = y
     24
     25# Number of shell consoles
     26CONFIG_VC_COUNT = 5
    2427
    2528# Kernel symbol information
  • defaults/mips64/Makefile.config

    r730dce77 r1bebadee  
    2222# Kernel console support
    2323CONFIG_KCONSOLE = y
     24
     25# Number of shell consoles
     26CONFIG_VC_COUNT = 5
    2427
    2528# Kernel symbol information
  • defaults/ppc32/Makefile.config

    r730dce77 r1bebadee  
    1616# Kernel console support
    1717CONFIG_KCONSOLE = y
     18
     19# Number of shell consoles
     20CONFIG_VC_COUNT = 5
    1821
    1922# Kernel symbol information
  • defaults/sparc64/Makefile.config

    r730dce77 r1bebadee  
    3232CONFIG_KCONSOLE = y
    3333
     34# Number of shell consoles
     35CONFIG_VC_COUNT = 5
     36
    3437# Kernel symbol information
    3538CONFIG_SYMTAB = y
  • defaults/special/Makefile.config

    r730dce77 r1bebadee  
    1717CONFIG_KCONSOLE = y
    1818
     19# Number of shell consoles
     20CONFIG_VC_COUNT = 5
     21
    1922# Kernel symbol information
    2023CONFIG_SYMTAB = y
  • uspace/Makefile

    r730dce77 r1bebadee  
    3838        app/bnchmark \
    3939        app/devctl \
     40        app/drec \
    4041        app/edit \
    4142        app/ext2info \
     
    4849        app/loc \
    4950        app/lsusb \
     51        app/mixerctl \
    5052        app/mkfat \
    5153        app/mkexfat \
     
    7173        app/sysinfo \
    7274        app/mkbd \
     75        app/wavplay \
    7376        app/websrv \
     77        srv/audio/hound \
    7478        srv/clipboard \
    7579        srv/locsrv \
     
    104108        srv/hid/remcons \
    105109        srv/hw/char/s3c24xx_uart \
     110        drv/audio/sb16 \
    106111        drv/infrastructure/root \
    107112        drv/infrastructure/rootvirt \
     
    193198        lib/drv \
    194199        lib/fb \
     200        lib/hound \
    195201        lib/net \
    196202        lib/nic \
     
    201207        lib/usbhid \
    202208        lib/usbvirt \
     209        lib/pcm \
    203210        lib/posix
    204211
  • uspace/Makefile.common

    r730dce77 r1bebadee  
    123123
    124124LIBDRV_PREFIX = $(LIB_PREFIX)/drv
     125LIBHOUND_PREFIX = $(LIB_PREFIX)/hound
     126LIBPCM_PREFIX = $(LIB_PREFIX)/pcm
    125127LIBNET_PREFIX = $(LIB_PREFIX)/net
    126128LIBNIC_PREFIX = $(LIB_PREFIX)/nic
     
    250252
    251253ifneq ($(BINARY),)
    252 %.disasm: $(BINARY)
     254%.disasm: $(BINARY)_prestrip
    253255ifeq ($(CONFIG_LINE_DEBUG),y)
    254256        $(OBJDUMP) -d -S $< > $@
     
    257259endif
    258260
    259 $(BINARY): $(LINKER_SCRIPT) $(OBJECTS) $(LIBS) $(BASE_LIBS)
    260         $(LD) -n $(LFLAGS) -T $(LINKER_SCRIPT) -M -Map $(BINARY).map -o $(BINARY) $(OBJECTS) $(LIBS) $(BASE_LIBS)
     261.INTERMEDIATE: $(BINARY)_prestrip
     262
     263$(BINARY)_prestrip: $(LINKER_SCRIPT) $(OBJECTS) $(LIBS) $(BASE_LIBS)
     264        $(LD) -n $(LFLAGS) -T $(LINKER_SCRIPT) -M -Map $(BINARY).map -o $@ $(OBJECTS) $(LIBS) $(BASE_LIBS)
     265
     266$(BINARY): $(BINARY)_prestrip $(BINARY).disasm
     267        cp $(BINARY)_prestrip $@
    261268ifeq ($(CONFIG_STRIP_BINARIES),y)
    262269        $(STRIP) $(BINARY)
  • uspace/app/init/init.c

    r730dce77 r1bebadee  
    339339#endif
    340340       
    341         getterm("term/vc0", "/app/bdsh", true);
    342         getterm("term/vc1", "/app/bdsh", false);
    343         getterm("term/vc2", "/app/bdsh", false);
    344         getterm("term/vc3", "/app/bdsh", false);
    345         getterm("term/vc4", "/app/bdsh", false);
    346         getterm("term/vc5", "/app/bdsh", false);
     341        spawn("/srv/hound");
     342        switch((unsigned)CONFIG_VC_COUNT) {
     343        default:
     344        case 6: getterm("term/vc5", "/app/bdsh", false);
     345        case 5: getterm("term/vc4", "/app/bdsh", false);
     346        case 4: getterm("term/vc3", "/app/bdsh", false);
     347        case 3: getterm("term/vc2", "/app/bdsh", false);
     348        case 2: getterm("term/vc1", "/app/bdsh", false);
     349        case 1: getterm("term/vc0", "/app/bdsh", true);
     350        }
     351#ifdef CONFIG_KERNEL_LOG_VC_6
    347352        getterm("term/vc6", "/app/klog", false);
     353#endif
    348354       
    349355        return 0;
  • uspace/drv/bus/isa/isa.c

    r730dce77 r1bebadee  
    9191        fibril_mutex_t mutex;
    9292        ddf_fun_t *fnode;
     93        hw_resource_t resources[ISA_MAX_HW_RES];
    9394        hw_resource_list_t hw_resources;
    9495        link_t bus_link;
     
    207208
    208209        fibril_mutex_initialize(&fun->mutex);
     210        fun->hw_resources.resources = fun->resources;
     211
    209212        fun->fnode = fnode;
    210213        return fun;
     
    518521}
    519522
    520 static void fun_hw_res_alloc(isa_fun_t *fun)
    521 {
    522         fun->hw_resources.resources =
    523             (hw_resource_t *) malloc(sizeof(hw_resource_t) * ISA_MAX_HW_RES);
    524 }
    525 
    526 static void fun_hw_res_free(isa_fun_t *fun)
    527 {
    528         free(fun->hw_resources.resources);
    529         fun->hw_resources.resources = NULL;
    530 }
    531 
    532523static char *isa_fun_read_info(char *fun_conf, isa_bus_t *isa)
    533524{
     
    558549                return NULL;
    559550        }
    560 
    561         /* Allocate buffer for the list of hardware resources of the device. */
    562         fun_hw_res_alloc(fun);
    563551
    564552        /* Get properties of the device (match ids, irq and io range). */
     
    677665                list_remove(&fun->bus_link);
    678666
    679                 fun_hw_res_free(fun);
    680667                ddf_fun_destroy(fun->fnode);
    681668        }
  • uspace/lib/c/generic/device/hw_res.c

    r730dce77 r1bebadee  
    4242{
    4343        sysarg_t count = 0;
    44        
     44
    4545        async_exch_t *exch = async_exchange_begin(sess);
     46        if (exch == NULL)
     47                return ENOMEM;
    4648        int rc = async_req_1_1(exch, DEV_IFACE_ID(HW_RES_DEV_IFACE),
    4749            HW_RES_GET_RESOURCE_LIST, &count);
    48        
     50
    4951        if (rc != EOK) {
    5052                async_exchange_end(exch);
    5153                return rc;
    5254        }
    53        
     55
    5456        size_t size = count * sizeof(hw_resource_t);
    5557        hw_resource_t *resources = (hw_resource_t *) malloc(size);
     
    5961                return ENOMEM;
    6062        }
    61        
     63
    6264        rc = async_data_read_start(exch, resources, size);
    6365        async_exchange_end(exch);
    64        
     66
    6567        if (rc != EOK) {
    6668                free(resources);
    6769                return rc;
    6870        }
    69        
     71
    7072        hw_resources->resources = resources;
    7173        hw_resources->count = count;
    72        
     74
    7375        return EOK;
    7476}
     
    7779{
    7880        async_exch_t *exch = async_exchange_begin(sess);
     81        if (exch == NULL)
     82                return false;
    7983        int rc = async_req_1_0(exch, DEV_IFACE_ID(HW_RES_DEV_IFACE),
    8084            HW_RES_ENABLE_INTERRUPT);
    8185        async_exchange_end(exch);
    82        
     86
    8387        return (rc == EOK);
     88}
     89
     90/**
     91 * Setup DMA channel to specified place and mode.
     92 * @param channel DMA Channel 1,2,3 for 8 bit transfers, 5,6,7 for 16 bit.
     93 * @param pa Physical address of the buffer. Must be < 16MB for 16 bit and < 1MB
     94 *           for 8 bit transfers.
     95 * @param size DMA buffer size, limited to 64K.
     96 * @param mode Mode of the DMA channel:
     97 *              - Read or Write
     98 *              - Allow automatic reset
     99 *              - Use address decrement instead of increment
     100 *              - Use SINGLE/BLOCK/ON DEMAND transfer mode
     101 * @return Error code.
     102 */
     103int hw_res_dma_channel_setup(async_sess_t *sess,
     104    unsigned channel, uint32_t pa, uint16_t size, uint8_t mode)
     105{
     106        async_exch_t *exch = async_exchange_begin(sess);
     107        if (exch == NULL)
     108                return ENOMEM;
     109        const uint32_t packed = size | (mode << 16);
     110        const int ret = async_req_4_0(exch, DEV_IFACE_ID(HW_RES_DEV_IFACE),
     111            HW_RES_DMA_CHANNEL_SETUP, channel, pa, packed);
     112        async_exchange_end(exch);
     113
     114        return ret;
    84115}
    85116
  • uspace/lib/c/generic/device/hw_res_parsed.c

    r730dce77 r1bebadee  
    3838#include <errno.h>
    3939
    40 static void hw_res_parse_add_irq(hw_res_list_parsed_t *out, hw_resource_t *res,
    41     int flags)
     40static void hw_res_parse_add_dma_channel(hw_res_list_parsed_t *out,
     41    const hw_resource_t *res, int flags)
     42{
     43        assert(res);
     44        assert((res->type == DMA_CHANNEL_8) || (res->type == DMA_CHANNEL_16));
     45       
     46        const unsigned channel = (res->type == DMA_CHANNEL_8) ?
     47            res->res.dma_channel.dma8 : res->res.dma_channel.dma16;
     48        const size_t count = out->dma_channels.count;
     49        const int keep_duplicit = flags & HW_RES_KEEP_DUPLICIT;
     50       
     51        if (!keep_duplicit) {
     52                for (size_t i = 0; i < count; ++i) {
     53                        if (out->dma_channels.channels[i] == channel)
     54                                return;
     55                }
     56        }
     57       
     58        out->dma_channels.channels[count] = channel;
     59        ++out->dma_channels.count;
     60}
     61
     62static void hw_res_parse_add_irq(hw_res_list_parsed_t *out,
     63    const hw_resource_t *res, int flags)
    4264{
    4365        assert(res && (res->type == INTERRUPT));
     
    5981
    6082static void hw_res_parse_add_io_range(hw_res_list_parsed_t *out,
    61     hw_resource_t *res, int flags)
     83    const hw_resource_t *res, int flags)
    6284{
    6385        assert(res && (res->type == IO_RANGE));
     
    90112
    91113static void hw_res_parse_add_mem_range(hw_res_list_parsed_t *out,
    92     hw_resource_t *res, int flags)
     114    const hw_resource_t *res, int flags)
    93115{
    94116        assert(res && (res->type == MEM_RANGE));
     
    132154 *
    133155 */
    134 int hw_res_list_parse(hw_resource_list_t *hw_resources,
     156int hw_res_list_parse(const hw_resource_list_t *hw_resources,
    135157    hw_res_list_parsed_t *out, int flags)
    136158{
     
    141163        hw_res_list_parsed_clean(out);
    142164       
    143         out->irqs.irqs = malloc(res_count * sizeof(int));
    144         out->io_ranges.ranges = malloc(res_count * sizeof(io_range_t));
    145         out->mem_ranges.ranges = malloc(res_count * sizeof(mem_range_t));
     165        out->irqs.irqs = calloc(res_count, sizeof(int));
     166        out->dma_channels.channels = calloc(res_count, sizeof(int));
     167        out->io_ranges.ranges = calloc(res_count, sizeof(io_range_t));
     168        out->mem_ranges.ranges = calloc(res_count, sizeof(mem_range_t));
     169        if (!out->irqs.irqs || !out->dma_channels.channels ||
     170            !out->io_ranges.ranges || !out->mem_ranges.ranges) {
     171                hw_res_list_parsed_clean(out);
     172                return ENOMEM;
     173        }
    146174       
    147175        for (size_t i = 0; i < res_count; ++i) {
    148                 hw_resource_t *resource = &(hw_resources->resources[i]);
    149                
     176                const hw_resource_t *resource = &(hw_resources->resources[i]);
     177
    150178                switch (resource->type) {
    151179                case INTERRUPT:
     
    158186                        hw_res_parse_add_mem_range(out, resource, flags);
    159187                        break;
     188                case DMA_CHANNEL_8:
     189                case DMA_CHANNEL_16:
     190                        hw_res_parse_add_dma_channel(out, resource, flags);
     191                        break;
    160192                default:
     193                        hw_res_list_parsed_clean(out);
    161194                        return EINVAL;
    162195                }
    163196        }
    164        
     197
    165198        return EOK;
    166199};
  • uspace/lib/c/include/device/hw_res_parsed.h

    r730dce77 r1bebadee  
    139139}
    140140
    141 extern int hw_res_list_parse(hw_resource_list_t *, hw_res_list_parsed_t *, int);
     141extern int hw_res_list_parse(
     142    const hw_resource_list_t *, hw_res_list_parsed_t *, int);
    142143extern int hw_res_get_list_parsed(async_sess_t *, hw_res_list_parsed_t *, int);
    143144
  • uspace/lib/c/include/ipc/dev_iface.h

    r730dce77 r1bebadee  
    3636typedef enum {
    3737        HW_RES_DEV_IFACE = 0,
     38
     39        /** Audio device mixer interface */
     40        AUDIO_MIXER_IFACE,
     41        /** Audio device pcm buffer interface */
     42        AUDIO_PCM_BUFFER_IFACE,
     43
    3844        /** Character device interface */
    3945        CHAR_DEV_IFACE,
  • uspace/lib/drv/Makefile

    r730dce77 r1bebadee  
    2929
    3030USPACE_PREFIX = ../..
    31 EXTRA_CFLAGS = -Iinclude -I$(LIBUSB_PREFIX)/include
     31EXTRA_CFLAGS = -Iinclude -I$(LIBUSB_PREFIX)/include -I$(LIBPCM_PREFIX)/include
    3232LIBRARY = libdrv
    3333
     
    3838        generic/log.c \
    3939        generic/logbuf.c \
     40        generic/remote_audio_mixer.c \
     41        generic/remote_audio_pcm.c \
    4042        generic/remote_hw_res.c \
    4143        generic/remote_char_dev.c \
  • uspace/lib/drv/generic/dev_iface.c

    r730dce77 r1bebadee  
    4646#include "remote_usbhid.h"
    4747#include "remote_pci.h"
     48#include "remote_audio_mixer.h"
     49#include "remote_audio_pcm.h"
    4850#include "remote_ahci.h"
    4951
    50 static iface_dipatch_table_t remote_ifaces = {
     52static const iface_dipatch_table_t remote_ifaces = {
    5153        .ifaces = {
    52                 &remote_hw_res_iface,
    53                 &remote_char_dev_iface,
    54                 &remote_nic_iface,
    55                 &remote_pci_iface,
    56                 &remote_usb_iface,
    57                 &remote_usbhc_iface,
    58                 &remote_usbhid_iface,
    59                 &remote_ahci_iface
     54                [AUDIO_MIXER_IFACE] = &remote_audio_mixer_iface,
     55                [AUDIO_PCM_BUFFER_IFACE] = &remote_audio_pcm_iface,
     56                [HW_RES_DEV_IFACE] = &remote_hw_res_iface,
     57                [CHAR_DEV_IFACE] = &remote_char_dev_iface,
     58                [NIC_DEV_IFACE] = &remote_nic_iface,
     59                [PCI_DEV_IFACE] = &remote_pci_iface,
     60                [USB_DEV_IFACE] = &remote_usb_iface,
     61                [USBHC_DEV_IFACE] = &remote_usbhc_iface,
     62                [USBHID_DEV_IFACE] = &remote_usbhid_iface,
     63                [AHCI_DEV_IFACE] = &remote_ahci_iface,
    6064        }
    6165};
  • uspace/lib/drv/generic/remote_hw_res.c

    r730dce77 r1bebadee  
    11/*
    22 * Copyright (c) 2010 Lenka Trochtova
     3 * Copyright (c) 2011 Jan Vesely
    34 * All rights reserved.
    45 *
     
    4344static void remote_hw_res_enable_interrupt(ddf_fun_t *, void *, ipc_callid_t,
    4445    ipc_call_t *);
     46static void remote_hw_res_dma_channel_setup(ddf_fun_t *, void *, ipc_callid_t,
     47    ipc_call_t *);
    4548
    4649static remote_iface_func_ptr_t remote_hw_res_iface_ops [] = {
    47         &remote_hw_res_get_resource_list,
    48         &remote_hw_res_enable_interrupt
     50        [HW_RES_GET_RESOURCE_LIST] = &remote_hw_res_get_resource_list,
     51        [HW_RES_ENABLE_INTERRUPT] = &remote_hw_res_enable_interrupt,
     52        [HW_RES_DMA_CHANNEL_SETUP] = &remote_hw_res_dma_channel_setup,
    4953};
    5054
     
    9498}
    9599
     100static void remote_hw_res_dma_channel_setup(ddf_fun_t *fun, void *ops,
     101    ipc_callid_t callid, ipc_call_t *call)
     102{
     103        hw_res_ops_t *hw_res_ops = ops;
     104
     105        if (hw_res_ops->dma_channel_setup == NULL) {
     106                async_answer_0(callid, ENOTSUP);
     107                return;
     108        }
     109        const unsigned channel = DEV_IPC_GET_ARG1(*call);
     110        const uint32_t address = DEV_IPC_GET_ARG2(*call);
     111        const uint16_t size = DEV_IPC_GET_ARG3(*call) & 0xffff;
     112        const uint8_t mode = DEV_IPC_GET_ARG3(*call) >> 16;
     113
     114        const int ret = hw_res_ops->dma_channel_setup(
     115            fun, channel, address, size, mode);
     116        async_answer_0(callid, ret);
     117}
     118
    96119/**
    97120 * @}
  • uspace/srv/locsrv/locsrv.c

    r730dce77 r1bebadee  
    13681368        categ_dir_add_cat(&cdir, cat);
    13691369       
     1370        cat = category_new("audio-pcm");
     1371        categ_dir_add_cat(&cdir, cat);
     1372       
    13701373        return true;
    13711374}
Note: See TracChangeset for help on using the changeset viewer.