ata-cenatek.c (10b3b54548f2290bbe8d8f88c59c28d12b7a635d) | ata-cenatek.c (066f913a94b134b6d5e32b6af88f297c7da9c031) |
---|---|
1/*- 2 * Copyright (c) 1998 - 2008 S�ren Schmidt <sos@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 37 unchanged lines hidden (view full) --- 46#include <machine/bus.h> 47#include <sys/rman.h> 48#include <dev/pci/pcivar.h> 49#include <dev/pci/pcireg.h> 50#include <dev/ata/ata-all.h> 51#include <dev/ata/ata-pci.h> 52#include <ata_if.h> 53 | 1/*- 2 * Copyright (c) 1998 - 2008 S�ren Schmidt <sos@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 37 unchanged lines hidden (view full) --- 46#include <machine/bus.h> 47#include <sys/rman.h> 48#include <dev/pci/pcivar.h> 49#include <dev/pci/pcireg.h> 50#include <dev/ata/ata-all.h> 51#include <dev/ata/ata-pci.h> 52#include <ata_if.h> 53 |
54/* local prototypes */ 55static int ata_cenatek_chipinit(device_t dev); 56static void ata_cenatek_setmode(device_t dev, int mode); 57 58 | |
59/* 60 * Cenatek chipset support functions 61 */ 62static int 63ata_cenatek_probe(device_t dev) 64{ 65 struct ata_pci_controller *ctlr = device_get_softc(dev); 66 67 if (pci_get_devid(dev) != ATA_CENATEK_ROCKET) 68 return ENXIO; 69 | 54/* 55 * Cenatek chipset support functions 56 */ 57static int 58ata_cenatek_probe(device_t dev) 59{ 60 struct ata_pci_controller *ctlr = device_get_softc(dev); 61 62 if (pci_get_devid(dev) != ATA_CENATEK_ROCKET) 63 return ENXIO; 64 |
70 ctlr->chipinit = ata_cenatek_chipinit; | 65 ctlr->chipinit = ata_generic_chipinit; |
71 device_set_desc(dev, "Cenatek Rocket Drive controller"); 72 return (BUS_PROBE_DEFAULT); 73} 74 | 66 device_set_desc(dev, "Cenatek Rocket Drive controller"); 67 return (BUS_PROBE_DEFAULT); 68} 69 |
75static int 76ata_cenatek_chipinit(device_t dev) 77{ 78 struct ata_pci_controller *ctlr = device_get_softc(dev); 79 80 if (ata_setup_interrupt(dev, ata_generic_intr)) 81 return ENXIO; 82 83 ctlr->setmode = ata_cenatek_setmode; 84 return 0; 85} 86 87static void 88ata_cenatek_setmode(device_t dev, int mode) 89{ 90 struct ata_device *atadev = device_get_softc(dev); 91 92 mode = ata_limit_mode(dev, mode, ATA_UDMA2); 93 mode = ata_check_80pin(dev, mode); 94 if (!ata_controlcmd(dev, ATA_SETFEATURES, ATA_SF_SETXFER, 0, mode)) 95 atadev->mode = mode; 96} 97 | |
98ATA_DECLARE_DRIVER(ata_cenatek); | 70ATA_DECLARE_DRIVER(ata_cenatek); |