[OpenBIOS] r410 - openbios-devel/drivers
svn at openbios.org
svn at openbios.org
Thu Jan 15 03:18:58 CET 2009
Author: laurent
Date: 2009-01-15 03:18:58 +0100 (Thu, 15 Jan 2009)
New Revision: 410
Modified:
openbios-devel/drivers/ide.c
Log:
ide: improve ide aliases management
Modified: openbios-devel/drivers/ide.c
===================================================================
--- openbios-devel/drivers/ide.c 2009-01-15 02:17:00 UTC (rev 409)
+++ openbios-devel/drivers/ide.c 2009-01-15 02:18:58 UTC (rev 410)
@@ -1310,20 +1310,51 @@
{ "decode-unit", ob_ide_ctrl_decodeunit },
};
+static void set_cd_alias(const char *path)
+{
+ phandle_t aliases;
+
+ aliases = find_dev("/aliases");
+
+ if (get_property(aliases, "cd", NULL))
+ return;
+
+ set_property(aliases, "cd", path, strlen(path) + 1);
+ set_property(aliases, "cdrom", path, strlen(path) + 1);
+}
+
+static void set_hd_alias(const char *path)
+{
+ phandle_t aliases;
+
+ aliases = find_dev("/aliases");
+
+ if (get_property(aliases, "hd", NULL))
+ return;
+
+ set_property(aliases, "hd", path, strlen(path) + 1);
+ set_property(aliases, "disk", path, strlen(path) + 1);
+}
+
+static void set_ide_alias(const char *path)
+{
+ phandle_t aliases;
+ static int ide_counter = 0;
+ char idestr[8];
+
+ aliases = find_dev("/aliases");
+
+ snprintf(idestr, sizeof(idestr), "ide%d", ide_counter++);
+ set_property(aliases, idestr, path, strlen(path) + 1);
+}
+
int ob_ide_init(const char *path, uint32_t io_port0, uint32_t ctl_port0,
uint32_t io_port1, uint32_t ctl_port1)
{
int i, j;
char nodebuff[128];
- phandle_t dnode, aliases;
- int hd_found, cd_found;
- static int ide_counter = 0;
- char idestr[8];
+ phandle_t dnode;
- aliases = find_dev("/aliases");
- hd_found = 0;
- cd_found = 0;
-
io_ports[0] = io_port0;
ctl_ports[0] = ctl_port0 + 2;
io_ports[1] = io_port1;
@@ -1415,25 +1446,11 @@
/* create aliases */
- snprintf(idestr, sizeof(idestr),
- "ide%d", ide_counter++);
- set_property(aliases, idestr,
- nodebuff, strlen(nodebuff) + 1);
-
- if (drive->media == ide_media_cdrom && !cd_found) {
- cd_found = 1;
- set_property(aliases, "cd",
- nodebuff, strlen(nodebuff) + 1);
- set_property(aliases, "cdrom",
- nodebuff, strlen(nodebuff) + 1);
- }
- if (drive->media == ide_media_disk && !hd_found) {
- hd_found = 1;
- set_property(aliases, "hd",
- nodebuff, strlen(nodebuff) + 1);
- set_property(aliases, "disk",
- nodebuff, strlen(nodebuff) + 1);
- }
+ set_ide_alias(nodebuff);
+ if (drive->media == ide_media_cdrom)
+ set_cd_alias(nodebuff);
+ if (drive->media == ide_media_disk)
+ set_hd_alias(nodebuff);
}
}
More information about the OpenBIOS
mailing list