Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cff75f1f authored by Finn Thain's avatar Finn Thain Committed by Geert Uytterhoeven
Browse files

mac68k: move mac_esp platform device



Move platform device code from the driver to the platform init function.

Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
parent 80614e5a
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -911,6 +911,16 @@ static struct platform_device swim_pdev = {
	.resource	= &swim_rsrc,
};

static struct platform_device esp_0_pdev = {
	.name		= "mac_esp",
	.id		= 0,
};

static struct platform_device esp_1_pdev = {
	.name		= "mac_esp",
	.id		= 1,
};

int __init mac_platform_init(void)
{
	u8 *swim_base;
@@ -944,6 +954,23 @@ int __init mac_platform_init(void)
		platform_device_register(&swim_pdev);
	}

	/*
	 * SCSI device(s)
	 */

	switch (macintosh_config->scsi_type) {
	case MAC_SCSI_QUADRA:
	case MAC_SCSI_QUADRA3:
		platform_device_register(&esp_0_pdev);
		break;
	case MAC_SCSI_QUADRA2:
		platform_device_register(&esp_0_pdev);
		if ((macintosh_config->ident == MAC_MODEL_Q900) ||
		    (macintosh_config->ident == MAC_MODEL_Q950))
			platform_device_register(&esp_1_pdev);
		break;
	}

	return 0;
}

+5 −52
Original line number Diff line number Diff line
@@ -52,7 +52,6 @@ struct mac_esp_priv {
	void __iomem *pdma_io;
	int error;
};
static struct platform_device *internal_pdev, *external_pdev;
static struct esp *esp_chips[2];

#define MAC_ESP_GET_PRIV(esp) ((struct mac_esp_priv *) \
@@ -495,29 +494,12 @@ static int __devinit esp_mac_probe(struct platform_device *dev)
	struct Scsi_Host *host;
	struct esp *esp;
	int err;
	int chips_present;
	struct mac_esp_priv *mep;

	if (!MACH_IS_MAC)
		return -ENODEV;

	switch (macintosh_config->scsi_type) {
	case MAC_SCSI_QUADRA:
	case MAC_SCSI_QUADRA3:
		chips_present = 1;
		break;
	case MAC_SCSI_QUADRA2:
		if ((macintosh_config->ident == MAC_MODEL_Q900) ||
		    (macintosh_config->ident == MAC_MODEL_Q950))
			chips_present = 2;
		else
			chips_present = 1;
		break;
	default:
		chips_present = 0;
	}

	if (dev->id + 1 > chips_present)
	if (dev->id > 1)
		return -ENODEV;

	host = scsi_host_alloc(tpnt, sizeof(struct esp));
@@ -643,54 +625,25 @@ static struct platform_driver esp_mac_driver = {
	.remove   = __devexit_p(esp_mac_remove),
	.driver   = {
		.name	= DRV_MODULE_NAME,
		.owner	= THIS_MODULE,
	},
};

static int __init mac_esp_init(void)
{
	int err;

	err = platform_driver_register(&esp_mac_driver);
	if (err)
		return err;

	internal_pdev = platform_device_alloc(DRV_MODULE_NAME, 0);
	if (internal_pdev && platform_device_add(internal_pdev)) {
		platform_device_put(internal_pdev);
		internal_pdev = NULL;
	}
	external_pdev = platform_device_alloc(DRV_MODULE_NAME, 1);
	if (external_pdev && platform_device_add(external_pdev)) {
		platform_device_put(external_pdev);
		external_pdev = NULL;
	}

	if (internal_pdev || external_pdev) {
		return 0;
	} else {
		platform_driver_unregister(&esp_mac_driver);
		return -ENOMEM;
	}
	return platform_driver_register(&esp_mac_driver);
}

static void __exit mac_esp_exit(void)
{
	platform_driver_unregister(&esp_mac_driver);

	if (internal_pdev) {
		platform_device_unregister(internal_pdev);
		internal_pdev = NULL;
	}
	if (external_pdev) {
		platform_device_unregister(external_pdev);
		external_pdev = NULL;
	}
}

MODULE_DESCRIPTION("Mac ESP SCSI driver");
MODULE_AUTHOR("Finn Thain <fthain@telegraphics.com.au>");
MODULE_LICENSE("GPL v2");
MODULE_VERSION(DRV_VERSION);
MODULE_ALIAS("platform:" DRV_MODULE_NAME);

module_init(mac_esp_init);
module_exit(mac_esp_exit);