+/*
+ * doUnLoad:
+ * Un-Load either the spi or i2c modules and change device ownerships, etc.
+ *********************************************************************************
+ */
+
+static void _doUnLoadUsage (char *argv [])
+{
+ fprintf (stderr, "Usage: %s unload <spi/i2c>\n", argv [0]) ;
+ exit (1) ;
+}
+
+static void doUnLoad (int argc, char *argv [])
+{
+ char *module1, *module2 ;
+ char cmd [80] ;
+
+ if (argc != 3)
+ _doUnLoadUsage (argv) ;
+
+ /**/ if (strcasecmp (argv [2], "spi") == 0)
+ {
+ module1 = "spidev" ;
+ module2 = "spi_bcm2708" ;
+ }
+ else if (strcasecmp (argv [2], "i2c") == 0)
+ {
+ module1 = "i2c_dev" ;
+ module2 = "i2c_bcm2708" ;
+ }
+ else
+ _doUnLoadUsage (argv) ;
+
+ if (moduleLoaded (module1))
+ {
+ sprintf (cmd, "/sbin/rmmod %s", module1) ;
+ system (cmd) ;
+ }
+
+ if (moduleLoaded (module2))
+ {
+ sprintf (cmd, "/sbin/rmmod %s", module2) ;
+ system (cmd) ;
+ }
+}
+
+