aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/mg_disk.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-04-28 00:06:16 -0400
committerJens Axboe <jens.axboe@oracle.com>2009-04-28 02:14:52 -0400
commit8a11a789c39cd6f61de4243234cf44a46c23ffd0 (patch)
treeec88d32cffdf40bf13c3f83ad4220e4205666e3f /drivers/block/mg_disk.c
parenta03bb5a32fff4aa23f081a3cff7e98d4084104cd (diff)
mg_disk: fix dependency on libata
Add local copies of ata_id_string() and ata_id_c_string() to mg_disk so there is no need for the driver to depend on ATA and SCSI. [ Impact: break dependency on libata by copying ata id string functions ] Cc: unsik Kim <donari75@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/block/mg_disk.c')
-rw-r--r--drivers/block/mg_disk.c44
1 files changed, 40 insertions, 4 deletions
diff --git a/drivers/block/mg_disk.c b/drivers/block/mg_disk.c
index 1a4cc968cfee..8e53cae9fa90 100644
--- a/drivers/block/mg_disk.c
+++ b/drivers/block/mg_disk.c
@@ -17,7 +17,7 @@
17#include <linux/fs.h> 17#include <linux/fs.h>
18#include <linux/blkdev.h> 18#include <linux/blkdev.h>
19#include <linux/hdreg.h> 19#include <linux/hdreg.h>
20#include <linux/libata.h> 20#include <linux/ata.h>
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22#include <linux/delay.h> 22#include <linux/delay.h>
23#include <linux/platform_device.h> 23#include <linux/platform_device.h>
@@ -357,6 +357,42 @@ static irqreturn_t mg_irq(int irq, void *dev_id)
357 return IRQ_HANDLED; 357 return IRQ_HANDLED;
358} 358}
359 359
360/* local copy of ata_id_string() */
361static void mg_id_string(const u16 *id, unsigned char *s,
362 unsigned int ofs, unsigned int len)
363{
364 unsigned int c;
365
366 BUG_ON(len & 1);
367
368 while (len > 0) {
369 c = id[ofs] >> 8;
370 *s = c;
371 s++;
372
373 c = id[ofs] & 0xff;
374 *s = c;
375 s++;
376
377 ofs++;
378 len -= 2;
379 }
380}
381
382/* local copy of ata_id_c_string() */
383static void mg_id_c_string(const u16 *id, unsigned char *s,
384 unsigned int ofs, unsigned int len)
385{
386 unsigned char *p;
387
388 mg_id_string(id, s, ofs, len - 1);
389
390 p = s + strnlen(s, len - 1);
391 while (p > s && p[-1] == ' ')
392 p--;
393 *p = '\0';
394}
395
360static int mg_get_disk_id(struct mg_host *host) 396static int mg_get_disk_id(struct mg_host *host)
361{ 397{
362 u32 i; 398 u32 i;
@@ -403,9 +439,9 @@ static int mg_get_disk_id(struct mg_host *host)
403 host->n_sectors -= host->nres_sectors; 439 host->n_sectors -= host->nres_sectors;
404 } 440 }
405 441
406 ata_id_c_string(id, fwrev, ATA_ID_FW_REV, sizeof(fwrev)); 442 mg_id_c_string(id, fwrev, ATA_ID_FW_REV, sizeof(fwrev));
407 ata_id_c_string(id, model, ATA_ID_PROD, sizeof(model)); 443 mg_id_c_string(id, model, ATA_ID_PROD, sizeof(model));
408 ata_id_c_string(id, serial, ATA_ID_SERNO, sizeof(serial)); 444 mg_id_c_string(id, serial, ATA_ID_SERNO, sizeof(serial));
409 printk(KERN_INFO "mg_disk: model: %s\n", model); 445 printk(KERN_INFO "mg_disk: model: %s\n", model);
410 printk(KERN_INFO "mg_disk: firm: %.8s\n", fwrev); 446 printk(KERN_INFO "mg_disk: firm: %.8s\n", fwrev);
411 printk(KERN_INFO "mg_disk: serial: %s\n", serial); 447 printk(KERN_INFO "mg_disk: serial: %s\n", serial);