Changeset 73abf49 in mainline
- Timestamp:
- 2021-06-22T19:36:32Z (3 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- 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)
- Location:
- kernel
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/src/mach/raspberrypi/raspberrypi.c
r034ce6bb r73abf49 174 174 { 175 175 #ifdef CONFIG_FB 176 uint32_t width, height; 176 177 fb_properties_t prop; 177 if (bcm2835_fb_init(&prop)) { 178 179 if (!bcm2835_mbox_get_fb_size(&width, &height)) { 180 printf("mbox: could not get the framebuffer size\n"); 181 width = 640; 182 height = 480; 183 } 184 if (bcm2835_fb_init(&prop, width, height)) { 178 185 outdev_t *fb_dev = fb_init(&prop); 179 186 if (fb_dev) -
kernel/genarch/include/genarch/drivers/bcm2835/mbox.h
r034ce6bb r73abf49 68 68 69 69 enum { 70 MBOX_TAG_GET_PHYS_W_H = 0x00040003, 71 MBOX_TAG_SET_PHYS_W_H = 0x00048003, 72 MBOX_TAG_GET_VIRT_W_H = 0x00040004, 73 MBOX_TAG_SET_VIRT_W_G = 0x00048004 74 }; 75 76 enum { 70 77 MBOX_PROP_CODE_REQ = 0x00000000, 71 78 MBOX_PROP_CODE_RESP_OK = 0x80000000, … … 122 129 123 130 typedef struct { 131 mbox_prop_buf_hdr_t buf_hdr; 132 mbox_tag_hdr_t tag_hdr; 133 struct { 134 uint32_t width; 135 uint32_t height; 136 } body; 137 uint32_t zero; 138 } mbox_getfbsize_buf_t; 139 140 typedef struct { 124 141 ioport32_t width; 125 142 ioport32_t height; … … 135 152 136 153 extern bool bcm2835_prop_get_memory(uint32_t *base, uint32_t *size); 137 extern bool bcm2835_fb_init(fb_properties_t *prop); 154 extern bool bcm2835_fb_init(fb_properties_t *prop, uint32_t width, uint32_t heigth); 155 extern bool bcm2835_mbox_get_fb_size(uint32_t *h, uint32_t *w); 138 156 139 157 #endif -
kernel/genarch/src/drivers/bcm2835/mbox.c
r034ce6bb r73abf49 86 86 } 87 87 88 bool bcm2835_fb_init(fb_properties_t *prop )88 bool bcm2835_fb_init(fb_properties_t *prop, uint32_t width, uint32_t height) 89 89 { 90 90 bcm2835_mbox_t *fb_mbox; … … 95 95 KM_NATURAL_ALIGNMENT, PAGE_NOT_CACHEABLE); 96 96 97 fb_desc->width = 640;98 fb_desc->height = 480;97 fb_desc->width = width; 98 fb_desc->height = height; 99 99 fb_desc->virt_width = fb_desc->width; 100 100 fb_desc->virt_height = fb_desc->height; … … 128 128 } 129 129 130 bool 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 130 156 /** 131 157 * @}
Note:
See TracChangeset
for help on using the changeset viewer.