Browse Source

Merge git://git.denx.de/u-boot-dm

Tom Rini 9 years ago
parent
commit
739c5e0833
4 changed files with 17 additions and 4 deletions
  1. 4 0
      arch/sandbox/dts/sandbox.dts
  2. 6 2
      drivers/core/device.c
  3. 1 1
      drivers/misc/reset_sandbox.c
  4. 6 1
      test/dm/core.c

+ 4 - 0
arch/sandbox/dts/sandbox.dts

@@ -153,6 +153,10 @@
 		};
 		};
 	};
 	};
 
 
+	reset@1 {
+		compatible = "sandbox,reset";
+	};
+
 	spi@0 {
 	spi@0 {
 		#address-cells = <1>;
 		#address-cells = <1>;
 		#size-cells = <0>;
 		#size-cells = <0>;

+ 6 - 2
drivers/core/device.c

@@ -289,8 +289,12 @@ int device_probe_child(struct udevice *dev, void *parent_priv)
 
 
 	dev->flags |= DM_FLAG_ACTIVATED;
 	dev->flags |= DM_FLAG_ACTIVATED;
 
 
-	/* continue regardless of the result of pinctrl */
-	pinctrl_select_state(dev, "default");
+	/*
+	 * Process pinctrl for everything except the root device, and
+	 * continue regardless of the result of pinctrl.
+	 */
+	if (dev->parent)
+		pinctrl_select_state(dev, "default");
 
 
 	ret = uclass_pre_probe_device(dev);
 	ret = uclass_pre_probe_device(dev);
 	if (ret)
 	if (ret)

+ 1 - 1
drivers/misc/reset_sandbox.c

@@ -40,7 +40,7 @@ static int sandbox_reset_request(struct udevice *dev, enum reset_t type)
 	 * (see the U_BOOT_DEVICE() declaration below) should not do anything.
 	 * (see the U_BOOT_DEVICE() declaration below) should not do anything.
 	 * If we are that device, return an error.
 	 * If we are that device, return an error.
 	 */
 	 */
-	if (gd->fdt_blob && dev->of_offset == -1)
+	if (state->fdt_fname && dev->of_offset == -1)
 		return -ENODEV;
 		return -ENODEV;
 
 
 	switch (type) {
 	switch (type) {

+ 6 - 1
test/dm/core.c

@@ -77,7 +77,7 @@ void dm_leak_check_start(struct unit_test_state *uts)
 int dm_leak_check_end(struct unit_test_state *uts)
 int dm_leak_check_end(struct unit_test_state *uts)
 {
 {
 	struct mallinfo end;
 	struct mallinfo end;
-	int id;
+	int id, diff;
 
 
 	/* Don't delete the root class, since we started with that */
 	/* Don't delete the root class, since we started with that */
 	for (id = UCLASS_ROOT + 1; id < UCLASS_COUNT; id++) {
 	for (id = UCLASS_ROOT + 1; id < UCLASS_COUNT; id++) {
@@ -90,6 +90,11 @@ int dm_leak_check_end(struct unit_test_state *uts)
 	}
 	}
 
 
 	end = mallinfo();
 	end = mallinfo();
+	diff = end.uordblks - uts->start.uordblks;
+	if (diff > 0)
+		printf("Leak: lost %#xd bytes\n", diff);
+	else if (diff < 0)
+		printf("Leak: gained %#xd bytes\n", -diff);
 	ut_asserteq(uts->start.uordblks, end.uordblks);
 	ut_asserteq(uts->start.uordblks, end.uordblks);
 
 
 	return 0;
 	return 0;