Commit Graph

3178 Commits

Author SHA1 Message Date
hselasky
8b7646f2c5 Add missing file to build. 2015-09-14 07:11:53 +00:00
marcel
fe6388dca2 As expected, things aren't as simple as hoped. Consequently, we have
no option but to use the smbios information to fill in the blanks.
It's a good thing UGA is a protocol of the past and GOP has all the
info we need.

Anyway, the logic has been tweaked a little to get the easier bits
of information up front. This includes the resolution and the frame
buffer address. Then we look at the smbios information and define
expected values as well as the missing bits (frame buffer offset and
stride). If the values obtained match the expect values, we fill in
the blanks and return. Otherwise we use the existing detection logic
to figure it out.

Rename the environment variables from uga_framebuffer abd uga_stride
to hw.efifb.address and hw.efifb.stride. The latter names are more
in line with other variable names.

We currently have hardcoded settings for:
1.  Mid-2007 iMac (iMac7,1)
2.  Late-2007 MacBook (MacBook3,1)
2015-09-07 17:56:49 +00:00
marcel
127f7b0627 Auto-detect the UGA frame buffer and stride on a MacBook. We're
striking a delicate balance between exhaustive searching and
banking on assumptions. The environment variables can be used
as a fall-back anyway. With this change, all known and tested
Macs with only UGA should have a working console out of the
box... for now...
2015-09-05 18:24:51 +00:00
marcel
3b40d98a5d My MacBook has UGA only, but we fail to detect any changes
in the frame buffer when we flip pixels. Allow the detection
to be bypassed by setting the uga_framebuffer and uga_stride
variables. The kernel console works fine even when we can't
detect pixel changes in the frame buffer, which indicates
that the problem could be with reading from the frame buffer
and not writing to it.
2015-09-05 03:27:23 +00:00
marcel
86e6446f7c For UGA, the frame buffer address obtained by scanning the
PCI BARs does not necessarily correspond to the upper-left
most pixel. Scan the frame buffer for which byte changed
when changing the pixel at (0,0).

Use the same technique to determine the stride. Except for
changing the pixel at (0,0), we change the pixel at (0,1).

PR:		202730
Tested by:	hartzell (at) alerce.com
2015-09-03 04:35:17 +00:00
gonzo
400a10173a Enable both i2c1 and i2c2. These devices are disabled in TI's DTS
so they were disabled during DTS transition. Though there are
no standard devices/drivers on them people might use iic(4) userland
interface to access these buses.
2015-09-03 02:28:18 +00:00
andrew
06204d2cbe Install the forth bits on arm64. For now limit it to just arm64 as on x86
these should have been installed as part of the regular loader.
2015-09-01 13:51:07 +00:00
marcel
58e5250bc1 Add support for the UGA draw protocol. This includes adding a
command called 'uga' to show whether UGA is implemented by the
firmware and what the settings are. It also includes filling
the efi_fb structure from the UGA information when GOP isn't
implemented by the firmware.

Since UGA does not provide information about the stride, we
set the stride to the horizontal resolution. This is likely
not correct and we should determine the stride by trial and
error. For now, this should show something on the console
rather than nothing.

Refactor this file to maximize code reuse.

PR:		202730
2015-08-30 23:58:53 +00:00
loos
55b48887c4 Add the LED definitions from vendor's DTS.
Add gpioled support to A20 kernel.

While here rename the gpio phandle to match the one used in the vendor's
DTS.
2015-08-30 23:20:00 +00:00
loos
f96bce47a4 Reduce the difference to vendor DTS by using the vendor compat strings (at
some point we have to use the complete vendor DTS files, but we're not
there yet).
2015-08-30 16:10:12 +00:00
marcel
47741465e9 Add a gop command to help diagnose VT efifb problems. The gop
command has the following sub-commands:
  list		- list all possible modes (paged)
  get		- return the current mode
  set <mode>	- set the current mode to <mode>
