superio/nsc: pass the chip-specific ops struct to pnp_enable_devices

Pass the address of the chip-specific ops struct instead of the one of
the generic pnp_ops struct to the PNP device enable function.
This allows the removal of the LDN-specific ops overrides which is also done in
this patch.

Change-Id: I0c820254e97e3f80470d148552af06940e147b74
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-on: https://review.coreboot.org/23008
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
diff --git a/src/superio/nsc/pc87309/superio.c b/src/superio/nsc/pc87309/superio.c
index ff36294..ba5d97a 100644
--- a/src/superio/nsc/pc87309/superio.c
+++ b/src/superio/nsc/pc87309/superio.c
@@ -43,19 +43,19 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC87309_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
-	{ &ops, PC87309_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
-	{ &ops, PC87309_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1, 0x07f8, },
-	{ &ops, PC87309_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
+	{ NULL, PC87309_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
+	{ NULL, PC87309_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
+	{ NULL, PC87309_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+		0x07f8, },
+	{ NULL, PC87309_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
 	/* TODO: PM. */
-	{ &ops, PC87309_KBCM, PNP_IRQ0, },
-	{ &ops, PC87309_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x7f8, },
+	{ NULL, PC87309_KBCM, PNP_IRQ0, },
+	{ NULL, PC87309_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x7f8, },
 };
 
 static void enable_dev(struct device *dev)
 {
-	pnp_enable_devices(dev, &pnp_ops,
-		ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+	pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
 }
 
 struct chip_operations superio_nsc_pc87309_ops = {
diff --git a/src/superio/nsc/pc87360/superio.c b/src/superio/nsc/pc87360/superio.c
index 237023b..85ccdea 100644
--- a/src/superio/nsc/pc87360/superio.c
+++ b/src/superio/nsc/pc87360/superio.c
@@ -45,17 +45,18 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC87360_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
-	{ &ops, PC87360_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
-	{ &ops, PC87360_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1, 0x07f8, },
-	{ &ops, PC87360_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
-	{ &ops, PC87360_SWC,  PNP_IO0 | PNP_IRQ0, 0xfff0, },
-	{ &ops, PC87360_KBCM, PNP_IRQ0, },
-	{ &ops, PC87360_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x07f8, },
-	{ &ops, PC87360_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC87360_ACB,  PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC87360_FSCM, PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC87360_WDT,  PNP_IO0 | PNP_IRQ0, 0xfffc, },
+	{ NULL, PC87360_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
+	{ NULL, PC87360_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
+	{ NULL, PC87360_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+		0x07f8, },
+	{ NULL, PC87360_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
+	{ NULL, PC87360_SWC,  PNP_IO0 | PNP_IRQ0, 0xfff0, },
+	{ NULL, PC87360_KBCM, PNP_IRQ0, },
+	{ NULL, PC87360_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x07f8, },
+	{ NULL, PC87360_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC87360_ACB,  PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC87360_FSCM, PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC87360_WDT,  PNP_IO0 | PNP_IRQ0, 0xfffc, },
 };
 
 static void enable_dev(struct device *dev)
diff --git a/src/superio/nsc/pc87366/superio.c b/src/superio/nsc/pc87366/superio.c
index 8d5b291..6883e81 100644
--- a/src/superio/nsc/pc87366/superio.c
+++ b/src/superio/nsc/pc87366/superio.c
@@ -45,23 +45,23 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC87366_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
-	{ &ops, PC87366_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
-	{ &ops, PC87366_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1, 0x07f8, },
-	{ &ops, PC87366_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
-	{ &ops, PC87366_SWC,  PNP_IO0 | PNP_IRQ0, 0xfff0, },
-	{ &ops, PC87366_KBCM, PNP_IRQ0, },
-	{ &ops, PC87366_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x07f8, },
-	{ &ops, PC87366_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC87366_ACB,  PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC87366_FSCM, PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC87366_WDT,  PNP_IO0 | PNP_IRQ0, 0xfffc, },
+	{ NULL, PC87366_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
+	{ NULL, PC87366_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
+	{ NULL, PC87366_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+		0x07f8, },
+	{ NULL, PC87366_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
+	{ NULL, PC87366_SWC,  PNP_IO0 | PNP_IRQ0, 0xfff0, },
+	{ NULL, PC87366_KBCM, PNP_IRQ0, },
+	{ NULL, PC87366_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x07f8, },
+	{ NULL, PC87366_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC87366_ACB,  PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC87366_FSCM, PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC87366_WDT,  PNP_IO0 | PNP_IRQ0, 0xfffc, },
 };
 
 static void enable_dev(struct device *dev)
 {
-	pnp_enable_devices(dev, &pnp_ops,
-		ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+	pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
 }
 
 struct chip_operations superio_nsc_pc87366_ops = {
diff --git a/src/superio/nsc/pc87382/superio.c b/src/superio/nsc/pc87382/superio.c
index 7377c9e..8e0d61c 100644
--- a/src/superio/nsc/pc87382/superio.c
+++ b/src/superio/nsc/pc87382/superio.c
@@ -46,16 +46,16 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC87382_IR,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1, 0x07f8 },
-	{ &ops, PC87382_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
-	{ &ops, PC87382_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff0 },
-	{ &ops, PC87382_DOCK, PNP_IO0 | PNP_IRQ0, 0xfffe },
+	{ NULL, PC87382_IR,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+		0x07f8 },
+	{ NULL, PC87382_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
+	{ NULL, PC87382_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff0 },
+	{ NULL, PC87382_DOCK, PNP_IO0 | PNP_IRQ0, 0xfffe },
 };
 
 static void enable_dev(struct device *dev)
 {
-	pnp_enable_devices(dev, &pnp_ops,
-		ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+	pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
 }
 
 struct chip_operations superio_nsc_pc87382_ops = {
diff --git a/src/superio/nsc/pc87384/superio.c b/src/superio/nsc/pc87384/superio.c
index bd59a5b..a24e1b6 100644
--- a/src/superio/nsc/pc87384/superio.c
+++ b/src/superio/nsc/pc87384/superio.c
@@ -31,16 +31,15 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC87384_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8 },
-	{ &ops, PC87384_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
-	{ &ops, PC87384_SP2,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
-	{ &ops, PC87384_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff0 },
+	{ NULL, PC87384_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8 },
+	{ NULL, PC87384_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
+	{ NULL, PC87384_SP2,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
+	{ NULL, PC87384_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff0 },
 };
 
 static void enable_dev(struct device *dev)
 {
-	pnp_enable_devices(dev, &pnp_ops,
-		ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+	pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
 }
 
 struct chip_operations superio_nsc_pc87384_ops = {
diff --git a/src/superio/nsc/pc87392/superio.c b/src/superio/nsc/pc87392/superio.c
index e75e0a4..bf02e19 100644
--- a/src/superio/nsc/pc87392/superio.c
+++ b/src/superio/nsc/pc87392/superio.c
@@ -37,18 +37,18 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC87392_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa },
-	{ &ops, PC87392_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8 },
-	{ &ops, PC87392_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1, 0x07f8 },
-	{ &ops, PC87392_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
-	{ &ops, PC87392_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8 },
-	{ &ops, PC87392_WDT,  PNP_IO0 | PNP_IRQ0, 0xfffc },
+	{ NULL, PC87392_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa },
+	{ NULL, PC87392_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8 },
+	{ NULL, PC87392_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+		0x07f8 },
+	{ NULL, PC87392_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8 },
+	{ NULL, PC87392_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8 },
+	{ NULL, PC87392_WDT,  PNP_IO0 | PNP_IRQ0, 0xfffc },
 };
 
 static void enable_dev(struct device *dev)
 {
-	pnp_enable_devices(dev, &pnp_ops,
-		ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+	pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
 }
 
 struct chip_operations superio_nsc_pc87392_ops = {
diff --git a/src/superio/nsc/pc87417/superio.c b/src/superio/nsc/pc87417/superio.c
index 6f9dfe8..73b7655 100644
--- a/src/superio/nsc/pc87417/superio.c
+++ b/src/superio/nsc/pc87417/superio.c
@@ -46,22 +46,22 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC87417_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
-	{ &ops, PC87417_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
-	{ &ops, PC87417_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1, 0x07f8, },
-	{ &ops, PC87417_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
-	{ &ops, PC87417_SWC,  PNP_IO0 | PNP_IRQ0, 0xfff0, },
-	{ &ops, PC87417_KBCM, PNP_IRQ0, },
-	{ &ops, PC87417_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x07f8, },
-	{ &ops, PC87417_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC87417_XBUS, PNP_IO0 | PNP_IRQ0, 0xffe0, },
-	{ &ops, PC87417_RTC,  PNP_IO0 | PNP_IO1, 0xfffe, 0xfffe, },
+	{ NULL, PC87417_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
+	{ NULL, PC87417_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
+	{ NULL, PC87417_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+		0x07f8, },
+	{ NULL, PC87417_SP1,  PNP_IO0 | PNP_IRQ0, 0x07f8, },
+	{ NULL, PC87417_SWC,  PNP_IO0 | PNP_IRQ0, 0xfff0, },
+	{ NULL, PC87417_KBCM, PNP_IRQ0, },
+	{ NULL, PC87417_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x07f8, },
+	{ NULL, PC87417_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC87417_XBUS, PNP_IO0 | PNP_IRQ0, 0xffe0, },
+	{ NULL, PC87417_RTC,  PNP_IO0 | PNP_IO1, 0xfffe, 0xfffe, },
 };
 
 static void enable_dev(struct device *dev)
 {
-	pnp_enable_devices(dev, &pnp_ops,
-		ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
+	pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info);
 }
 
 struct chip_operations superio_nsc_pc87417_ops = {
diff --git a/src/superio/nsc/pc97317/superio.c b/src/superio/nsc/pc97317/superio.c
index e007ef7..c840ced 100644
--- a/src/superio/nsc/pc97317/superio.c
+++ b/src/superio/nsc/pc97317/superio.c
@@ -49,15 +49,16 @@
 };
 
 static struct pnp_info pnp_dev_info[] = {
-	{ &ops, PC97317_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x0ffb, 0x0ffb, },
-	{ &ops, PC97317_KBCM, PNP_IRQ0, },
-	{ &ops, PC97317_RTC,  PNP_IO0 | PNP_IRQ0, 0xfffe, },
-	{ &ops, PC97317_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0xfffa, },
-	{ &ops, PC97317_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x03fc, },
-	{ &ops, PC97317_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1, 0xfff8, },
-	{ &ops, PC97317_SP1,  PNP_IO0 | PNP_IRQ0, 0xfff8, },
-	{ &ops, PC97317_GPIO, PNP_IO0, 0xfff8, },
-	{ &ops, PC97317_PM,   PNP_IO0, 0xfffe, },
+	{ NULL, PC97317_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x0ffb, 0x0ffb, },
+	{ NULL, PC97317_KBCM, PNP_IRQ0, },
+	{ NULL, PC97317_RTC,  PNP_IO0 | PNP_IRQ0, 0xfffe, },
+	{ NULL, PC97317_FDC,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0xfffa, },
+	{ NULL, PC97317_PP,   PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x03fc, },
+	{ NULL, PC97317_SP2,  PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+		0xfff8, },
+	{ NULL, PC97317_SP1,  PNP_IO0 | PNP_IRQ0, 0xfff8, },
+	{ NULL, PC97317_GPIO, PNP_IO0, 0xfff8, },
+	{ NULL, PC97317_PM,   PNP_IO0, 0xfffe, },
 };
 
 static void enable_dev(struct device *dev)