Changeset 5d684e4 in mainline
- Timestamp:
- 2006-09-23T13:12:10Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6ff1f1e
- Parents:
- 28ecadb
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
boot/arch/sparc64/loader/main.c
r28ecadb r5d684e4 58 58 } 59 59 60 if (!ofw_screen(&bootinfo.screen)) {61 printf("Error: unable to get screen properties, halting.\n");62 halt();63 }64 bootinfo.screen.addr = ofw_translate(bootinfo.screen.addr);65 /* transform scanline to bytes with respect to potential alignment */66 bootinfo.screen.scanline = bootinfo.screen.scanline*bpp2align[bootinfo.screen.bpp >> 3];67 68 60 if (!ofw_cpu(&bootinfo.cpu)) 69 61 printf("Error: unable to get cpu properties\n"); 70 62 71 printf("\nDevice statistics\n");63 printf("\nDevice info\n"); 72 64 printf(" cpu: %dMHz\n", bootinfo.cpu.clock_frequency/1000000); 73 65 printf(" memory: %dM\n", bootinfo.memmap.total>>20); 74 printf(" screen at %P, resolution %dx%d, %d bpp (scanline %d bytes)\n", (uintptr_t) bootinfo.screen.addr, bootinfo.screen.width, bootinfo.screen.height, bootinfo.screen.bpp, bootinfo.screen.scanline);75 66 76 67 printf("\nMemory statistics\n"); -
boot/arch/sparc64/loader/main.h
r28ecadb r5d684e4 54 54 taskmap_t taskmap; 55 55 memmap_t memmap; 56 screen_t screen;57 56 cpu_t cpu; 58 57 ballocs_t ballocs; -
boot/arch/sparc64/loader/ofwarch.c
r28ecadb r5d684e4 38 38 #include "main.h" 39 39 40 int bpp2align[] = {41 [0] = 0, /** Invalid bpp. */42 [1] = 1, /** 8bpp is not aligned. */43 [2] = 2, /** 16bpp is naturally aligned. */44 [3] = 4, /** 24bpp is aligned on 4 byte boundary. */45 [4] = 4, /** 32bpp is naturally aligned. */46 };47 48 40 void write(const char *str, const int len) 49 41 { … … 60 52 { 61 53 return flag != -1; 62 }63 64 int ofw_keyboard(keyboard_t *keyboard)65 {66 char device_name[BUF_SIZE];67 uint32_t virtaddr;68 69 if (ofw_get_property(ofw_aliases, "keyboard", device_name, sizeof(device_name)) <= 0)70 return false;71 72 phandle device = ofw_find_device(device_name);73 if (device == -1)74 return false;75 76 if (ofw_get_property(device, "address", &virtaddr, sizeof(virtaddr)) <= 0)77 return false;78 79 if (!(keyboard->addr = ofw_translate((void *) ((uintptr_t) virtaddr))))80 return false;81 82 return true;83 54 } 84 55 -
kernel/arch/sparc64/Makefile.inc
r28ecadb r5d684e4 96 96 arch/$(ARCH)/src/ddi/ddi.c \ 97 97 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 99 100 100 101 ifeq ($(CONFIG_TSB),y) -
kernel/arch/sparc64/include/boot/boot.h
r28ecadb r5d684e4 72 72 73 73 typedef 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 {82 74 uint32_t clock_frequency; 83 75 } processor_t; … … 90 82 taskmap_t taskmap; 91 83 memmap_t memmap; 92 screen_t screen;93 84 processor_t processor; 94 85 ballocs_t ballocs; -
kernel/arch/sparc64/src/console.c
r28ecadb r5d684e4 36 36 #include <arch/types.h> 37 37 #include <typedefs.h> 38 #include <genarch/fb/fb.h>39 #include <arch/drivers/fb.h>40 38 39 #include <arch/drivers/scr.h> 41 40 #include <arch/drivers/kbd.h> 41 42 42 #ifdef CONFIG_Z8530 43 43 #include <genarch/kbd/z8530.h> … … 53 53 #include <proc/thread.h> 54 54 #include <arch/mm/tlb.h> 55 #include <arch/boot/boot.h>56 55 #include <genarch/ofw/ofw_tree.h> 57 56 #include <arch.h> … … 84 83 panic("Can't find %s\n", prop->value); 85 84 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 89 87 prop = ofw_tree_getprop(aliases, "keyboard"); 90 88 if (!prop) -
kernel/genarch/include/ofw/ofw_tree.h
r28ecadb r5d684e4 134 134 extern bool ofw_ffb_apply_ranges(ofw_tree_node_t *node, ofw_ffb_reg_t *reg, uintptr_t *pa); 135 135 136 extern bool ofw_pci_reg_absolutize(ofw_tree_node_t *node, ofw_pci_reg_t *reg, ofw_pci_reg_t *out); 137 136 138 #endif -
kernel/genarch/src/ofw/pci.c
r28ecadb r5d684e4 42 42 #include <macros.h> 43 43 44 #define PCI_SPACE_MASK 0x03000000 44 #define PCI_SPACE_MASK 0x03000000 45 #define PCI_ABS_MASK 0x80000000 46 #define PCI_REG_MASK 0x000000ff 45 47 46 48 bool ofw_pci_apply_ranges(ofw_tree_node_t *node, ofw_pci_reg_t *reg, uintptr_t *pa) … … 74 76 } 75 77 78 bool 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 76 113 /** @} 77 114 */
Note:
See TracChangeset
for help on using the changeset viewer.