|
@@ -19,6 +19,7 @@
|
|
|
|
|
|
#include <asm/debug.h>
|
|
#include <asm/debug.h>
|
|
#include <asm/uaccess.h>
|
|
#include <asm/uaccess.h>
|
|
|
|
+#include <asm/ipl.h>
|
|
|
|
|
|
/* This is ugly... */
|
|
/* This is ugly... */
|
|
#define PRINTK_HEADER "dasd_devmap:"
|
|
#define PRINTK_HEADER "dasd_devmap:"
|
|
@@ -133,6 +134,8 @@ dasd_call_setup(char *str)
|
|
__setup ("dasd=", dasd_call_setup);
|
|
__setup ("dasd=", dasd_call_setup);
|
|
#endif /* #ifndef MODULE */
|
|
#endif /* #ifndef MODULE */
|
|
|
|
|
|
|
|
+#define DASD_IPLDEV "ipldev"
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Read a device busid/devno from a string.
|
|
* Read a device busid/devno from a string.
|
|
*/
|
|
*/
|
|
@@ -141,6 +144,20 @@ dasd_busid(char **str, int *id0, int *id1, int *devno)
|
|
{
|
|
{
|
|
int val, old_style;
|
|
int val, old_style;
|
|
|
|
|
|
|
|
+ /* Interpret ipldev busid */
|
|
|
|
+ if (strncmp(DASD_IPLDEV, *str, strlen(DASD_IPLDEV)) == 0) {
|
|
|
|
+ if (ipl_info.type != IPL_TYPE_CCW) {
|
|
|
|
+ MESSAGE(KERN_ERR, "%s", "ipl device is not a ccw "
|
|
|
|
+ "device");
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ }
|
|
|
|
+ *id0 = 0;
|
|
|
|
+ *id1 = ipl_info.data.ccw.dev_id.ssid;
|
|
|
|
+ *devno = ipl_info.data.ccw.dev_id.devno;
|
|
|
|
+ *str += strlen(DASD_IPLDEV);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
/* check for leading '0x' */
|
|
/* check for leading '0x' */
|
|
old_style = 0;
|
|
old_style = 0;
|
|
if ((*str)[0] == '0' && (*str)[1] == 'x') {
|
|
if ((*str)[0] == '0' && (*str)[1] == 'x') {
|