2015-08-30 01:39:59 +00:00
imp
8e02eade2d Add back missing -m32 for amd64 and powerpc64 that was lost
in the move to bsd.stand.mk.
2015-08-28 14:50:36 +00:00
imp
d1be0bf24e Use CFLAGS_NO_SIMD in preference to varying lists of -mno-xxxx flags.
Go ahead and defined -D_STANDALONE for all targets (only strictly
needed for some architecture, but harmless on those it isn't required
for). Also add -msoft-float to all architectures uniformly rather
that higgley piggley like it is today.

Differential Revision: https://reviews.freebsd.org/D3496
2015-08-27 23:46:42 +00:00
imp
057f55aa4b The flags -mno-aes -mno-avx only exist for clang, not gcc, so
add them only to the clang CFLAGS.
2015-08-20 18:31:05 +00:00
gonzo
c9ef6a18ea Make dtb file configurable via loader(8) variable. ubldr already checks
"fdt_file" and "fdtfile" U-Boot variables. Add one more check for
"fdt_file" loader(8) variable.

loader(8) variable takes precedence over u-boot env one
2015-08-15 21:47:07 +00:00
hselasky
967fec97cb Improve the realtime properties of USB transfers for embedded systems
like RPI-B and RPI-2.

Description of problem:
USB transfers can process data in their callbacks sometimes causing
unacceptable latency for other USB transfers. Separate BULK completion
callbacks from CONTROL, INTERRUPT and ISOCHRONOUS callbacks, and give
BULK completion callbacks lesser execution priority than the
others. This way USB audio won't be interfered by heavy USB ethernet
usage for example.

Further serve USB transfer completion in a round robin fashion,
instead of only serving the most CPU hungry. This has been done by
adding a third flag to USB transfer queue structure which keeps track
of looping callbacks. The "command" callback function then decides
what to do when looping.

MFC after:		2 weeks
2015-08-14 12:57:53 +00:00
allanjude
2e43b5ede1 Remove guards around overwriting loader.rc and menu.rc
There have been .local version of each for user modifications for some time
This allows users to receive future updates to these files

PR:		183765
Submitted by:	Bertram Scharpf, Nikolai Lifanov (patch)
Reviewed by:	dteske, loos, eadler
Approved by:	bapt (mentor)
MFC after:	1 month
Relnotes:	yes
Sponsored by:	ScaleEngine Inc.
Differential Revision:	https://reviews.freebsd.org/D3176
2015-08-06 16:07:27 +00:00
trasz
d8303f2c35 Fix a problem which made loader(8) load non-kld files twice.
For example, without this patch, the following three lines
in /boot/loader.conf would result in /boot/root.img being preloaded
twice, and two md(4) devices - md0 and md1 - being created.

initmd_load="YES"
initmd_type="md_image"
initmd_name="/boot/root.img"

Reviewed by:	marcel@
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D3204
2015-08-03 16:27:36 +00:00
ed
262844af7c Document the existence of cloudabi_load and cloudabi64_load. 2015-07-31 08:45:35 +00:00
trasz
5bf09cca5b Use consistent spacing.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2015-07-25 20:17:19 +00:00
trasz
2b44af71ee Add md_root example to defaults/loader.conf.
Note that this doesn't quite work yet - the preloaded image
gets loaded twice for some reason.

MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2015-07-25 20:15:29 +00:00
trasz
ec9474eb23 Use double newlines consistently.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2015-07-25 16:20:04 +00:00
trasz
52037e71a3 Document md_root in loader(8). The md(4) manual page mentions it,
but it's hard to find and easy to miss.

Reviewed by:	wblock@
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D3183
2015-07-25 13:02:41 +00:00
jmg
0d030c5deb move the prototype to the lib.h header.. This makes more sense, and
it's an API between boot2.c and arm_init.S which calls it..
2015-07-18 22:47:46 +00:00
jmg
1c6ba1ec44 other fixes to make boot2 compile for IXP... Properly end the asm
sections, and for some reason, main needs a prototype... If someone
has a better fix, I'm all ears...

Pointed out by:	Berislav Purgar
2015-07-18 20:21:25 +00:00
jmg
237a65ef48 revert r278579, this is in a different compile environment than the
kernel, and needs to be named cpu_id...

