hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/ata/pata_falcon.c
....@@ -33,7 +33,6 @@
3333 #define DRV_NAME "pata_falcon"
3434 #define DRV_VERSION "0.1.0"
3535
36
-#define ATA_HD_BASE 0xfff00000
3736 #define ATA_HD_CONTROL 0x39
3837
3938 static struct scsi_host_template pata_falcon_sht = {
....@@ -120,24 +119,22 @@
120119 .set_mode = pata_falcon_set_mode,
121120 };
122121
123
-static int pata_falcon_init_one(void)
122
+static int __init pata_falcon_init_one(struct platform_device *pdev)
124123 {
124
+ struct resource *res;
125125 struct ata_host *host;
126126 struct ata_port *ap;
127
- struct platform_device *pdev;
128127 void __iomem *base;
129128
130
- if (!MACH_IS_ATARI || !ATARIHW_PRESENT(IDE))
129
+ dev_info(&pdev->dev, "Atari Falcon PATA controller\n");
130
+
131
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
132
+ if (!res)
131133 return -ENODEV;
132134
133
- pr_info(DRV_NAME ": Atari Falcon PATA controller\n");
134
-
135
- pdev = platform_device_register_simple(DRV_NAME, 0, NULL, 0);
136
- if (IS_ERR(pdev))
137
- return PTR_ERR(pdev);
138
-
139
- if (!devm_request_mem_region(&pdev->dev, ATA_HD_BASE, 0x40, DRV_NAME)) {
140
- pr_err(DRV_NAME ": resources busy\n");
135
+ if (!devm_request_mem_region(&pdev->dev, res->start,
136
+ resource_size(res), DRV_NAME)) {
137
+ dev_err(&pdev->dev, "resources busy\n");
141138 return -EBUSY;
142139 }
143140
....@@ -152,7 +149,7 @@
152149 ap->flags |= ATA_FLAG_SLAVE_POSS | ATA_FLAG_NO_IORDY;
153150 ap->flags |= ATA_FLAG_PIO_POLLING;
154151
155
- base = (void __iomem *)ATA_HD_BASE;
152
+ base = (void __iomem *)res->start;
156153 ap->ioaddr.data_addr = base;
157154 ap->ioaddr.error_addr = base + 1 + 1 * 4;
158155 ap->ioaddr.feature_addr = base + 1 + 1 * 4;
....@@ -174,9 +171,26 @@
174171 return ata_host_activate(host, 0, NULL, 0, &pata_falcon_sht);
175172 }
176173
177
-module_init(pata_falcon_init_one);
174
+static int __exit pata_falcon_remove_one(struct platform_device *pdev)
175
+{
176
+ struct ata_host *host = platform_get_drvdata(pdev);
177
+
178
+ ata_host_detach(host);
179
+
180
+ return 0;
181
+}
182
+
183
+static struct platform_driver pata_falcon_driver = {
184
+ .remove = __exit_p(pata_falcon_remove_one),
185
+ .driver = {
186
+ .name = "atari-falcon-ide",
187
+ },
188
+};
189
+
190
+module_platform_driver_probe(pata_falcon_driver, pata_falcon_init_one);
178191
179192 MODULE_AUTHOR("Bartlomiej Zolnierkiewicz");
180193 MODULE_DESCRIPTION("low-level driver for Atari Falcon PATA");
181194 MODULE_LICENSE("GPL v2");
195
+MODULE_ALIAS("platform:atari-falcon-ide");
182196 MODULE_VERSION(DRV_VERSION);