- int err = of_register_driver(&ebus_beep_driver, &ebus_bus_type);
-
- if (!err) {
- err = of_register_driver(&isa_beep_driver, &isa_bus_type);
- if (err)
- of_unregister_driver(&ebus_beep_driver);
+ struct linux_ebus *ebus;
+ struct linux_ebus_device *edev;
+#ifdef CONFIG_SPARC64
+ struct sparc_isa_bridge *isa_br;
+ struct sparc_isa_device *isa_dev;
+#endif
+
+ for_each_ebus(ebus) {
+ for_each_ebusdev(edev, ebus) {
+ if (!strcmp(edev->prom_name, "beep")) {
+ beep_name = "Sparc EBUS Speaker";
+ beep_event = ebus_spkr_event;
+ beep_iobase = edev->resource[0].start;
+ return sparcspkr_drv_init();
+ }
+ }
+ }
+#ifdef CONFIG_SPARC64
+ for_each_isa(isa_br) {
+ for_each_isadev(isa_dev, isa_br) {
+ /* A hack, the beep device's base lives in
+ * the DMA isa node.
+ */
+ if (!strcmp(isa_dev->prom_name, "dma")) {
+ beep_name = "Sparc ISA Speaker";
+ beep_event = isa_spkr_event,
+ beep_iobase = isa_dev->resource.start;
+ return sparcspkr_drv_init();
+ }
+ }