コード例 #1
0
ファイル: xsysace.c プロジェクト: Aaroneke/galaxy-2636
static int __devinit
ace_of_probe(struct platform_device *op, const struct of_device_id *match)
{
	struct resource res;
	resource_size_t physaddr;
	const u32 *id;
	int irq, bus_width, rc;

	dev_dbg(&op->dev, "ace_of_probe(%p, %p)\n", op, match);

	/* device id */
	id = of_get_property(op->dev.of_node, "port-number", NULL);

	/* physaddr */
	rc = of_address_to_resource(op->dev.of_node, 0, &res);
	if (rc) {
		dev_err(&op->dev, "invalid address\n");
		return rc;
	}
	physaddr = res.start;

	/* irq */
	irq = irq_of_parse_and_map(op->dev.of_node, 0);

	/* bus width */
	bus_width = ACE_BUS_WIDTH_16;
	if (of_find_property(op->dev.of_node, "8-bit", NULL))
		bus_width = ACE_BUS_WIDTH_8;

	/* Call the bus-independant setup code */
	return ace_alloc(&op->dev, id ? *id : 0, physaddr, irq, bus_width);
}
コード例 #2
0
static int __devinit ace_probe(struct platform_device *dev)
{
    resource_size_t physaddr = 0;
    int bus_width = ACE_BUS_WIDTH_16; /* FIXME: should not be hard coded */
    u32 id = dev->id;
    int irq = 0;
    int i;

    dev_dbg(&dev->dev, "ace_probe(%p)\n", dev);

    /* device id and bus width */
    of_property_read_u32(dev->dev.of_node, "port-number", &id);
    if (id < 0)
        id = 0;
    if (of_find_property(dev->dev.of_node, "8-bit", NULL))
        bus_width = ACE_BUS_WIDTH_8;

    for (i = 0; i < dev->num_resources; i++) {
        if (dev->resource[i].flags & IORESOURCE_MEM)
            physaddr = dev->resource[i].start;
        if (dev->resource[i].flags & IORESOURCE_IRQ)
            irq = dev->resource[i].start;
    }

    /* Call the bus-independent setup code */
    return ace_alloc(&dev->dev, id, physaddr, irq, bus_width);
}
コード例 #3
0
ファイル: xsysace.c プロジェクト: Aaroneke/galaxy-2636
static int __devinit ace_probe(struct platform_device *dev)
{
	resource_size_t physaddr = 0;
	int bus_width = ACE_BUS_WIDTH_16; /* FIXME: should not be hard coded */
	int id = dev->id;
	int irq = NO_IRQ;
	int i;

	dev_dbg(&dev->dev, "ace_probe(%p)\n", dev);

	for (i = 0; i < dev->num_resources; i++) {
		if (dev->resource[i].flags & IORESOURCE_MEM)
			physaddr = dev->resource[i].start;
		if (dev->resource[i].flags & IORESOURCE_IRQ)
			irq = dev->resource[i].start;
	}

	/* Call the bus-independant setup code */
	return ace_alloc(&dev->dev, id, physaddr, irq, bus_width);
}
コード例 #4
0
static int __devinit ace_probe(struct platform_device *dev)
{
	resource_size_t physaddr = 0;
	int bus_width = ACE_BUS_WIDTH_16; 
	int id = dev->id;
	int irq = NO_IRQ;
	int i;

	dev_dbg(&dev->dev, "ace_probe(%p)\n", dev);

	for (i = 0; i < dev->num_resources; i++) {
		if (dev->resource[i].flags & IORESOURCE_MEM)
			physaddr = dev->resource[i].start;
		if (dev->resource[i].flags & IORESOURCE_IRQ)
			irq = dev->resource[i].start;
	}

	
	return ace_alloc(&dev->dev, id, physaddr, irq, bus_width);
}