mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-28 07:03:31 +08:00
Merge git://git.denx.de/u-boot-dm
This commit is contained in:
commit
d85cd29133
@ -22,6 +22,8 @@ unsigned long map_len;
|
||||
|
||||
void reset_cpu(ulong ignored)
|
||||
{
|
||||
/* Do this here while it still has an effect */
|
||||
os_fd_restore();
|
||||
if (state_uninit())
|
||||
os_exit(2);
|
||||
|
||||
|
@ -107,10 +107,12 @@ void os_exit(int exit_code)
|
||||
static struct termios orig_term;
|
||||
static bool term_setup;
|
||||
|
||||
static void os_fd_restore(void)
|
||||
void os_fd_restore(void)
|
||||
{
|
||||
if (term_setup)
|
||||
if (term_setup) {
|
||||
tcsetattr(0, TCSANOW, &orig_term);
|
||||
term_setup = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* Put tty into raw mode so <tab> and <ctrl+c> work */
|
||||
@ -120,7 +122,6 @@ void os_tty_raw(int fd, bool allow_sigs)
|
||||
|
||||
if (term_setup)
|
||||
return;
|
||||
term_setup = true;
|
||||
|
||||
/* If not a tty, don't complain */
|
||||
if (tcgetattr(fd, &orig_term))
|
||||
@ -134,6 +135,7 @@ void os_tty_raw(int fd, bool allow_sigs)
|
||||
if (tcsetattr(fd, TCSANOW, &term))
|
||||
return;
|
||||
|
||||
term_setup = true;
|
||||
atexit(os_fd_restore);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
dtb-$(CONFIG_SANDBOX) += sandbox.dtb
|
||||
dtb-$(CONFIG_DM_TEST) += test.dtb
|
||||
dtb-$(CONFIG_UT_DM) += test.dtb
|
||||
|
||||
targets += $(dtb-y)
|
||||
|
||||
|
@ -17,30 +17,6 @@
|
||||
stdout-path = "/serial";
|
||||
};
|
||||
|
||||
/* Needs to be available prior to relocation */
|
||||
uart0: serial {
|
||||
compatible = "sandbox,serial";
|
||||
sandbox,text-colour = "cyan";
|
||||
};
|
||||
|
||||
triangle {
|
||||
compatible = "demo-shape";
|
||||
colour = "cyan";
|
||||
sides = <3>;
|
||||
character = <83>;
|
||||
light-gpios = <&gpio_a 2>, <&gpio_b 6 0>;
|
||||
};
|
||||
square {
|
||||
compatible = "demo-shape";
|
||||
colour = "blue";
|
||||
sides = <4>;
|
||||
};
|
||||
hexagon {
|
||||
compatible = "demo-simple";
|
||||
colour = "white";
|
||||
sides = <6>;
|
||||
};
|
||||
|
||||
cros_ec: cros-ec@0 {
|
||||
reg = <0 0>;
|
||||
compatible = "google,cros-ec-sandbox";
|
||||
@ -70,10 +46,22 @@
|
||||
};
|
||||
};
|
||||
|
||||
lcd {
|
||||
compatible = "sandbox,lcd-sdl";
|
||||
xres = <1366>;
|
||||
yres = <768>;
|
||||
eth@10002000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10002000 0x1000>;
|
||||
fake-host-hwaddr = [00 00 66 44 22 00];
|
||||
};
|
||||
|
||||
eth@80000000 {
|
||||
compatible = "sandbox,eth-raw";
|
||||
reg = <0x80000000 0x1000>;
|
||||
host-raw-interface = "eth0";
|
||||
};
|
||||
|
||||
eth@90000000 {
|
||||
compatible = "sandbox,eth-raw";
|
||||
reg = <0x90000000 0x1000>;
|
||||
host-raw-interface = "lo";
|
||||
};
|
||||
|
||||
gpio_a: gpios@0 {
|
||||
@ -92,6 +80,12 @@
|
||||
num-gpios = <10>;
|
||||
};
|
||||
|
||||
hexagon {
|
||||
compatible = "demo-simple";
|
||||
colour = "white";
|
||||
sides = <6>;
|
||||
};
|
||||
|
||||
i2c_0: i2c@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
@ -120,18 +114,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
spi@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0 0>;
|
||||
compatible = "sandbox,spi";
|
||||
cs-gpios = <0>, <&gpio_a 0>;
|
||||
firmware_storage_spi: flash@0 {
|
||||
reg = <0>;
|
||||
compatible = "spansion,m25p16", "sandbox,spi-flash";
|
||||
spi-max-frequency = <40000000>;
|
||||
sandbox,filename = "spi.bin";
|
||||
};
|
||||
lcd {
|
||||
compatible = "sandbox,lcd-sdl";
|
||||
xres = <1366>;
|
||||
yres = <768>;
|
||||
};
|
||||
|
||||
pci: pci-controller {
|
||||
@ -150,22 +136,38 @@
|
||||
};
|
||||
};
|
||||
|
||||
eth@10002000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10002000 0x1000>;
|
||||
fake-host-hwaddr = [00 00 66 44 22 00];
|
||||
spi@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0 0>;
|
||||
compatible = "sandbox,spi";
|
||||
cs-gpios = <0>, <&gpio_a 0>;
|
||||
firmware_storage_spi: flash@0 {
|
||||
reg = <0>;
|
||||
compatible = "spansion,m25p16", "sandbox,spi-flash";
|
||||
spi-max-frequency = <40000000>;
|
||||
sandbox,filename = "spi.bin";
|
||||
};
|
||||
};
|
||||
|
||||
eth@80000000 {
|
||||
compatible = "sandbox,eth-raw";
|
||||
reg = <0x80000000 0x1000>;
|
||||
host-raw-interface = "eth0";
|
||||
square {
|
||||
compatible = "demo-shape";
|
||||
colour = "blue";
|
||||
sides = <4>;
|
||||
};
|
||||
|
||||
eth@90000000 {
|
||||
compatible = "sandbox,eth-raw";
|
||||
reg = <0x90000000 0x1000>;
|
||||
host-raw-interface = "lo";
|
||||
triangle {
|
||||
compatible = "demo-shape";
|
||||
colour = "cyan";
|
||||
sides = <3>;
|
||||
character = <83>;
|
||||
light-gpios = <&gpio_a 2>, <&gpio_b 6 0>;
|
||||
};
|
||||
|
||||
/* Needs to be available prior to relocation */
|
||||
uart0: serial {
|
||||
compatible = "sandbox,serial";
|
||||
sandbox,text-colour = "cyan";
|
||||
};
|
||||
|
||||
usb@0 {
|
||||
|
@ -8,9 +8,13 @@
|
||||
|
||||
aliases {
|
||||
console = &uart0;
|
||||
eth0 = "/eth@10002000";
|
||||
eth5 = ð_5;
|
||||
i2c0 = "/i2c@0";
|
||||
spi0 = "/spi@0";
|
||||
pci0 = &pci;
|
||||
rtc0 = &rtc_0;
|
||||
rtc1 = &rtc_1;
|
||||
spi0 = "/spi@0";
|
||||
testfdt6 = "/e-test";
|
||||
testbus3 = "/some-bus";
|
||||
testfdt0 = "/some-bus/c-test@0";
|
||||
@ -18,18 +22,11 @@
|
||||
testfdt3 = "/b-test";
|
||||
testfdt5 = "/some-bus/c-test@5";
|
||||
testfdt8 = "/a-test";
|
||||
eth0 = "/eth@10002000";
|
||||
eth5 = ð_5;
|
||||
usb0 = &usb_0;
|
||||
usb1 = &usb_1;
|
||||
usb2 = &usb_2;
|
||||
};
|
||||
|
||||
uart0: serial {
|
||||
compatible = "sandbox,serial";
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
a-test {
|
||||
reg = <0>;
|
||||
compatible = "denx,u-boot-fdt-test";
|
||||
@ -108,6 +105,24 @@
|
||||
compatible = "denx,u-boot-fdt-test";
|
||||
};
|
||||
|
||||
eth@10002000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10002000 0x1000>;
|
||||
fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x00>;
|
||||
};
|
||||
|
||||
eth_5: eth@10003000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10003000 0x1000>;
|
||||
fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x11>;
|
||||
};
|
||||
|
||||
eth@10004000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10004000 0x1000>;
|
||||
fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x22>;
|
||||
};
|
||||
|
||||
gpio_a: base-gpios {
|
||||
compatible = "sandbox,gpio";
|
||||
gpio-controller;
|
||||
@ -140,6 +155,22 @@
|
||||
};
|
||||
};
|
||||
|
||||
rtc_0: rtc@43 {
|
||||
reg = <0x43>;
|
||||
compatible = "sandbox-rtc";
|
||||
emul {
|
||||
compatible = "sandbox,i2c-rtc";
|
||||
};
|
||||
};
|
||||
|
||||
rtc_1: rtc@61 {
|
||||
reg = <0x61>;
|
||||
compatible = "sandbox-rtc";
|
||||
emul {
|
||||
compatible = "sandbox,i2c-rtc";
|
||||
};
|
||||
};
|
||||
|
||||
sandbox_pmic: sandbox_pmic {
|
||||
reg = <0x40>;
|
||||
};
|
||||
@ -175,22 +206,9 @@
|
||||
};
|
||||
};
|
||||
|
||||
eth@10002000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10002000 0x1000>;
|
||||
fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x00>;
|
||||
};
|
||||
|
||||
eth_5: eth@10003000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10003000 0x1000>;
|
||||
fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x11>;
|
||||
};
|
||||
|
||||
eth@10004000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10004000 0x1000>;
|
||||
fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x22>;
|
||||
uart0: serial {
|
||||
compatible = "sandbox,serial";
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
usb_0: usb@0 {
|
||||
|
@ -596,6 +596,7 @@ int pci_bridge_write_config(struct udevice *bus, pci_dev_t devfn, uint offset,
|
||||
UCLASS_DRIVER(pci) = {
|
||||
.id = UCLASS_PCI,
|
||||
.name = "pci",
|
||||
.flags = DM_UC_FLAG_SEQ_ALIAS,
|
||||
.post_bind = pci_uclass_post_bind,
|
||||
.pre_probe = pci_uclass_pre_probe,
|
||||
.post_probe = pci_uclass_post_probe,
|
||||
|
@ -42,7 +42,7 @@
|
||||
* Note: With driver model, the label is allocated so there is no need for
|
||||
* the caller to preserve it.
|
||||
*
|
||||
* @param gp GPIO number
|
||||
* @param gpio GPIO number
|
||||
* @param label User label for this GPIO
|
||||
* @return 0 if ok, -1 on error
|
||||
*/
|
||||
@ -127,7 +127,7 @@ struct gpio_desc {
|
||||
};
|
||||
|
||||
/**
|
||||
* dm_gpio_is_valid() - Check if a GPIO is gpio_is_valie
|
||||
* dm_gpio_is_valid() - Check if a GPIO is valid
|
||||
*
|
||||
* @desc: GPIO description containing device, offset and flags,
|
||||
* previously returned by gpio_request_by_name()
|
||||
@ -167,7 +167,7 @@ int gpio_get_status(struct udevice *dev, int offset, char *buf, int buffsize);
|
||||
*
|
||||
* @dev: Device to check
|
||||
* @offset: Offset of device GPIO to check
|
||||
* @namep: If non-NULL, this is set to the nane given when the GPIO
|
||||
* @namep: If non-NULL, this is set to the name given when the GPIO
|
||||
* was requested, or -1 if it has not been requested
|
||||
* @return -ENODATA if the driver returned an unknown function,
|
||||
* -ENODEV if the device is not active, -EINVAL if the offset is invalid.
|
||||
@ -186,7 +186,7 @@ int gpio_get_function(struct udevice *dev, int offset, const char **namep);
|
||||
*
|
||||
* @dev: Device to check
|
||||
* @offset: Offset of device GPIO to check
|
||||
* @namep: If non-NULL, this is set to the nane given when the GPIO
|
||||
* @namep: If non-NULL, this is set to the name given when the GPIO
|
||||
* was requested, or -1 if it has not been requested
|
||||
* @return -ENODATA if the driver returned an unknown function,
|
||||
* -ENODEV if the device is not active, -EINVAL if the offset is invalid.
|
||||
@ -219,7 +219,7 @@ struct fdtdec_phandle_args;
|
||||
* Also it would be useful to standardise additional functions like
|
||||
* pullup, slew rate and drive strength.
|
||||
*
|
||||
* gpio_request)( and gpio_free() are optional - if NULL then they will
|
||||
* gpio_request() and gpio_free() are optional - if NULL then they will
|
||||
* not be called.
|
||||
*
|
||||
* Note that @offset is the offset from the base GPIO of the device. So
|
||||
@ -271,7 +271,7 @@ struct dm_gpio_ops {
|
||||
*
|
||||
* @dev: GPIO device
|
||||
* @desc: Place to put GPIO description
|
||||
* @args: Arguments provided in descripion
|
||||
* @args: Arguments provided in description
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int (*xlate)(struct udevice *dev, struct gpio_desc *desc,
|
||||
@ -398,7 +398,7 @@ int gpio_request_by_name(struct udevice *dev, const char *list_name,
|
||||
/**
|
||||
* gpio_request_list_by_name() - Request a list of GPIOs
|
||||
*
|
||||
* Reads all the GPIOs from a list and requetss them. See
|
||||
* Reads all the GPIOs from a list and requests them. See
|
||||
* gpio_request_by_name() for additional details. Lists should not be
|
||||
* misused to hold unrelated or optional GPIOs. They should only be used
|
||||
* for things like parallel data lines. A zero phandle terminates the list
|
||||
@ -533,7 +533,7 @@ int dm_gpio_set_dir_flags(struct gpio_desc *desc, ulong flags);
|
||||
/**
|
||||
* gpio_get_number() - Get the global GPIO number of a GPIO
|
||||
*
|
||||
* This should only be used for debugging or interest. It returns the nummber
|
||||
* This should only be used for debugging or interest. It returns the number
|
||||
* that should be used for gpio_get_value() etc. to access this GPIO.
|
||||
*
|
||||
* @desc: GPIO description containing device, offset and flags,
|
||||
|
@ -39,20 +39,18 @@ enum uclass_id {
|
||||
UCLASS_PCH, /* x86 platform controller hub */
|
||||
UCLASS_PCI, /* PCI bus */
|
||||
UCLASS_PCI_GENERIC, /* Generic PCI bus device */
|
||||
UCLASS_PMIC, /* PMIC I/O device */
|
||||
UCLASS_REGULATOR, /* Regulator device */
|
||||
UCLASS_RTC, /* Real time clock device */
|
||||
UCLASS_SERIAL, /* Serial UART */
|
||||
UCLASS_SPI, /* SPI bus */
|
||||
UCLASS_SPI_GENERIC, /* Generic SPI flash target */
|
||||
UCLASS_SPI_FLASH, /* SPI flash */
|
||||
UCLASS_SPI_GENERIC, /* Generic SPI flash target */
|
||||
UCLASS_THERMAL, /* Thermal sensor */
|
||||
UCLASS_USB, /* USB bus */
|
||||
UCLASS_USB_DEV_GENERIC, /* USB generic device */
|
||||
UCLASS_USB_HUB, /* USB hub */
|
||||
|
||||
/* Power Management */
|
||||
UCLASS_PMIC, /* PMIC I/O device */
|
||||
UCLASS_REGULATOR, /* REGULATOR device */
|
||||
|
||||
UCLASS_COUNT,
|
||||
UCLASS_INVALID = -1,
|
||||
};
|
||||
|
@ -111,6 +111,14 @@ void os_exit(int exit_code) __attribute__((noreturn));
|
||||
*/
|
||||
void os_tty_raw(int fd, bool allow_sigs);
|
||||
|
||||
/**
|
||||
* Restore the tty to its original mode
|
||||
*
|
||||
* Call this to restore the original terminal mode, after it has been changed
|
||||
* by os_tty_raw(). This is an internal function.
|
||||
*/
|
||||
void os_fd_restore(void);
|
||||
|
||||
/**
|
||||
* Acquires some memory from the underlying os.
|
||||
*
|
||||
|
@ -21,6 +21,17 @@ static int dm_test_pci_base(struct unit_test_state *uts)
|
||||
}
|
||||
DM_TEST(dm_test_pci_base, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
|
||||
|
||||
/* Test that sandbox PCI bus numbering works correctly */
|
||||
static int dm_test_pci_busnum(struct unit_test_state *uts)
|
||||
{
|
||||
struct udevice *bus;
|
||||
|
||||
ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 0, &bus));
|
||||
|
||||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_pci_busnum, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
|
||||
|
||||
/* Test that we can use the swapcase device correctly */
|
||||
static int dm_test_pci_swapcase(struct unit_test_state *uts)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user