static int __init shark_init(void) { int ret; if (machine_is_shark()) ret = platform_device_register(&serial_device); return ret; }
static int __init shark_pci_init(void) { if (!machine_is_shark()) return; pcibios_min_io = 0x6000; pcibios_min_mem = 0x50000000; vga_base = 0xe8000000; pci_common_init(&shark_pci); return 0; }
static int __init shark_init(void) { int ret; if (machine_is_shark()) { ret = platform_device_register(&rtc_device); if (ret) printk(KERN_ERR "Unable to register RTC device: %d\n", ret); ret = platform_device_register(&serial_device); if (ret) printk(KERN_ERR "Unable to register Serial device: %d\n", ret); } return 0; }
static int __init shark_leds_init(void) { int i; u16 reg; if (!machine_is_shark()) return -ENODEV; for (i = 0; i < ARRAY_SIZE(shark_leds); i++) { struct shark_led *led; led = kzalloc(sizeof(*led), GFP_KERNEL); if (!led) break; led->cdev.name = shark_leds[i].name; led->cdev.brightness_set = shark_led_set; led->cdev.brightness_get = shark_led_get; led->cdev.default_trigger = shark_leds[i].trigger; /* Count in 5 bits offset */ led->mask = BIT(i + 5); if (led_classdev_register(NULL, &led->cdev) < 0) { kfree(led); break; } } /* Make LEDs independent of power-state */ request_region(0x24, 4, "led_reg"); reg = led_reg_read(); reg |= 1 << 10; led_reg_write(reg); return 0; }
static int __init shark_pci_init(void) { if (machine_is_shark()) pci_common_init(&shark_pci); return 0; }
static void __init build_tag_list(struct param_struct *params, void *taglist) { struct tag *tag = taglist; if (params->u1.s.page_size != PAGE_SIZE) { printk(KERN_WARNING "Warning: bad configuration page, " "trying to continue\n"); return; } printk(KERN_DEBUG "Converting old-style param struct to taglist\n"); tag->hdr.tag = ATAG_CORE; tag->hdr.size = tag_size(tag_core); tag->u.core.flags = params->u1.s.flags & FLAG_READONLY; tag->u.core.pagesize = params->u1.s.page_size; tag->u.core.rootdev = params->u1.s.rootdev; tag = tag_next(tag); tag->hdr.tag = ATAG_RAMDISK; tag->hdr.size = tag_size(tag_ramdisk); tag->u.ramdisk.flags = (params->u1.s.flags & FLAG_RDLOAD ? 1 : 0) | (params->u1.s.flags & FLAG_RDPROMPT ? 2 : 0); tag->u.ramdisk.size = params->u1.s.ramdisk_size; tag->u.ramdisk.start = params->u1.s.rd_start; tag = tag_next(tag); tag->hdr.tag = ATAG_INITRD; tag->hdr.size = tag_size(tag_initrd); tag->u.initrd.start = params->u1.s.initrd_start; tag->u.initrd.size = params->u1.s.initrd_size; tag = tag_next(tag); tag->hdr.tag = ATAG_SERIAL; tag->hdr.size = tag_size(tag_serialnr); tag->u.serialnr.low = params->u1.s.system_serial_low; tag->u.serialnr.high = params->u1.s.system_serial_high; tag = tag_next(tag); tag->hdr.tag = ATAG_REVISION; tag->hdr.size = tag_size(tag_revision); tag->u.revision.rev = params->u1.s.system_rev; #ifdef CONFIG_ARCH_ACORN if (machine_is_riscpc()) { int i; for (i = 0; i < 4; i++) tag = memtag(tag, PHYS_OFFSET + (i << 26), params->u1.s.pages_in_bank[i] * PAGE_SIZE); } else #endif if (machine_is_shark()) { int i; for (i = 0; i < 4; i++) { unsigned int val = params->u1.s.pages_in_bank[i]; if (!val) continue; tag = memtag(tag, val & 0xffff0000, (val & 0xffff) * PAGE_SIZE); } } else tag = memtag(tag, PHYS_OFFSET, params->u1.s.nr_pages * PAGE_SIZE); #ifdef CONFIG_FOOTBRIDGE if (params->u1.s.mem_fclk_21285) { tag = tag_next(tag); tag->hdr.tag = ATAG_MEMCLK; tag->hdr.size = tag_size(tag_memclk); tag->u.memclk.fmemclk = params->u1.s.mem_fclk_21285; } #endif #ifdef CONFIG_ARCH_ACORN tag = tag_next(tag); tag->hdr.tag = ATAG_ACORN; tag->hdr.size = tag_size(tag_acorn); tag->u.acorn.memc_control_reg = params->u1.s.memc_control_reg; tag->u.acorn.vram_pages = params->u1.s.pages_in_vram; tag->u.acorn.sounddefault = params->u1.s.sounddefault; tag->u.acorn.adfsdrives = params->u1.s.adfsdrives; #endif tag = tag_next(tag); tag->hdr.tag = ATAG_CMDLINE; tag->hdr.size = (strlen(params->commandline) + 3 + sizeof(struct tag_header)) >> 2; strcpy(tag->u.cmdline.cmdline, params->commandline); tag = tag_next(tag); tag->hdr.tag = ATAG_NONE; tag->hdr.size = 0; memmove(params, taglist, ((int)tag) - ((int)taglist) + sizeof(struct tag_header)); }