12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // SPDX-License-Identifier: GPL-2.0+
- #include <linux/module.h>
- #include <asm/hardware.h> /* for register_parisc_driver() stuff */
- #include <asm/parisc-device.h>
- #include "ipmi_si.h"
- static bool parisc_registered;
- static int __init ipmi_parisc_probe(struct parisc_device *dev)
- {
- struct si_sm_io io;
- memset(&io, 0, sizeof(io));
- io.si_type = SI_KCS;
- io.addr_source = SI_DEVICETREE;
- io.addr_space = IPMI_MEM_ADDR_SPACE;
- io.addr_data = dev->hpa.start;
- io.regsize = 1;
- io.regspacing = 1;
- io.regshift = 0;
- io.irq = 0; /* no interrupt */
- io.irq_setup = NULL;
- io.dev = &dev->dev;
- dev_dbg(&dev->dev, "addr 0x%lx\n", io.addr_data);
- return ipmi_si_add_smi(&io);
- }
- static void __exit ipmi_parisc_remove(struct parisc_device *dev)
- {
- ipmi_si_remove_by_dev(&dev->dev);
- }
- static const struct parisc_device_id ipmi_parisc_tbl[] __initconst = {
- { HPHW_MC, HVERSION_REV_ANY_ID, 0x004, 0xC0 },
- { 0, }
- };
- MODULE_DEVICE_TABLE(parisc, ipmi_parisc_tbl);
- static struct parisc_driver ipmi_parisc_driver __refdata = {
- .name = "ipmi",
- .id_table = ipmi_parisc_tbl,
- .probe = ipmi_parisc_probe,
- .remove = __exit_p(ipmi_parisc_remove),
- };
- void ipmi_si_parisc_init(void)
- {
- register_parisc_driver(&ipmi_parisc_driver);
- parisc_registered = true;
- }
- void ipmi_si_parisc_shutdown(void)
- {
- if (parisc_registered)
- unregister_parisc_driver(&ipmi_parisc_driver);
- }
|