Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  fixups-dreamcast.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * arch/sh/drivers/pci/fixups-dreamcast.c
 *
 * PCI fixups for the Sega Dreamcast
 *
 * Copyright (C) 2001, 2002  M. R. Brown
 * Copyright (C) 2002, 2003, 2006  Paul Mundt
 *
 * This file originally bore the message (with enclosed-$):
 * Id: pci.c,v 1.3 2003/05/04 19:29:46 lethal Exp
 * Dreamcast PCI: Supports SEGA Broadband Adaptor only.
 */


#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/irq.h>
#include <linux/pci.h>
#include <linux/dma-map-ops.h>

#include <asm/io.h>
#include <asm/irq.h>
#include <mach/pci.h>

static void gapspci_fixup_resources(struct pci_dev *dev)
{
 struct pci_channel *p = dev->sysdata;
 struct resource res;
 struct pci_bus_region region;

 printk(KERN_NOTICE "PCI: Fixing up device %s\n", pci_name(dev));

 switch (dev->device) {
 case PCI_DEVICE_ID_SEGA_BBA:
  /*
 * We also assume that dev->devfn == 0
 */

  dev->resource[1].start = p->resources[0].start  + 0x100;
  dev->resource[1].end = dev->resource[1].start + 0x200 - 1;

  /*
 * This is not a normal BAR, prevent any attempts to move
 * the BAR, as this will result in a bus lock.
 */

  dev->resource[1].flags |= IORESOURCE_PCI_FIXED;

  /*
 * Redirect dma memory allocations to special memory window.
 *
 * If this GAPSPCI region were mapped by a BAR, the CPU
 * phys_addr_t would be pci_resource_start(), and the bus
 * address would be pci_bus_address(pci_resource_start()).
 * But apparently there's no BAR mapping it, so we just
 * "know" its CPU address is GAPSPCI_DMA_BASE.
 */

  res.start = GAPSPCI_DMA_BASE;
  res.end = GAPSPCI_DMA_BASE + GAPSPCI_DMA_SIZE - 1;
  res.flags = IORESOURCE_MEM;
  pcibios_resource_to_bus(dev->bus, ®ion, &res);
  BUG_ON(dma_declare_coherent_memory(&dev->dev,
      res.start,
      region.start,
      resource_size(&res)));
  break;
 default:
  printk("PCI: Failed resource fixup\n");
 }
}
DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, gapspci_fixup_resources);

int pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
 /*
 * The interrupt routing semantics here are quite trivial.
 *
 * We basically only support one interrupt, so we only bother
 * updating a device's interrupt line with this single shared
 * interrupt. Keeps routing quite simple, doesn't it?
 */

 return GAPSPCI_IRQ;
}

Messung V0.5
C=95 H=99 G=96

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge