Fork us on GitHub Follow us on Facebook Follow us on Twitter

Ignore:
Timestamp:
2021-06-22T19:36:32Z (6 months ago)
Author:
Maurizio Lombardi <mlombard@…>
Branches:
master
Children:
1b7b7af
Parents:
034ce6bb
git-author:
Maurizio Lombardi <mlombard@…> (2021-06-22 19:21:17)
git-committer:
Maurizio Lombardi <mlombard@…> (2021-06-22 19:36:32)
Message:

raspberrypi: mbox: read the framebuffer size from VideoCore?

Get the real framebuffer size, do not assume
it's 640x480

Signed-off-by: Maurizio Lombardi <mlombard@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/src/drivers/bcm2835/mbox.c

    r034ce6bb r73abf49  
    8686}
    8787
    88 bool bcm2835_fb_init(fb_properties_t *prop)
     88bool bcm2835_fb_init(fb_properties_t *prop, uint32_t width, uint32_t height)
    8989{
    9090        bcm2835_mbox_t *fb_mbox;
     
    9595            KM_NATURAL_ALIGNMENT, PAGE_NOT_CACHEABLE);
    9696
    97         fb_desc->width = 640;
    98         fb_desc->height = 480;
     97        fb_desc->width = width;
     98        fb_desc->height = height;
    9999        fb_desc->virt_width = fb_desc->width;
    100100        fb_desc->virt_height = fb_desc->height;
     
    128128}
    129129
     130bool bcm2835_mbox_get_fb_size(uint32_t *w, uint32_t *h)
     131{
     132        bool r;
     133        MBOX_BUFF_ALLOC(msg, mbox_getfbsize_buf_t);
     134
     135        msg->buf_hdr.size = sizeof(mbox_getfbsize_buf_t);
     136        msg->buf_hdr.code = MBOX_PROP_CODE_REQ;
     137        msg->tag_hdr.tag_id = MBOX_TAG_GET_PHYS_W_H;
     138        msg->tag_hdr.buf_size = sizeof(msg->body);
     139        msg->tag_hdr.val_len  = 0;
     140        msg->zero = 0;
     141
     142        mbox_write((bcm2835_mbox_t *)BCM2835_MBOX0_ADDR,
     143            MBOX_CHAN_PROP_A2V, KA2VCA((uint32_t)msg));
     144        mbox_read((bcm2835_mbox_t *)BCM2835_MBOX0_ADDR,
     145            MBOX_CHAN_PROP_A2V);
     146
     147        r = msg->buf_hdr.code == MBOX_PROP_CODE_RESP_OK;
     148        if (r) {
     149                *h = msg->body.height;
     150                *w = msg->body.width;
     151        }
     152
     153        return r;
     154}
     155
    130156/**
    131157 * @}
Note: See TracChangeset for help on using the changeset viewer.