Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/scsi/pcmcia/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  fdomain_cs.c   Sprache: C

 
// SPDX-License-Identifier: (GPL-2.0 OR MPL-1.1)
/*
 * Driver for Future Domain-compatible PCMCIA SCSI cards
 * Copyright 2019 Ondrej Zary
 *
 * The initial developer of the original code is David A. Hinds
 * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
 * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
 */


#include <linux/module.h>
#include <linux/init.h>
#include <scsi/scsi_host.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/ds.h>
#include "fdomain.h"

MODULE_AUTHOR("Ondrej Zary, David Hinds");
MODULE_DESCRIPTION("Future Domain PCMCIA SCSI driver");
MODULE_LICENSE("Dual MPL/GPL");

static int fdomain_config_check(struct pcmcia_device *p_dev, void *priv_data)
{
 p_dev->io_lines = 10;
 p_dev->resource[0]->end = FDOMAIN_REGION_SIZE;
 p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
 p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO;
 return pcmcia_request_io(p_dev);
}

static int fdomain_probe(struct pcmcia_device *link)
{
 int ret;
 struct Scsi_Host *sh;

 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
 link->config_regs = PRESENT_OPTION;

 ret = pcmcia_loop_config(link, fdomain_config_check, NULL);
 if (ret)
  return ret;

 ret = pcmcia_enable_device(link);
 if (ret)
  goto fail_disable;

 if (!request_region(link->resource[0]->start, FDOMAIN_REGION_SIZE,
       "fdomain_cs")) {
  ret = -EBUSY;
  goto fail_disable;
 }

 sh = fdomain_create(link->resource[0]->start, link->irq, 7, &link->dev);
 if (!sh) {
  dev_err(&link->dev, "Controller initialization failed");
  ret = -ENODEV;
  goto fail_release;
 }

 link->priv = sh;

 return 0;

fail_release:
 release_region(link->resource[0]->start, FDOMAIN_REGION_SIZE);
fail_disable:
 pcmcia_disable_device(link);
 return ret;
}

static void fdomain_remove(struct pcmcia_device *link)
{
 fdomain_destroy(link->priv);
 release_region(link->resource[0]->start, FDOMAIN_REGION_SIZE);
 pcmcia_disable_device(link);
}

static const struct pcmcia_device_id fdomain_ids[] = {
 PCMCIA_DEVICE_PROD_ID12("IBM Corp.""SCSI PCMCIA Card", 0xe3736c88,
    0x859cad20),
 PCMCIA_DEVICE_PROD_ID1("SCSI PCMCIA Adapter Card", 0x8dacb57e),
 PCMCIA_DEVICE_PROD_ID12(" SIMPLE TECHNOLOGY Corporation",
    "SCSI PCMCIA Credit Card Controller",
    0x182bdafe, 0xc80d106f),
 PCMCIA_DEVICE_NULL,
};
MODULE_DEVICE_TABLE(pcmcia, fdomain_ids);

static struct pcmcia_driver fdomain_cs_driver = {
 .owner  = THIS_MODULE,
 .name  = "fdomain_cs",
 .probe  = fdomain_probe,
 .remove  = fdomain_remove,
 .id_table       = fdomain_ids,
};

module_pcmcia_driver(fdomain_cs_driver);

Messung V0.5
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.