From owner-svn-src-all@freebsd.org Wed Apr 20 22:38:01 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DAEBDB15566; Wed, 20 Apr 2016 22:38:01 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B69561A00; Wed, 20 Apr 2016 22:38:01 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u3KMc0PE015404; Wed, 20 Apr 2016 22:38:00 GMT (envelope-from gonzo@FreeBSD.org) Received: (from gonzo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u3KMc0pF015399; Wed, 20 Apr 2016 22:38:00 GMT (envelope-from gonzo@FreeBSD.org) Message-Id: <201604202238.u3KMc0pF015399@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gonzo set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko Date: Wed, 20 Apr 2016 22:38:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r298383 - head/sys/arm/broadcom/bcm2835 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Apr 2016 22:38:02 -0000 Author: gonzo Date: Wed Apr 20 22:38:00 2016 New Revision: 298383 URL: https://svnweb.freebsd.org/changeset/base/298383 Log: Force framebuffer virtual viewport to be the same as physical VideoCore reports garbage in viewport geometry fields unless viewport was set previously by earlier stage boot loader. So when booting FreeBSD kernel directly from VideoCore's start.elf framebuffer intialization fails due to invalid vxres, vyres values. Make sure we request viewport to be equal to physical resolution Submitted by: Sylvain Garrigues Modified: head/sys/arm/broadcom/bcm2835/bcm2835_fb.c head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c head/sys/arm/broadcom/bcm2835/bcm2835_mbox.c head/sys/arm/broadcom/bcm2835/bcm2835_mbox_prop.h Modified: head/sys/arm/broadcom/bcm2835/bcm2835_fb.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_fb.c Wed Apr 20 21:37:32 2016 (r298382) +++ head/sys/arm/broadcom/bcm2835/bcm2835_fb.c Wed Apr 20 22:38:00 2016 (r298383) @@ -149,6 +149,9 @@ bcm_fb_attach(device_t dev) if (bcm2835_mbox_fb_get_w_h(&fb) != 0) return (ENXIO); fb.bpp = FB_DEPTH; + fb.vxres = fb.xres; + fb.vyres = fb.yres; + fb.xoffset = fb.yoffset = 0; if (bcm2835_mbox_fb_init(&fb) != 0) return (ENXIO); Modified: head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c Wed Apr 20 21:37:32 2016 (r298382) +++ head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c Wed Apr 20 22:38:00 2016 (r298383) @@ -80,6 +80,10 @@ bcm_fb_init(struct bcmsc_softc *sc, stru return (ENXIO); fb->bpp = FB_DEPTH; + fb->vxres = fb->xres; + fb->vyres = fb->yres; + fb->xoffset = fb->yoffset = 0; + if ((err = bcm2835_mbox_fb_init(fb)) != 0) { device_printf(sc->dev, "bcm2835_mbox_fb_init failed, err=%d\n", err); return (ENXIO); Modified: head/sys/arm/broadcom/bcm2835/bcm2835_mbox.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_mbox.c Wed Apr 20 21:37:32 2016 (r298382) +++ head/sys/arm/broadcom/bcm2835/bcm2835_mbox.c Wed Apr 20 22:38:00 2016 (r298383) @@ -475,20 +475,12 @@ bcm2835_mbox_fb_get_w_h(struct bcm2835_f msg.hdr.code = BCM2835_MBOX_CODE_REQ; BCM2835_MBOX_INIT_TAG(&msg.physical_w_h, GET_PHYSICAL_W_H); msg.physical_w_h.tag_hdr.val_len = 0; - BCM2835_MBOX_INIT_TAG(&msg.virtual_w_h, GET_VIRTUAL_W_H); - msg.virtual_w_h.tag_hdr.val_len = 0; - BCM2835_MBOX_INIT_TAG(&msg.offset, GET_VIRTUAL_OFFSET); - msg.offset.tag_hdr.val_len = 0; msg.end_tag = 0; err = bcm2835_mbox_property(&msg, sizeof(msg)); if (err == 0) { fb->xres = msg.physical_w_h.body.resp.width; fb->yres = msg.physical_w_h.body.resp.height; - fb->vxres = msg.virtual_w_h.body.resp.width; - fb->vyres = msg.virtual_w_h.body.resp.height; - fb->xoffset = msg.offset.body.resp.x; - fb->yoffset = msg.offset.body.resp.y; } return (err); Modified: head/sys/arm/broadcom/bcm2835/bcm2835_mbox_prop.h ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_mbox_prop.h Wed Apr 20 21:37:32 2016 (r298382) +++ head/sys/arm/broadcom/bcm2835/bcm2835_mbox_prop.h Wed Apr 20 22:38:00 2016 (r298383) @@ -469,8 +469,6 @@ struct bcm2835_fb_config { struct msg_fb_get_w_h { struct bcm2835_mbox_hdr hdr; struct bcm2835_mbox_tag_fb_w_h physical_w_h; - struct bcm2835_mbox_tag_fb_w_h virtual_w_h; - struct bcm2835_mbox_tag_virtual_offset offset; uint32_t end_tag; };