On Wednesday 13 May 2009 10:56:00 Kazuaki Ichinohe wrote: > This patch adds a SATA harddisk driver for the canyonlands. > This patch is kernel driver's porting. > This pach corresponded to not cmd_scsi but cmd_sata. > > [environment variable, boot script] > setenv bootargs root=/dev/sda7 rw > setenv bootargs ${bootargs} console=ttyS0,115200 > ext2load sata 0:2 0x400000 /canyonlands/uImage > ext2load sata 0:2 0x800000 /canyonlands/canyonlands.dtb > fdt addr 0x800000 0x4000 > bootm 0x400000 - 0x800000 > > If you drive SATA-2 disk on Canyonlands, you must change parts from > PI2PCIE212 to PI2PCIE2212 on U25. We confirmed to boot by using following > disk. > > 1.Vender: Fujitsu Type: MHW2040BS > 2.Vender: Fujitsu Type: MHW2060BK > 3.Vendor: HAGIWARA SYS-COM:HFD25S-032GT > 4.Vender: WesternDigital Type: WD3200BJKT (CONFIG_LBA48 required) > 5.Vender: WesternDigital Type: WD3200BEVT (CONFIG_LBA48 required) > 6.Vender: hitachi Type: HTS543232L9A300 (CONFIG_LBA48 required) > 7.Vender: Seagate Type: ST31000333AS (CONFIG_LBA48 required) > 8.Vender: Transcend Type: TS32GSSD25S-M > 9.Vender: MTRON Type: MSD-SATA1525-016 > > Signed-off-by: Kazuaki Ichinohe <kazuichi at fsi.co.jp>
This finally looks good. :) Some comments below. > +++ u-boot-sata/drivers/block/sata_dwc.c 2009-05-07 09:37:53.000000000 > +0900 @@ -0,0 +1,2110 @@ > +/* > + * sata_dwc.c <snip> > + if ((nsect == 0x55) && (lbal == 0xaa)) { > + printf("we found a device\n"); printf("Device found\n"); > + } else { > + printf("Not found a device.\n"); printf("No device found\n"); > + dev_state = SATA_NODEVICE; > + return FALSE; > + } > + > + tmp = ATA_DEVICE_OBS; > + writeb(tmp,ioaddr->device_addr); Add a space after the ",". > + writeb(ap->ctl,ioaddr->ctl_addr); Here again... > + > + udelay(200); > + > + writeb(ap->ctl | ATA_SRST, ioaddr->ctl_addr); > + > + udelay(200); > + writeb(ap->ctl,ioaddr->ctl_addr); And here again. I won't mention this again. Please check the whole source for such missing spaces. <snip> > +int scan_sata (int dev) Please remove the space before "(". Use a consistent coding style in this file. So check for other occurrences too. > +{ > + int i; > + int rc; > + u8 status; > + const u16 *id; > + struct ata_device *ata_dev = &ata_device; > + unsigned long pio_mask, mwdma_mask, udma_mask; > + unsigned long xfer_mask; > + char revbuf[7]; > + u16 iobuf[ATA_SECTOR_WORDS]; > + > + memset ( iobuf, 0, sizeof(iobuf)); memset(iobuf, 0, sizeof(iobuf)); > + > + if (dev_state == SATA_NODEVICE) > + return 1; > + > + printf("waitng for device ready."); printf("Waiting for device..."); There are two places where "waiting" is misspelled. Please fix both. Thanks. Best regards, Stefan ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot