xref: /freebsd/sys/contrib/device-tree/Bindings/interrupt-controller/intel,ce4100-lapic.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
18bab661aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28bab661aSEmmanuel Vadot%YAML 1.2
38bab661aSEmmanuel Vadot---
4*fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/intel,ce4100-lapic.yaml#
5*fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68bab661aSEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: Intel Local Advanced Programmable Interrupt Controller (LAPIC)
88bab661aSEmmanuel Vadot
98bab661aSEmmanuel Vadotmaintainers:
108bab661aSEmmanuel Vadot  - Rahul Tanwar <rtanwar@maxlinear.com>
118bab661aSEmmanuel Vadot
128bab661aSEmmanuel Vadotdescription: |
138bab661aSEmmanuel Vadot  Intel's Advanced Programmable Interrupt Controller (APIC) is a
148bab661aSEmmanuel Vadot  family of interrupt controllers. The APIC is a split
158bab661aSEmmanuel Vadot  architecture design, with a local component (LAPIC) integrated
168bab661aSEmmanuel Vadot  into the processor itself and an external I/O APIC. Local APIC
178bab661aSEmmanuel Vadot  (lapic) receives interrupts from the processor's interrupt pins,
188bab661aSEmmanuel Vadot  from internal sources and from an external I/O APIC (ioapic).
198bab661aSEmmanuel Vadot  And it sends these to the processor core for handling.
208bab661aSEmmanuel Vadot  See [1] Chapter 8 for more details.
218bab661aSEmmanuel Vadot
228bab661aSEmmanuel Vadot  Many of the Intel's generic devices like hpet, ioapic, lapic have
238bab661aSEmmanuel Vadot  the ce4100 name in their compatible property names because they
248bab661aSEmmanuel Vadot  first appeared in CE4100 SoC.
258bab661aSEmmanuel Vadot
268bab661aSEmmanuel Vadot  This schema defines bindings for local APIC interrupt controller.
278bab661aSEmmanuel Vadot
288bab661aSEmmanuel Vadot  [1] https://pdos.csail.mit.edu/6.828/2008/readings/ia32/IA32-3A.pdf
298bab661aSEmmanuel Vadot
308bab661aSEmmanuel Vadotproperties:
318bab661aSEmmanuel Vadot  compatible:
328bab661aSEmmanuel Vadot    const: intel,ce4100-lapic
338bab661aSEmmanuel Vadot
348bab661aSEmmanuel Vadot  reg:
358bab661aSEmmanuel Vadot    maxItems: 1
368bab661aSEmmanuel Vadot
378bab661aSEmmanuel Vadot  interrupt-controller: true
388bab661aSEmmanuel Vadot
398bab661aSEmmanuel Vadot  '#interrupt-cells':
408bab661aSEmmanuel Vadot    const: 2
418bab661aSEmmanuel Vadot
428bab661aSEmmanuel Vadot  intel,virtual-wire-mode:
438bab661aSEmmanuel Vadot    description: Intel defines a few possible interrupt delivery
448bab661aSEmmanuel Vadot      modes. With respect to boot/init time, mainly two interrupt
458bab661aSEmmanuel Vadot      delivery modes are possible.
468bab661aSEmmanuel Vadot      PIC Mode - Legacy external 8259 compliant PIC interrupt controller.
478bab661aSEmmanuel Vadot      Virtual Wire Mode - use lapic as virtual wire interrupt delivery mode.
488bab661aSEmmanuel Vadot      For ACPI or MPS spec compliant systems, it is figured out by some read
498bab661aSEmmanuel Vadot      only bit field/s available in their respective defined data structures.
508bab661aSEmmanuel Vadot      For OF based systems, it is by default set to PIC mode.
518bab661aSEmmanuel Vadot      But if this optional boolean property is set, then the interrupt delivery
528bab661aSEmmanuel Vadot      mode is configured to virtual wire compatibility mode.
538bab661aSEmmanuel Vadot    type: boolean
548bab661aSEmmanuel Vadot
558bab661aSEmmanuel Vadotrequired:
568bab661aSEmmanuel Vadot  - compatible
578bab661aSEmmanuel Vadot  - reg
588bab661aSEmmanuel Vadot  - interrupt-controller
598bab661aSEmmanuel Vadot  - '#interrupt-cells'
608bab661aSEmmanuel Vadot
618bab661aSEmmanuel VadotadditionalProperties: false
628bab661aSEmmanuel Vadot
638bab661aSEmmanuel Vadotexamples:
648bab661aSEmmanuel Vadot  - |
658bab661aSEmmanuel Vadot    lapic0: interrupt-controller@fee00000 {
668bab661aSEmmanuel Vadot        compatible = "intel,ce4100-lapic";
678bab661aSEmmanuel Vadot        reg = <0xfee00000 0x1000>;
688bab661aSEmmanuel Vadot        interrupt-controller;
698bab661aSEmmanuel Vadot        #interrupt-cells = <2>;
708bab661aSEmmanuel Vadot        intel,virtual-wire-mode;
718bab661aSEmmanuel Vadot    };
72