Changeset 5d684e4 in mainline for kernel


Ignore:
Timestamp:
2006-09-23T13:12:10Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6ff1f1e
Parents:
28ecadb
Message:

Convert sparc64 framebuffer code to configure from the OpenFirmware device tree memory representation.

Location:
kernel
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/Makefile.inc

    r28ecadb r5d684e4  
    9696        arch/$(ARCH)/src/ddi/ddi.c \
    9797        arch/$(ARCH)/src/drivers/tick.c \
    98         arch/$(ARCH)/src/drivers/kbd.c
     98        arch/$(ARCH)/src/drivers/kbd.c \
     99        arch/$(ARCH)/src/drivers/scr.c
    99100
    100101ifeq ($(CONFIG_TSB),y)
  • kernel/arch/sparc64/include/boot/boot.h

    r28ecadb r5d684e4  
    7272
    7373typedef struct {
    74         uintptr_t addr;
    75         uint32_t width;
    76         uint32_t height;
    77         uint32_t bpp;
    78         uint32_t scanline;
    79 } screen_t;
    80 
    81 typedef struct {
    8274        uint32_t clock_frequency;
    8375} processor_t;
     
    9082        taskmap_t taskmap;
    9183        memmap_t memmap;
    92         screen_t screen;
    9384        processor_t processor;
    9485        ballocs_t ballocs;
  • kernel/arch/sparc64/src/console.c

    r28ecadb r5d684e4  
    3636#include <arch/types.h>
    3737#include <typedefs.h>
    38 #include <genarch/fb/fb.h>
    39 #include <arch/drivers/fb.h>
    4038
     39#include <arch/drivers/scr.h>
    4140#include <arch/drivers/kbd.h>
     41
    4242#ifdef CONFIG_Z8530
    4343#include <genarch/kbd/z8530.h>
     
    5353#include <proc/thread.h>
    5454#include <arch/mm/tlb.h>
    55 #include <arch/boot/boot.h>
    5655#include <genarch/ofw/ofw_tree.h>
    5756#include <arch.h>
     
    8483                panic("Can't find %s\n", prop->value);
    8584
    86         fb_init(bootinfo.screen.addr, bootinfo.screen.width, bootinfo.screen.height,
    87                 bootinfo.screen.bpp, bootinfo.screen.scanline, true);
    88        
     85        scr_init(screen);
     86
    8987        prop = ofw_tree_getprop(aliases, "keyboard");
    9088        if (!prop)
  • kernel/genarch/include/ofw/ofw_tree.h

    r28ecadb r5d684e4  
    134134extern bool ofw_ffb_apply_ranges(ofw_tree_node_t *node, ofw_ffb_reg_t *reg, uintptr_t *pa);
    135135
     136extern bool ofw_pci_reg_absolutize(ofw_tree_node_t *node, ofw_pci_reg_t *reg, ofw_pci_reg_t *out);
     137
    136138#endif
  • kernel/genarch/src/ofw/pci.c

    r28ecadb r5d684e4  
    4242#include <macros.h>
    4343
    44 #define PCI_SPACE_MASK  0x03000000
     44#define PCI_SPACE_MASK          0x03000000
     45#define PCI_ABS_MASK            0x80000000     
     46#define PCI_REG_MASK            0x000000ff
    4547
    4648bool ofw_pci_apply_ranges(ofw_tree_node_t *node, ofw_pci_reg_t *reg, uintptr_t *pa)
     
    7476}
    7577
     78bool ofw_pci_reg_absolutize(ofw_tree_node_t *node, ofw_pci_reg_t *reg, ofw_pci_reg_t *out)
     79{
     80        if (reg->space & PCI_ABS_MASK) {
     81                /* already absolute */
     82                out->space = reg->space;
     83                out->addr = reg->addr;
     84                out->size = reg->size;
     85                return true;
     86        }
     87       
     88        ofw_tree_property_t *prop;
     89        ofw_pci_reg_t *assigned_address;
     90        count_t assigned_addresses;
     91       
     92        prop = ofw_tree_getprop(node, "assigned-addresses");
     93        if (!prop)
     94                panic("Can't find \"assigned-addresses\" property.\n");
     95       
     96        assigned_addresses = prop->size / sizeof(ofw_pci_reg_t);
     97        assigned_address = prop->value;
     98       
     99        int i;
     100       
     101        for (i = 0; i < assigned_addresses; i++) {
     102                if ((assigned_address[i].space & PCI_REG_MASK) == (reg->space & PCI_REG_MASK)) {
     103                        out->space = assigned_address[i].space;
     104                        out->addr = reg->addr + assigned_address[i].addr;
     105                        out->size = reg->size;
     106                        return true;
     107                }
     108        }
     109       
     110        return false;
     111}
     112
    76113/** @}
    77114 */
Note: See TracChangeset for help on using the changeset viewer.