- "init_one_mydevice" might do things like allocate software
-state structures, map in I/O registers, place the hardware
-into an initialized state, etc.
+ static struct of_platform_driver mydevice_driver = {
+ .name = "mydevice",
+ .match_table = mydevice_match,
+ .probe = mydevice_probe,
+ .remove = __devexit_p(mydevice_remove),
+ };
+
+ static int __init mydevice_init(void)
+ {
+ return of_register_driver(&mydevice_driver, &sbus_bus_type);
+ }
+
+ static void __exit mydevice_exit(void)
+ {
+ of_unregister_driver(&mydevice_driver);
+ }
+
+ module_init(mydevice_init);
+ module_exit(mydevice_exit);
+
+ The mydevice_match table is a series of entries which
+describes what SBUS devices your driver is meant for. In the
+simplest case you specify a string for the 'name' field. Every
+SBUS device with a 'name' property matching your string will
+be passed one-by-one to your .probe method.
+
+ You should store away your device private state structure
+pointer in the drvdata area so that you can retrieve it later on
+in your .remove method.
+
+ Any memory allocated, registers mapped, IRQs registered,
+etc. must be undone by your .remove method so that all resources
+of your device are released by the time it returns.
+
+ You should _NOT_ use the for_each_sbus(), for_each_sbusdev(),
+and for_all_sbusdev() interfaces. They are deprecated, will be
+removed, and no new driver should reference them ever.