예제 #1
0
파일: power.c 프로젝트: maliyu/SOM2416
static int __devinit power_probe(struct of_device *op, const struct of_device_id *match)
{
	struct resource *res = &op->resource[0];
	unsigned int irq= op->irqs[0];

	power_reg = of_ioremap(res, 0, 0x4, "power");

	printk("%s: Control reg at %lx ... ",
	       op->node->name, res->start);

	poweroff_method = machine_halt;  /* able to use the standard halt */

	if (has_button_interrupt(irq, op->node)) {
		if (kernel_thread(powerd, NULL, CLONE_FS) < 0) {
			printk("Failed to start power daemon.\n");
			return 0;
		}
		printk("powerd running.\n");

		if (request_irq(irq,
				power_handler, 0, "power", NULL) < 0)
			printk("power: Error, cannot register IRQ handler.\n");
	} else {
		printk("not using powerd.\n");
	}

	return 0;
}
예제 #2
0
파일: power.c 프로젝트: 0-T-0/ps4-linux
static int power_probe(struct platform_device *op)
{
	struct resource *res = &op->resource[0];
	unsigned int irq = op->archdata.irqs[0];

	power_reg = of_ioremap(res, 0, 0x4, "power");

	printk(KERN_INFO "%s: Control reg at %llx\n",
	       op->dev.of_node->name, res->start);

	if (has_button_interrupt(irq, op->dev.of_node)) {
		if (request_irq(irq,
				power_handler, 0, "power", NULL) < 0)
			printk(KERN_ERR "power: Cannot setup IRQ handler.\n");
	}

	return 0;
}
예제 #3
0
파일: power.c 프로젝트: 274914765/C
static int __devinit power_probe(struct of_device *op, const struct of_device_id *match)
{
    struct resource *res = &op->resource[0];
    unsigned int irq= op->irqs[0];

    power_reg = of_ioremap(res, 0, 0x4, "power");

    printk(KERN_INFO "%s: Control reg at %lx\n",
           op->node->name, res->start);

    poweroff_method = machine_halt;  /* able to use the standard halt */

    if (has_button_interrupt(irq, op->node)) {
        if (request_irq(irq,
                power_handler, 0, "power", NULL) < 0)
            printk(KERN_ERR "power: Cannot setup IRQ handler.\n");
    }

    return 0;
}
예제 #4
0
void __init power_init(void)
{
	struct resource *res = NULL;
	unsigned int irq;
	int prom_node;
	static int invoked;

	if (invoked)
		return;
	invoked = 1;

	if (!power_probe_ebus(&res, &irq, &prom_node))
		goto found;

	if (!power_probe_isa(&res, &irq, &prom_node))
		goto found;

	return;

found:
	power_reg = ioremap(res->start, 0x4);
	printk("power: Control reg at %p ... ", power_reg);
	poweroff_method = machine_halt;  /* able to use the standard halt */
	if (has_button_interrupt(irq, prom_node)) {
		if (kernel_thread(powerd, NULL, CLONE_FS) < 0) {
			printk("Failed to start power daemon.\n");
			return;
		}
		printk("powerd running.\n");

		if (request_irq(irq,
				power_handler, SA_SHIRQ, "power", NULL) < 0)
			printk("power: Error, cannot register IRQ handler.\n");
	} else {
		printk("not using powerd.\n");
	}
}
예제 #5
0
파일: power.c 프로젝트: sarnobat/knoppix
void __init power_init(void)
{
	struct linux_ebus *ebus;
	struct linux_ebus_device *edev;
	static int invoked;

	if (invoked)
		return;
	invoked = 1;

	for_each_ebus(ebus) {
		for_each_ebusdev(edev, ebus) {
			if (!strcmp(edev->prom_name, "power"))
				goto found;
		}
	}
	return;

found:
	power_reg = (unsigned long)ioremap(edev->resource[0].start, 0x4);
	printk("power: Control reg at %016lx ... ", power_reg);
	poweroff_method = machine_halt;  /* able to use the standard halt */
	if (has_button_interrupt(edev)) {
		if (kernel_thread(powerd, 0, CLONE_FS) < 0) {
			printk("Failed to start power daemon.\n");
			return;
		}
		printk("powerd running.\n");

		if (request_irq(edev->irqs[0],
				power_handler, SA_SHIRQ, "power",
				(void *) power_reg) < 0)
			printk("power: Error, cannot register IRQ handler.\n");
	} else {
		printk("not using powerd.\n");
	}
}