Pointed out by:	Berislav Purgar
2015-07-18 20:19:51 +00:00
loos
770986b563 Add the Banana Pi DTS.
The Banana Pi support is in progress and this is intended to help the early
adopters.
2015-07-07 19:01:54 +00:00
emaste
6ee39a4cd8 Avoid creating invalid UEFI device path
The UEFI loader on the 10.1 release install disk (disc1) modifies an
existing EFI_DEVICE_PATH_PROTOCOL instance in an apparent attempt to
truncate the device path.  In doing so it creates an invalid device
path.

Perform the equivalent action without modification of structures
allocated by firmware.

PR:		197641
MFC After:	1 week
Submitted by:	Chris Ruffin <chris.ruffin@intel.com>
2015-07-07 18:44:27 +00:00
loos
842e128ace Add the GMAC entries to sun7i (A20) DTS.
While here make EMAC disabled unless explicitly enabled.
2015-07-07 18:32:23 +00:00
loos
84067f697f Install loader.rc with ARM u-boot loader (ubldr).
loader.rc is the responsible to read and process loader.conf variables.

This fix the issue of loader.conf being silently ignored.

MFC after:	3 days
2015-07-04 16:19:38 +00:00
br
8cdae428f2 o Add a description for virtio block device implemented
in PISM (Bluespec C-interface device)
o Add a kernel config

Sponsored by:	HEIF5
2015-07-03 14:46:57 +00:00
loos
608f583b4a Add AHCI attachment code for Allwinner A10/A20 SoCs.
The Allwinner SoC has an AHCI device on its internal main bus rather
than the PCI bus.  This SoC is somewhat underdocumented, and its SATA
controller is no exception.  The methods to support this chip were
harvested from the Linux Allwinner SDK, and then constants invented to
describe what's going on based on low-level constants contained in the
SATA standard and guess work.

This SoC requires a specific AHCI channel setup in order to start the
operations on the channel properly.

Clock setup and AHCI channel setup idea came from NetBSD.

Tested on Cubieboard 2 and Banana pi (and attachment on Cubieboard by
Pratik Singhal).

Differential Revision:	https://reviews.freebsd.org/D737
Submitted by:	imp
Reviewed by:	imp, ganbold, mav, andrew
2015-07-03 14:11:01 +00:00
markm
8b5b408c2c Updated random(4) boot/shutdown scripting.
Fix the man pages as well.

Differential Revision: https://reviews.freebsd.org/D2924
Approved by: so (delphij)
2015-06-30 17:09:41 +00:00
nyan
866ebd44e6 MFi386: r284878
Reduce warnings:

   - Add prototype for boot2 main()
   - Don't make assignment within if statement, split it into two.
2015-06-27 08:49:41 +00:00
delphij
0dd72530a3 Reduce warnings:
- Add prototype for boot2 main()
 - Don't make assignment within if statement, split it into two.

No functional or binary change -- verified with sha256(1).

MFC after:	2 weeks
2015-06-26 18:03:19 +00:00
antoine
1aef75735f Install version.4th.8 again
It was disconnected from installation in r281081, but was never removed
from the tree or added to ObsoleteFiles.inc
2015-06-21 06:56:29 +00:00
sobomax
200a3fb372 Provide bug4bug workaround for certain dumbiness of the u-boot's API_env_enum
function, which is expected to set returned env to NULL upon reaching the end
of the environment list but fails to do so in certain cases. The respective
u-boot code looks like the following (HEAD at the time of this commit):

