I try to write a device tree about irq : IT_controller: [EMAIL PROTECTED] { clock-frequency = <0>; interrupt-controller; #address-cells = <0>; reg = <0x20006000 0x100>; compatible = "it"; device_type = "it"; big-endian; };
[EMAIL PROTECTED] device_type="uart"; compatible="uart"; interrupts = <0x18 0>; interrupt-parent=<&IT_controller>; }; uart_irq=of_find_node_by_type(NULL, "uart"); if(uart_irq==NULL) printk("%s: No uart node found !\n", __func__); virt=irq_of_parse_and_map(uart_irq, 0); printk("Virtual irq : %d \n",virt); When I boot linux, virt=0; What is wrong ? 2008/9/4, Sébastien Chrétien <[EMAIL PROTECTED]>: > > I read the booting_without_of.txt document and the Interrupt Mapping > docucument from http://playground.sun.com/1275. But I don't understand all > parameters. Can somebody help me to create my device tree about interrupt > part ? > > I have an interrupt controller at the adresse 0x20006000. The irq_id range > is 1 to 63. > I would like to try UART interrupt, which have ids : 0x18 (tranmission fifo > empty, > 0x19 (reception fifo full), 0x1a (reception error), 0x1b (break emission). > What other informations are needed ? > > > Nothing is cascaded. > > Thanks > > > > > 2008/9/4, Benjamin Herrenschmidt <[EMAIL PROTECTED]>: >> >> On Wed, 2008-09-03 at 23:02 +0200, Sébastien Chrétien wrote: >> >> > irq_of_parse_and_map is equivalent to ioremap in the MMU case ? >> >> >> On the powerpc architecture, we use virtualized IRQ numbers in order to >> deal with the wide range of interrupt controllers around and multiple >> of them cascaded. >> >> The base function to "map" a physical interrupt to a virtual interrupt >> is irq_create_mapping(). It takes an irq_host argument which represent >> the IRQ "domain" (typically irq controller) off which the interrupt you >> are trying to map hangs. >> >> If you pass NULL, it will use the "default" controller, which doesn't >> always exist, it depends on the platform. Usually, platforms set that >> to the toplevel PIC. >> >> However, normally, that function shouldn't be used directly. Instead, >> you should create a representation of your device in the device-tree >> along with the appropriate interrupt mapping, and then use the >> irq_of_parse_and_map() function to obtain a mapped virtual irq based >> on the device-tree information. This will take care of finding the >> right irq_host but will also properly setup the polarity of the >> interrupt etc... >> >> Now, as to how you should represent the interrupt in the device-tree, >> this should be explained in Documentation/booting-without-of.txt >> >> Cheers, >> Ben. >> >> >
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev