svn commit: r359965 - head/sys/dev/mmc

Emmanuel Vadot manu at FreeBSD.org
Wed Apr 15 13:02:14 UTC 2020


Author: manu
Date: Wed Apr 15 13:02:13 2020
New Revision: 359965
URL: https://svnweb.freebsd.org/changeset/base/359965

Log:
  mmc_fdt_helpers: Do not schedule a card detection is there is no cd gpio
  
  If the fdt node doesn't have a cd-gpios properties or if the node is set
  as non-removable we do not init the card detection timeout task as it is
  useless so don't schedule it too.
  
  MFC after:	1 month
  X-MFC-With:	r359924

Modified:
  head/sys/dev/mmc/mmc_fdt_helpers.c

Modified: head/sys/dev/mmc/mmc_fdt_helpers.c
==============================================================================
--- head/sys/dev/mmc/mmc_fdt_helpers.c	Wed Apr 15 13:00:48 2020	(r359964)
+++ head/sys/dev/mmc/mmc_fdt_helpers.c	Wed Apr 15 13:02:13 2020	(r359965)
@@ -217,7 +217,7 @@ cd_card_task(void *arg, int pending __unused)
 /*
  * Card detect setup.
  */
-static void
+static bool
 cd_setup(struct mmc_fdt_helper *helper, phandle_t node)
 {
 	int pincaps;
@@ -233,7 +233,7 @@ cd_setup(struct mmc_fdt_helper *helper, phandle_t node
 		helper->cd_disabled = true;
 		if (bootverbose)
 			device_printf(dev, "Non-removable media\n");
-		return;
+		return (false);
 	}
 
 	/*
@@ -246,14 +246,14 @@ cd_setup(struct mmc_fdt_helper *helper, phandle_t node
 	 */
 	if (gpio_pin_get_by_ofw_property(dev, node, "cd-gpios",
 	    &helper->cd_pin))
-		return;
+		return (false);
 
 	if (gpio_pin_getcaps(helper->cd_pin, &pincaps) != 0 ||
 	    !(pincaps & GPIO_PIN_INPUT)) {
 		device_printf(dev, "Cannot read card-detect gpio pin; "
 		    "setting card-always-present flag.\n");
 		helper->cd_disabled = true;
-		return;
+		return (false);
 	}
 
 	/*
@@ -313,6 +313,8 @@ without_interrupts:
 		    device_get_nameunit(helper->cd_pin->dev), helper->cd_pin->pin,
 		    cd_mode_str);
 	}
+
+	return (true);
 }
 
 /*
@@ -354,14 +356,16 @@ mmc_fdt_gpio_setup(device_t dev, phandle_t node, struc
 
 	helper->dev = dev;
 	helper->cd_handler = handler;
-	cd_setup(helper, node);
 	wp_setup(helper, node);
 
-	/* 
-	 * Schedule a card detection
-	 */
-	taskqueue_enqueue_timeout_sbt(taskqueue_swi_giant,
-	    &helper->cd_delayed_task, mstosbt(500), 0, C_PREL(2));
+	if (cd_setup(helper, node)) {
+		/* 
+		 * Schedule a card detection
+		 */
+		taskqueue_enqueue_timeout_sbt(taskqueue_swi_giant,
+		    &helper->cd_delayed_task, mstosbt(500), 0, C_PREL(2));
+	}
+
 	return (0);
 }
 


More information about the svn-src-all mailing list