platform_get_resource()
in der __init
Funktion eines Treibers verwendet, um Informationen über die Struktur der Geräteressource zu erhalten, wie Startadresse und Zieladresse, um das zu finden, Ressourcenspeichergröße, sodass Sie sie im Speicher abbilden können.
die Deklaration von platform_get_resource
Funktion ist die folgende
struct resource * platform_get_resource ( struct platform_device * dev,
unsigned int type,
unsigned int num);
Der erste Parameter der Funktion weist in welches Gerät wir daran interessiert sind, so können sie die Informationen extrahieren wir brauchen.
Der zweite Parameter hängt davon ab, welche Art von Ressource Sie behandeln. Wenn es Speicher ist (oder irgendetwas, das als Speicher abgebildet werden kann :-)), dann ist es IORESOURCE_MEM. Sie können alle Makros in include/linux/ioport.h
für den letzten Parameter sehen, http://lwn.net/Articles/448499/ sagt:
Der letzte Parameter sagt, welche Ressource dieses Typs gewünscht wird, mit Null dem ersten angibt. So könnte beispielsweise ein Fahrer seine zweite MMIO Region mit:
r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
Der Rückgabewert ist ein Zeiger auf einen Typ struct resource
var. Hier
ist ein Beispiel
unsigned long *base_addr; /* Virtual Base Address */
struct resource *res; /* Device Resource Structure */
unsigned long remap_size; /* Device Memory Size */
static int __devinit bram_io_probe(struct platform_device *pdev)
{
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); // get resource info
remap_size = res->end - res->start + 1; // get resource memory size
base_addr = ioremap(res->start, remap_size); // map it
}