--- api.c ---
 496 static int API_env_enum(va_list ap)
 ...
 510                 *next = last;
 511
 512                 for (i = 0; env_get_char(i) != '\0'; i = n + 1) {
 513                         for (n = i; env_get_char(n) != '\0'; ++n) {
 514                                 if (n >= CONFIG_ENV_SIZE) {
 515                                         /* XXX shouldn't we set *next = NULL?? */
 516                                         return 0;
 517                                 }
 518                         }
-------------

The net result is that any unfortunate user of the loader's ub_env_enum()
function hitting this condition would be trapped in the infinite loop, as
the main use pattern of ub_env_enum() is basically the following:

while ((env = ub_env_enum(env)) != NULL) { DO STUFF }

Which would stuck forever with the last element.
2015-06-19 22:24:58 +00:00
sobomax
7f024ecfc3 Fix bug in the ubldr introduced in the rev.283035. The new code
fails to properly consider memory regions when the loader is
located below of those regions or engulfs their lower limit. This
results in "not enough RAM to load kernel" panic, which is totally
bogus. On top of that, there are some variables that can be left
unitialized in those cases, which might cause it fail with memory
access violation instead of panic while trying to load kernel to
a wrong or non-existing address of memory.

Augment the code to properly deal with the loader being below or
at the lower bound of the memory region in question. Also, don't
leave ununitialized variables behind.

Reviewed by:	ian
2015-06-19 17:00:36 +00:00
bapt
c2545944fb Fix fallouts from r284590
Reported by:	kib
2015-06-19 14:20:21 +00:00
bapt
5fb18cce43 Install loader(8) and zfsloader(8) only once
Differential Revision:	https://reviews.freebsd.org/D2841
Reviewed by:	imp
2015-06-19 05:42:24 +00:00
gonzo
884104c90b Add HDMI support to Beaglebone Black:
- Add driver for TDA19988 HDMI framer
- Add simple interface to communicate with HDMI sink: read EDID and set videomode
- Add event-based API to notify LCD controller when HDMI sink is available
- Add HDMI framer node and add refernce to it to lcdc node. This part of
    DTS tree is custom and does not match Linux DTS because Linux uses
    combination of pseudo-node in DTS and hardcoded driver information
    that does not map to our model.
2015-06-18 00:57:52 +00:00
sjg
008d7c831f Add META_MODE support.
Off by default, build behaves normally.
WITH_META_MODE we get auto objdir creation, the ability to
start build from anywhere in the tree.

Still need to add real targets under targets/ to build packages.

Differential Revision:       D2796
Reviewed by: brooks imp
2015-06-13 19:20:56 +00:00
andrew
9b79279d8a Pass the ACPI table pointer to the arm64 kernel from loader.efi.
Sponsored by:	The FreeBSD Foundation
2015-06-11 14:02:23 +00:00
araujo
4bd223b037 Revert my previoius commit as it explicit pollute the ficl on other
architectures. It will be reworked by GSoC students.

Requested by:	ngie, bms and pfg.
2015-06-08 02:31:46 +00:00
araujo
8d7d94ead0 Include header libi386.h to silence the clang warning of implicit declaration
of functions biospci_*.

Differential Revision:	D2668
Reviewed by:		rodrigc
2015-06-07 14:20:48 +00:00
avg
8ffe62b536 dnode_read: fixup r284025, BP_IS_HOLE macro expects a pointer
PR:		199804
Reported by:	sbruno
Pointyhat to:	avg
MFC after:	10 days
X-MFC with:	r284025
2015-06-05 17:02:21 +00:00
avg
7ef0c0eeca dnode_read: handle hole blocks in zfs boot code
A hole block pointer can be encountered at any level and the hole
can cover multiple data blocks, but we are reading the data blocks
one by one, so we care only about the current one.

PR:		199804
Reported by:	Toomas Soome <tsoome@me.com>
Submitted by:	Toomas Soome <tsoome@me.com> (earlier version)
Tested by:	Toomas Soome <tsoome@me.com>
MFC after:	11 days
2015-06-05 15:32:04 +00:00
avg
0bbde92040 userboot: enable bzipfs support
Additionally, sort all real filesystems before the virtual ones.

Differential Revision:	https://reviews.freebsd.org/D2709
Reviewed by:	grehan
MFC after:	5 days
2015-06-03 10:10:00 +00:00
dteske
0f458d727e Add comments to indicate where the flag for later abort" originates.
MFC after:	3 days
X-MFC-to:	stable/10
2015-06-02 22:23:20 +00:00
loos
a1fec5c283 Remove the broken-txfifo setting for Allwinnner SoCs.
This fixes the eventual missing characters when you type too fast or paste
some text on console.
2015-05-30 22:32:48 +00:00