+static int carlu_run_gpio_test(void)
+{
+ struct carlu *carl = NULL;
+ int err;
+
+ err = carlu_init();
+ if (err)
+ goto out;
+
+ carl = carlusb_probe();
+ if (IS_ERR_OR_NULL(carl)) {
+ err = PTR_ERR(carl);
+ goto out;
+ }
+
+ err = carlu_gpio_test(carl);
+ if (err)
+ goto out_close;
+
+out_close:
+ carlusb_close(carl);
+
+out:
+ carlu_exit();
+ return err ? EXIT_FAILURE : EXIT_SUCCESS;
+}
+
+static int carlu_run_random_test(void)
+{
+ struct carlu *carl = NULL;
+ int err;
+
+ err = carlu_init();
+ if (err)
+ goto out;
+
+ carl = carlusb_probe();
+ if (IS_ERR_OR_NULL(carl)) {
+ err = PTR_ERR(carl);
+ goto out;
+ }
+
+ err = carlu_random_test(carl);
+ if (err)
+ goto out_close;
+
+out_close:
+ carlusb_close(carl);
+
+out:
+ carlu_exit();
+ return err ? EXIT_FAILURE : EXIT_SUCCESS;
+}
+