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);