pcw8256: sort out the floppy driver
authorAlan Cox <alan@linux.intel.com>
Wed, 20 May 2015 21:03:21 +0000 (22:03 +0100)
committerAlan Cox <alan@linux.intel.com>
Wed, 20 May 2015 21:03:21 +0000 (22:03 +0100)
Reading at least now works with these fixes and bodges. Lots more debug to
do.

Kernel/platform-pcw8256/devfd.c

index 1ac8991..30ab850 100644 (file)
@@ -65,8 +65,9 @@ static void motor_off(void)
  */
 static void fd_geom(int minor, blkno_t block)
 {
-    int ntrack = block / 9;
-    int nsector = (block % 9) + 1;
+    int ntrack = block >> 3;
+    int nsector = (block & 7) + 1;
+    fd765_cmdbuf[1] = 0;
     fd765_cmdbuf[2] = ntrack;
     fd765_rw_data[2] = ntrack;
     fd765_rw_data[3] = 0;              /* single sided for now */
@@ -78,10 +79,15 @@ static void fd_geom(int minor, blkno_t block)
     if (ntrack == track[minor])
         return;
     fd765_cmdbuf[0] = 0x0F;
+    fd765_intwait();
     fd765_cmd3();
 
     if (fd765_intwait() & 0x20)
-        track[minor] = fd765_statbuf[1] & 0x7F;
+        track[minor] = ntrack;//FIXMEfd765_statbuf[1] & 0x7F;
+    else {
+        track[minor] = 0xFF;
+        kputs("seekbad?\n");
+    }
 
 }