Re: [PATCH 3/3] of: unittest: Overlays with sub-devices tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Tue, 16 Dec 2014 19:45:27 +0200
, Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx>
 wrote:
> Introduce selftests for overlays using sub-devices present
> in children nodes.
> 
> Signed-off-by: Pantelis Antoniou <pantelis.antoniou@xxxxxxxxxxxx>
> ---
>  drivers/of/unittest-data/tests-overlay.dtsi | 55 +++++++++++++++++++++++++++++
>  drivers/of/unittest.c                       | 46 ++++++++++++++++++++++++
>  2 files changed, 101 insertions(+)
> 
> diff --git a/drivers/of/unittest-data/tests-overlay.dtsi b/drivers/of/unittest-data/tests-overlay.dtsi
> index 75976da..a2b687d 100644
> --- a/drivers/of/unittest-data/tests-overlay.dtsi
> +++ b/drivers/of/unittest-data/tests-overlay.dtsi
> @@ -176,5 +176,60 @@
>  			};
>  		};
>  
> +		overlay10 {
> +			fragment@0 {
> +				target-path = "/testcase-data/overlay-node/test-bus";
> +				__overlay__ {
> +
> +					/* suppress DTC warning */
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +
> +					test-selftest10 {
> +						compatible = "selftest";
> +						status = "okay";
> +						reg = <10>;
> +
> +						#address-cells = <1>;
> +						#size-cells = <0>;
> +
> +						test-selftest101 {
> +							compatible = "selftest";
> +							status = "okay";
> +							reg = <1>;
> +						};
> +
> +					};
> +				};
> +			};
> +		};
> +
> +		overlay11 {
> +			fragment@0 {
> +				target-path = "/testcase-data/overlay-node/test-bus";
> +				__overlay__ {
> +
> +					/* suppress DTC warning */
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +
> +					test-selftest11 {
> +						compatible = "selftest";
> +						status = "okay";
> +						reg = <11>;
> +
> +						#address-cells = <1>;
> +						#size-cells = <0>;
> +
> +						test-selftest111 {
> +							compatible = "selftest";
> +							status = "okay";
> +							reg = <1>;
> +						};
> +
> +					};
> +				};
> +			};
> +		};
>  	};
>  };
> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
> index 844838e..00f0f9e 100644
> --- a/drivers/of/unittest.c
> +++ b/drivers/of/unittest.c
> @@ -978,6 +978,9 @@ static int selftest_probe(struct platform_device *pdev)
>  	}
>  
>  	dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name);
> +
> +	of_platform_populate(np, NULL, NULL, &pdev->dev);
> +
>  	return 0;
>  }
>  
> @@ -1385,6 +1388,46 @@ static void of_selftest_overlay_8(void)
>  	selftest(1, "overlay test %d passed\n", 8);
>  }
>  
> +/* test insertion of a bus with parent devices */
> +static void of_selftest_overlay_10(void)
> +{
> +	int ret;
> +	char *child_path;
> +
> +	/* device should disable */
> +	ret = of_selftest_apply_overlay_check(10, 10, 0, 1);
> +	if (ret != 0)
> +		return;
> +
> +	child_path = kasprintf(GFP_KERNEL, "%s/test-selftest101", selftest_path(10));
> +	if (!child_path) {
> +		selftest(0, "overlay test %d failed; kasprintf failed\n", 10);
> +		return;
> +	}

Please use the following construct for test conditions:

	child_path = kasprintf(GFP_KERNEL, "%s/test-selftest101", selftest_path(10));
	if (selftest(!child_path, "overlay test %d failed; kasprintf failed\n", 10))
		return;

Same goes for the tests below. That eliminates the need for a dummy
'pass' test at the bottom of the function.

> +
> +	ret = of_path_platform_device_exists(child_path);
> +	kfree(child_path);
> +	if (ret == 0) {
> +		selftest(0, "overlay test %d failed; child device not present\n", 10);
> +		return;
> +	}
> +
> +	selftest(1, "overlay test %d passed\n", 10);
> +}
> +
> +/* test insertion of a bus with parent devices (and revert) */
> +static void of_selftest_overlay_11(void)
> +{
> +	int ret;
> +
> +	/* device should disable */
> +	ret = of_selftest_apply_revert_overlay_check(11, 11, 0, 1);
> +	if (ret != 0)
> +		return;
> +
> +	selftest(1, "overlay test %d passed\n", 11);
> +}
> +
>  static void __init of_selftest_overlay(void)
>  {
>  	struct device_node *bus_np = NULL;
> @@ -1433,6 +1476,9 @@ static void __init of_selftest_overlay(void)
>  	of_selftest_overlay_6();
>  	of_selftest_overlay_8();
>  
> +	of_selftest_overlay_10();
> +	of_selftest_overlay_11();
> +
>  out:
>  	of_node_put(bus_np);
>  }
> -- 
> 1.7.12
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux