ata-micron.c (09c817ba36db7c3a4ff5e25ac55816ca181a403d) ata-micron.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_micron_chipinit(device_t dev);
56static void ata_micron_setmode(device_t dev, int mode);
57
58
59/*
60 * Cenatek chipset support functions
61 */
62static int
63ata_micron_probe(device_t dev)
64{
65 struct ata_pci_controller *ctlr = device_get_softc(dev);
66
67 if (pci_get_devid(dev) == ATA_MICRON_RZ1000 ||
68 pci_get_devid(dev) == ATA_MICRON_RZ1001) {
69 device_set_desc(dev,
70 "RZ 100? ATA controller !WARNING! data loss/corruption risk");
54/*
55 * Cenatek chipset support functions
56 */
57static int
58ata_micron_probe(device_t dev)
59{
60 struct ata_pci_controller *ctlr = device_get_softc(dev);
61
62 if (pci_get_devid(dev) == ATA_MICRON_RZ1000 ||
63 pci_get_devid(dev) == ATA_MICRON_RZ1001) {
64 device_set_desc(dev,
65 "RZ 100? ATA controller !WARNING! data loss/corruption risk");
71 ctlr->chipinit = ata_micron_chipinit;
66 ctlr->chipinit = ata_generic_chipinit;
72 return (BUS_PROBE_DEFAULT);
73 }
67 return (BUS_PROBE_DEFAULT);
68 }
74 else
75 return ENXIO;
69 return (ENXIO);
76}
77
70}
71
78static int
79ata_micron_chipinit(device_t dev)
80{
81 struct ata_pci_controller *ctlr = device_get_softc(dev);
82
83 if (ata_setup_interrupt(dev, ata_generic_intr))
84 return ENXIO;
85
86 ctlr->setmode = ata_micron_setmode;
87 return 0;
88}
89
90static void
91ata_micron_setmode(device_t dev, int mode)
92{
93 struct ata_device *atadev = device_get_softc(dev);
94
95 mode = ata_limit_mode(dev, mode, ATA_UDMA2);
96 mode = ata_check_80pin(dev, mode);
97 if (!ata_controlcmd(dev, ATA_SETFEATURES, ATA_SF_SETXFER, 0, mode))
98 atadev->mode = mode;
99}
100
101ATA_DECLARE_DRIVER(ata_micron);
72ATA_DECLARE_DRIVER(ata_micron);