summaryrefslogtreecommitdiff
path: root/sys/arch/socppc/stand/boot/machdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/socppc/stand/boot/machdep.c')
-rw-r--r--sys/arch/socppc/stand/boot/machdep.c155
1 files changed, 0 insertions, 155 deletions
diff --git a/sys/arch/socppc/stand/boot/machdep.c b/sys/arch/socppc/stand/boot/machdep.c
deleted file mode 100644
index 71980f8a73c..00000000000
--- a/sys/arch/socppc/stand/boot/machdep.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/* $OpenBSD: machdep.c,v 1.7 2016/10/09 11:25:40 tom Exp $ */
-
-/*
- * Copyright (c) 2008 Mark Kettenis
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/types.h>
-
-#include "libsa.h"
-#include "wdvar.h"
-#include "fdt.h"
-
-/*
- * RouterBOOT firmware puts its FDT at an address that is low enough
- * to conflict with bsd.rd. So we need to relocate the FDT. As long
- * as we have at least 32MB of memory, the 16MB boundary should be
- * fine, and leave us plenty of room for future kernel growth.
- */
-#define FDTADDRSTART 0x01000000
-
-#define RPR 0xe0000918
-#define RPR_RSTE 0x52535445
-#define RCR 0xe000091c
-#define RCR_SWSR 0x00000001
-#define RCR_SWHR 0x00000002
-
-/* defines from pciide.c and wdc_obio.c */
-int pciide_init (struct wdc_channel*, u_int);
-int wdc_obio_init (struct wdc_channel*, u_int);
-
-void
-machdep(void)
-{
- void *node;
- char *tmp;
- int len;
-
- extern int consfreq;
- extern uint8_t *consaddr;
-
- /* set default values */
- consfreq = NS16550_FREQ;
- consaddr = (uint8_t *)CONADDR;
-
- /* lookup FTD for informations about console */
- node = fdt_find_node("/chosen");
- if (node) {
- char *console;
- fdt_node_property(node, "linux,stdout-path", &console);
- node = fdt_find_node(console);
- if (node) {
- len = fdt_node_property(node, "clock-frequency", &tmp);
- if (len == 4)
- consfreq = *(int *)tmp;
-
- len = fdt_node_property(node, "reg", &tmp);
- if (len == 8)
- consaddr = (uint8_t *)*(int *)tmp;
- }
- if (node = fdt_parent_node(node)) {
- fdt_node_property(node, "device_type", &tmp);
- if (strncmp(tmp, "soc", 3) == 0) {
- /* we are on a soc */
- len = fdt_node_property(node, "reg", &tmp);
- if (len == 8)
- consaddr += *(int *)tmp;
- }
- }
- }
-
- cninit();
-{
- extern int (*controller_init)(struct wdc_channel *chp, u_int chan);
- extern u_int32_t pciide_base_addr;
- extern u_int32_t wdc_base_addr[];
- int *addr;
- int chnum;
-
- /* Thecus defaults */
- controller_init = pciide_init;
- pciide_base_addr = 0xe2000000;
-
- /* lookup the FDT, may have some CF there */
- chnum = 0;
- wdc_base_addr[0] = 0;
- wdc_base_addr[1] = 0;
- node = fdt_find_node("/");
- for (node = fdt_child_node(node); node; node = fdt_next_node(node)) {
- len = fdt_node_property(node, "device_type", &tmp);
- if (len && (strcmp(tmp, "rb,cf") == 0) && (chnum < 2)) {
- len = fdt_node_property(node, "reg", (char **)&addr);
- if (len == 8) {
- wdc_base_addr[chnum] = *addr;
- chnum++;
- }
- }
- }
- if (chnum)
- controller_init = wdc_obio_init;
-}
-
-}
-
-int
-main(void)
-{
- extern char __bss_start[], _end[];
- extern int fdtaddrsave;
-
- bzero(__bss_start, _end - __bss_start);
-
- /* initialize FDT if the blob is available */
- if (fdtaddrsave) {
- if (fdt_init((void *)fdtaddrsave) == 0)
- fdtaddrsave = 0; /* no usable blob there */
- }
-
- /* relocate FDT */
- if (fdtaddrsave && fdtaddrsave < FDTADDRSTART) {
- struct fdt_head *fh = (void *)fdtaddrsave;
-
- bcopy((void *)fdtaddrsave, (void *)FDTADDRSTART, fh->fh_size);
- fdtaddrsave = FDTADDRSTART;
- }
-
- boot(0);
- return 0;
-}
-
-void
-_rtt(void)
-{
- uint32_t v;
-
- *((volatile uint32_t *)(RPR)) = RPR_RSTE;
- __asm volatile("eieio");
- *((volatile uint32_t *)(RCR)) = RCR_SWHR;
-
- printf("RESET FAILED\n");
- for (;;)
- continue;
- /* NOTREACHED */
-}