From 8939df092e24abdf39edb6fbca90fe9c2b44c3b1 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2015 21:07:27 -0600 Subject: sandbox: Tidy up terminal restore For some reason 'u-boot -D' does not restore the terminal correctly when the 'reset' command is used. Call the terminal restore function explicitly in this case. Signed-off-by: Simon Glass Reviewed-by: Joe Hershberger diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c index b6aae37..02c4cd3 100644 --- a/arch/sandbox/cpu/cpu.c +++ b/arch/sandbox/cpu/cpu.c @@ -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); diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c index e6dd17e..8a4d719 100644 --- a/arch/sandbox/cpu/os.c +++ b/arch/sandbox/cpu/os.c @@ -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 and 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); } diff --git a/include/os.h b/include/os.h index ffbdce8..954a48c 100644 --- a/include/os.h +++ b/include/os.h @@ -112,6 +112,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. * * \param length Number of bytes to be allocated -- cgit v0.10.2 From 2bb02e4fe22da5d982867c26e369730ea901f999 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2015 21:08:06 -0600 Subject: dm: pci: Allow PCI bus numbering aliases Commit 9cc36a2 'dm: core: Add a flag to control sequence numbering' changed the default uclass behaviour to not support bus numbering. This is incorrect for PCI and that commit should have enabled the flag for PCI. Enable it so that PCI buses can be found and the 'pci' command works again. Also add a test for this. Signed-off-by: Simon Glass diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index d48d865..de87505 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -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, diff --git a/test/dm/pci.c b/test/dm/pci.c index 2f3ae79..3ab4ba8 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -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) { -- cgit v0.10.2 From 4e389366e8a2c0f635bb7bf35a2386019518bbbd Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 22 May 2015 15:42:14 -0600 Subject: dm: Sort the uclass IDs after the tegra/PMIC addition Tidy up the sort order again. Signed-off-by: Simon Glass Reported-by: Joe Hershberger Acked-by: Joe Hershberger diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h index 4d737f4..c7310d7 100644 --- a/include/dm/uclass-id.h +++ b/include/dm/uclass-id.h @@ -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, }; -- cgit v0.10.2 From 171e991d17612bce341ad001a3d4cb7ba299f947 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 22 May 2015 15:42:15 -0600 Subject: sandbox: dts: Sort the test.dts file a little There are some core test nodes near the beginning of the file which should be grouped together. But for other nodes, let's sort them. Signed-off-by: Simon Glass Acked-by: Joe Hershberger diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 1bc3ca0..52ff436 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -8,9 +8,11 @@ aliases { console = &uart0; + eth0 = "/eth@10002000"; + eth5 = ð_5; i2c0 = "/i2c@0"; - spi0 = "/spi@0"; pci0 = &pci; + spi0 = "/spi@0"; testfdt6 = "/e-test"; testbus3 = "/some-bus"; testfdt0 = "/some-bus/c-test@0"; @@ -18,18 +20,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 +103,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; @@ -175,22 +188,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 { -- cgit v0.10.2 From f4d84576a4af251862f9b77693fd84d67e7db542 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 22 May 2015 15:42:16 -0600 Subject: sandbox: dts: Sort the sandbox.dts file Sort this by node name for easier browsing. Signed-off-by: Simon Glass diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts index a3ebd80..8927527 100644 --- a/arch/sandbox/dts/sandbox.dts +++ b/arch/sandbox/dts/sandbox.dts @@ -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 { -- cgit v0.10.2 From 52d3bc5d18ea0e3ef78715d9c0c703e458f260a0 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 22 May 2015 15:42:17 -0600 Subject: sandbox: dts: Add the real-time-clock test nodes back in These were lost when the PMIC series was applied. Add them back so that the tests pass again. Reported-by: Joe Hershberger Signed-off-by: Simon Glass Acked-by: Joe Hershberger diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 52ff436..c25614a 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -12,6 +12,8 @@ eth5 = ð_5; i2c0 = "/i2c@0"; pci0 = &pci; + rtc0 = &rtc_0; + rtc1 = &rtc_1; spi0 = "/spi@0"; testfdt6 = "/e-test"; testbus3 = "/some-bus"; @@ -153,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>; }; -- cgit v0.10.2 From b14d547245bf47d861b5a9cc5327d98b89e5d0af Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sat, 23 May 2015 11:53:57 -0600 Subject: sandbox: Compile test device tree when CONFIG_UT_DM is defined A conflict between the PMIC and unit test work means that the sandbox test device tree file is no-longer built. Fix this. Series-to: u-boot Series-cc: joe, prz Change-Id: I6616428e05713e5306f848e7dd0a645dedf0934e Signed-off-by: Simon Glass diff --git a/arch/sandbox/dts/Makefile b/arch/sandbox/dts/Makefile index 562a078..517b555 100644 --- a/arch/sandbox/dts/Makefile +++ b/arch/sandbox/dts/Makefile @@ -1,5 +1,5 @@ dtb-$(CONFIG_SANDBOX) += sandbox.dtb -dtb-$(CONFIG_DM_TEST) += test.dtb +dtb-$(CONFIG_UT_DM) += test.dtb targets += $(dtb-y) -- cgit v0.10.2 From d9a607f2bd4315c9e370aa358ea9168d615a48fc Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Fri, 29 May 2015 21:57:33 +0900 Subject: gpio: fix typos in GPIO header Signed-off-by: Masahiro Yamada diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index 519bb0b..de91e57 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h @@ -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, -- cgit v0.10.2