Changeset 9b35499 in mainline


Ignore:
Timestamp:
2007-09-05T20:01:36Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c785296
Parents:
267ab56
Message:

Experimental support for the cgsix framebuffer, which is found on old Ultra 1
worksations, and the SBUS bus and devices. Not tested.

Location:
kernel
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/include/drivers/scr.h

    r267ab56 r9b35499  
    4242        SCR_UNKNOWN,
    4343        SCR_ATYFB,
    44         SCR_FFB
     44        SCR_FFB,
     45        SCR_CGSIX
    4546} scr_type_t;
    4647
  • kernel/arch/sparc64/src/drivers/scr.c

    r267ab56 r9b35499  
    6464        else if (strcmp(name, "SUNW,ffb") == 0)
    6565                scr_type = SCR_FFB;
     66        else if (strcmp(name, "cgsix") == 0)
     67                scr_type = SCR_CGSIX;
    6668       
    6769        if (scr_type == SCR_UNKNOWN) {
     
    152154
    153155                break;
     156        case SCR_CGSIX:
     157                switch (fb_depth) {
     158                case 8:
     159                        fb_scanline = fb_linebytes;
     160                        visual = VISUAL_INDIRECT_8;
     161                        break;
     162                default:
     163                        printf("Not implemented.\n");
     164                        return;
     165                }
     166               
     167                ofw_sbus_reg_t *cg6_reg = &((ofw_sbus_reg_t *) prop->value)[0];
     168                if (!ofw_sbus_apply_ranges(node->parent, cg6_reg, &fb_addr)) {
     169                        printf("Failed to determine screen address.\n");
     170                        return;
     171                }
     172       
     173                break;
    154174        default:
    155175                panic("Unexpected type.\n");
  • kernel/genarch/Makefile.inc

    r267ab56 r9b35499  
    100100                genarch/src/ofw/fhc.c \
    101101                genarch/src/ofw/pci.c  \
     102                genarch/src/ofw/sbus.c \
    102103                genarch/src/ofw/upa.c
    103104endif
  • kernel/genarch/include/ofw/ofw_tree.h

    r267ab56 r9b35499  
    141141typedef struct ofw_pci_range ofw_pci_range_t;
    142142
     143struct ofw_sbus_reg {
     144        uint64_t addr;
     145        uint32_t size;
     146} __attribute__ ((packed));
     147typedef struct ofw_sbus_reg ofw_sbus_reg_t;
     148
     149struct ofw_sbus_range {
     150        uint64_t child_base;
     151        uint64_t parent_base;
     152        uint32_t size;
     153} __attribute__ ((packed));
     154typedef struct ofw_sbus_range ofw_sbus_range_t;
     155
    143156struct ofw_upa_reg {
    144157        uint64_t addr;
     
    161174extern bool ofw_ebus_apply_ranges(ofw_tree_node_t *node, ofw_ebus_reg_t *reg, uintptr_t *pa);
    162175extern bool ofw_pci_apply_ranges(ofw_tree_node_t *node, ofw_pci_reg_t *reg, uintptr_t *pa);
     176extern bool ofw_sbus_apply_ranges(ofw_tree_node_t *node, ofw_sbus_reg_t *reg, uintptr_t *pa);
    163177extern bool ofw_upa_apply_ranges(ofw_tree_node_t *node, ofw_upa_reg_t *reg, uintptr_t *pa);
    164178
Note: See TracChangeset for help on using the changeset viewer.