Ignore:
Timestamp:
2006-10-02T21:07:23Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
233af8c5
Parents:
36db5ac
Message:

Extend the OFW device tree node with a void pointer. The boot loader is
supposed to reset all pointers in all nodes. The kernel uses the pointer
to recognize that a particular device has already been visited and initialized.

Read interrupt mapping from the OFW device tree for FHC devices (z8530) and
EBUS devices (ns16550). In case of FHC devices, remove hardwired values from
the code and use only values read from the tree. FHC initialization is started
when a FHC device wants to map its interrupt. In case of EBUS devices, map
the interrupt to INO. Interrupt enabling in the interrupt controller for that
specific interrupt is not implemented yet.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/include/ofw/ofw_tree.h

    r36db5ac r0b414b5  
    5050        unsigned properties;                    /**< Number of properties. */
    5151        ofw_tree_property_t *property;
     52       
     53        /**
     54         * Pointer to a structure representing respective device.
     55         * Its semantics is device dependent.
     56         */
     57        void *device;
    5258};
    5359
     
    105111typedef struct ofw_ebus_range ofw_ebus_range_t;
    106112
     113struct ofw_ebus_intr_map {
     114        uint32_t space;
     115        uint32_t addr;
     116        uint32_t intr;
     117        uint32_t controller_handle;
     118        uint32_t controller_ino;
     119} __attribute__ ((packed));
     120typedef struct ofw_ebus_intr_map ofw_ebus_intr_map_t;
     121
     122struct ofw_ebus_intr_mask {
     123        uint32_t space_mask;
     124        uint32_t addr_mask;
     125        uint32_t intr_mask;
     126} __attribute__ ((packed));
     127typedef struct ofw_ebus_intr_mask ofw_ebus_intr_mask_t;
     128
    107129struct ofw_pci_reg {
    108         uint32_t space;                 /* needs to masked to obtain pure space id */
     130        uint32_t space;                 /* needs to be masked to obtain pure space id */
    109131        uint64_t addr;                  /* group phys.mid and phys.lo together */
    110132        uint64_t size;
     
    144166extern bool ofw_pci_reg_absolutize(ofw_tree_node_t *node, ofw_pci_reg_t *reg, ofw_pci_reg_t *out);
    145167
     168extern bool ofw_fhc_map_interrupts(ofw_tree_node_t *node, ofw_fhc_reg_t *reg, uint32_t interrupt, int *ino);
     169extern bool ofw_ebus_map_interrupts(ofw_tree_node_t *node, ofw_ebus_reg_t *reg, uint32_t interrupt, int *ino);
     170
    146171#endif
Note: See TracChangeset for help on using the changeset viewer.