Changeset 96228d0 in mainline


Ignore:
Timestamp:
2013-01-20T21:34:33Z (11 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7fa2031
Parents:
9cc4b2b4
Message:

amdm37x_dispc: Initialize associated visualizer in dispc_init

Location:
uspace/drv/fb/amdm37x_dispc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/fb/amdm37x_dispc/amdm37x_dispc.c

    r9cc4b2b4 r96228d0  
    3434 */
    3535
     36#include <assert.h>
    3637#include <errno.h>
    3738
    3839#include "amdm37x_dispc.h"
    3940
    40 const visualizer_ops_t amdm37x_dispc_vis_ops = { 0 };
     41static int handle_damage(visualizer_t *vs,
     42    sysarg_t x0, sysarg_t y0, sysarg_t width, sysarg_t height,
     43    sysarg_t x_offset, sysarg_t y_offset)
     44{
     45        return EOK;
     46}
    4147
    42 int amdm37x_dispc_init(amdm37x_dispc_t *instance)
     48static const visualizer_ops_t amdm37x_dispc_vis_ops = {
     49        .handle_damage = handle_damage,
     50        // TODO DO we need dummy implementations of stuff like claim, yield, ...
     51};
     52
     53static void mode_init(vslmode_list_element_t *mode,
     54    unsigned width, unsigned height, visual_t visual)
    4355{
     56        mode->mode.index = 0;
     57        mode->mode.version = 0;
     58        mode->mode.refresh_rate = 0;
     59        mode->mode.screen_aspect.width = width;
     60        mode->mode.screen_aspect.height = height;
     61        mode->mode.screen_width = width;
     62        mode->mode.screen_height = height;
     63        mode->mode.cell_aspect.width = 1;
     64        mode->mode.cell_aspect.height = 1;
     65        mode->mode.cell_visual.pixel_visual = visual;
     66
     67        link_initialize(&mode->link);
     68
     69}
     70
     71int amdm37x_dispc_init(amdm37x_dispc_t *instance, visualizer_t *vis)
     72{
     73        assert(instance);
     74        assert(vis);
     75
     76        unsigned width = CONFIG_BFB_WIDTH;
     77        unsigned height = CONFIG_BFB_HEIGHT;
     78        unsigned bpp = CONFIG_BFB_BPP;
     79
     80        mode_init(&instance->modes[0], width, height, bpp); //TODO convert bpp to visual
     81
     82        /* Handle vis stuff */
     83        vis->dev_ctx = instance;
     84        vis->def_mode_idx = 0;
     85        list_append(&instance->modes[0].link, &vis->modes);
     86
    4487        return EOK;
    4588};
  • uspace/drv/fb/amdm37x_dispc/amdm37x_dispc.h

    r9cc4b2b4 r96228d0  
    3838
    3939#include <graph.h>
     40#include <abi/fb/visuals.h>
     41#include <pixconv.h>
    4042
    4143#include "amdm37x_dispc_regs.h"
     
    4345typedef struct {
    4446        amdm37x_dispc_regs_t *regs;
     47
     48        unsigned fb_width;
     49        unsigned fb_height;
     50        unsigned offset;
     51        unsigned scanline;
     52        visual_t visual;
     53
     54        pixel2visual_t pixel2visual;
     55        visual2pixel_t visual2pixel;
     56        visual_mask_t visual_mask;
     57        unsigned pixel_bytes;
     58
     59        size_t size;
    4560        void *fb_data;
     61
     62        vslmode_list_element_t modes[1];
    4663} amdm37x_dispc_t;
    4764
    48 extern const visualizer_ops_t amdm37x_dispc_vis_ops;
    49 
    50 int amdm37x_dispc_init(amdm37x_dispc_t *instance);
     65int amdm37x_dispc_init(amdm37x_dispc_t *instance, visualizer_t *vis);
    5166int amdm37x_dispc_fini(amdm37x_dispc_t *instance);
    5267
  • uspace/drv/fb/amdm37x_dispc/main.c

    r9cc4b2b4 r96228d0  
    5757static int amdm37x_dispc_dev_add(ddf_dev_t *dev)
    5858{
     59        /* Visualizer part */
    5960        ddf_fun_t *fun = ddf_fun_create(dev, fun_exposed, "dispc");
    6061        if (!fun) {
     
    6364        }
    6465
     66        visualizer_t *vis = ddf_fun_data_alloc(fun, sizeof(visualizer_t));
     67        if (!vis) {
     68                ddf_log_error("Failed to allocate visualizer structure\n");
     69                ddf_fun_destroy(fun);
     70                return ENOMEM;
     71        }
     72
     73        graph_init_visualizer(vis);
     74        vis->reg_svc_handle = ddf_fun_get_handle(fun);
     75
     76        ddf_fun_set_ops(fun, &graph_fun_ops);
    6577        /* Hw part */
    6678        amdm37x_dispc_t *dispc =
     
    7284        }
    7385
    74         int ret = amdm37x_dispc_init(dispc);
     86        int ret = amdm37x_dispc_init(dispc, vis);
    7587        if (ret != EOK) {
    7688                ddf_log_error("Failed to init dispc: %s\n", str_error(ret));
     
    7991        }
    8092
    81         /* Visualizer part */
    82         visualizer_t *vis = ddf_fun_data_alloc(fun, sizeof(visualizer_t));
    83         if (!vis) {
    84                 ddf_log_error("Failed to allocate visualizer structure\n");
    85                 ddf_fun_destroy(fun);
    86                 return ENOMEM;
    87         }
    88 
    89         graph_init_visualizer(vis);
    90         vis->def_mode_idx = 0; // TODO: What is this? Why is this not handled
    91                                // via init?
    92         vis->ops = amdm37x_dispc_vis_ops;
    93         vis->dev_ctx = dispc;
    94         vis->reg_svc_handle = ddf_fun_get_handle(fun);
    95 
    96         ddf_fun_set_ops(fun, &graph_fun_ops);
     93        /* Report to devman */
    9794        ret = ddf_fun_bind(fun);
    9895        if (ret != EOK) {
Note: See TracChangeset for help on using the changeset viewer.