hello_world: Use new headers and frequency from syscon

This uses the new header files for register definitions and
extracts the core frequency from syscon rather than hard coding it.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
jtag-port
Benjamin Herrenschmidt 5 years ago
parent 12e8b0952d
commit c5f5f50738

@ -1,23 +1,11 @@
000000004800012c
0000000000000000
4800002408000048 4800002408000048
01006b69a600607d 01006b69a600607d
a602487d05009f42 a602487d05009f42
a64b5a7d14004a39 a64b5a7d14004a39
2402004ca64b7b7d 2402004ca64b7b7d
3c20000048000004 00000000480000f4
782107c660210000
60212f0064210000
618c00003d800000
658c0000798c07c6
7d8903a6618c113c
480000004e800421
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000 0000000000000000
0000000000000000 0000000000000000
0000000000000000 0000000000000000
@ -42,6 +30,18 @@ a64b5a7d14004a39
0000000000000000 0000000000000000
0000000000000000 0000000000000000
0000000000000000 0000000000000000
4800002408000048
01006b69a600607d
a602487d05009f42
a64b5a7d14004a39
2402004ca64b7b7d
3c20000048000004
782107c660210000
60211f0064210000
618c00003d800000
658c0000798c07c6
7d8903a6618c1014
480000004e800421
0000000000000000 0000000000000000
0000000000000000 0000000000000000
0000000000000000 0000000000000000
@ -513,52 +513,74 @@ a64b5a7d14004a39
e8010010ebc1fff0 e8010010ebc1fff0
7c0803a6ebe1fff8 7c0803a6ebe1fff8
3c4000014e800020 3c4000014e800020
7c0802a63842a000
3fe2fffffbe1fff8
f80100103bff7240
48000051f821ffd1
7fe3fb7860000000
60000000480001d5
7fe3fb787c641b78
600000004800017d
60000000480000ed
480001295463063e
4bffffec60000000
0100000000000000
3c40000100000180
3d20c0003842a000 3d20c0003842a000
6129200060000000 6129200060000000
f922800079290020 f922800079290020
394000353d20c000 612900203d20c000
7929002061292018 7c0004ac79290020
4e800020f9490000 3d40001c7d204eea
7d295392614a2000
394a0018e9428000
7c0004ac3929ffff
4e8000207d2057ea
0000000000000000 0000000000000000
3c40000100000000 3c40000100000000
600000003842a000 600000003842a000
390a0010e9428000 394000ffe9228000
71290001e9280000 7c0004ac39290020
e86a00084082fff8 4e8000207d404fea
0000000000000000
3c40000100000000
600000003842a000
39400000e9228000
7c0004ac39290020
4e8000207d404fea
0000000000000000
3c40000100000000
600000003842a000
39290010e9228000
7d204eea7c0004ac
4082ffe871290001
38630008e8628000
7c601eea7c0004ac
4e8000205463063e 4e8000205463063e
0000000000000000 0000000000000000
3c40000100000000 3c40000100000000
600000003842a000 600000003842a000
390a0010e9428000 39290010e9228000
71290008e9280000 7d204eea7c0004ac
f86a00004082fff8 4082ffe871290008
000000004e800020 7c0004ace9228000
0000000000000000 4e8000207c604fea
3842a0003c400001
fbc1fff07c0802a6
7fc32214fbe1fff8
f80100107c7f1b78
7fbff040f821ffd1
38210030409e000c
887f00004bffff10
4bffff993bff0001
000000004bffffe4
0000028001000000
7d4348ae39200000
409e000c2f8a0000
4e8000207d234b78
4bffffe839290001
0000000000000000 0000000000000000
3c40000100000000 3c40000100000000
7c0802a63842a000 7c0802a63842a000
3fe2fffffbe1fff8 fbe1fff8fbc1fff0
f80100103bff7190 7c7f1b787fc32214
4bfffec1f821ffd1 f821ffd1f8010010
4bffffad7fe3fb78 409e000c7fbff040
7fe3fb787c641b78 4bfffe0c38210030
4bfffee94bffff59 3bff0001887f0000
4bffff195463063e 4bffffe44bffff8d
000000004bfffff4 0100000000000000
0000018001000000 3920000000000280
2f8a00007d4348ae
7d234b78409e000c
392900014e800020
000000004bffffe8
0000000000000000
6f57206f6c6c6548 6f57206f6c6c6548
0000000a0d646c72 0000000a0d646c72

@ -9,7 +9,7 @@ CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy OBJCOPY = $(CROSS_COMPILE)objcopy


CFLAGS = -Os -g -Wall -std=c99 -msoft-float -mno-string -mno-multiple -mno-vsx -mno-altivec -mlittle-endian -fno-stack-protector -mstrict-align -ffreestanding -fdata-sections -ffunction-sections CFLAGS = -Os -g -Wall -std=c99 -msoft-float -mno-string -mno-multiple -mno-vsx -mno-altivec -mlittle-endian -fno-stack-protector -mstrict-align -ffreestanding -fdata-sections -ffunction-sections -I../include
ASFLAGS = $(CFLAGS) ASFLAGS = $(CFLAGS)
LDFLAGS = -T powerpc.lds LDFLAGS = -T powerpc.lds



@ -2,6 +2,10 @@
#include <stdbool.h> #include <stdbool.h>


#include "console.h" #include "console.h"
#include "microwatt_soc.h"
#include "io.h"

#define UART_FREQ 115200


/* /*
* Core UART functions to implement for a port * Core UART functions to implement for a port
@ -9,32 +13,14 @@


static uint64_t potato_uart_base; static uint64_t potato_uart_base;


#define PROC_FREQ 100000000
#define UART_FREQ 115200
#define UART_BASE 0xc0002000

#define POTATO_CONSOLE_TX 0x00
#define POTATO_CONSOLE_RX 0x08
#define POTATO_CONSOLE_STATUS 0x10
#define POTATO_CONSOLE_STATUS_RX_EMPTY 0x01
#define POTATO_CONSOLE_STATUS_TX_EMPTY 0x02
#define POTATO_CONSOLE_STATUS_RX_FULL 0x04
#define POTATO_CONSOLE_STATUS_TX_FULL 0x08
#define POTATO_CONSOLE_CLOCK_DIV 0x18
#define POTATO_CONSOLE_IRQ_EN 0x20

static uint64_t potato_uart_reg_read(int offset) static uint64_t potato_uart_reg_read(int offset)
{ {
uint64_t val; return readq(potato_uart_base + offset);

__asm__ volatile("ldcix %0,%1,%2" : "=r" (val) : "b" (potato_uart_base), "r" (offset));

return val;
} }


static void potato_uart_reg_write(int offset, uint64_t val) static void potato_uart_reg_write(int offset, uint64_t val)
{ {
__asm__ volatile("stdcix %0,%1,%2" : : "r" (val), "b" (potato_uart_base), "r" (offset)); writeq(val, potato_uart_base + offset);
} }


static int potato_uart_rx_empty(void) static int potato_uart_rx_empty(void)
@ -86,9 +72,12 @@ static unsigned long potato_uart_divisor(unsigned long proc_freq, unsigned long


void potato_uart_init(void) void potato_uart_init(void)
{ {
uint64_t proc_freq;

potato_uart_base = UART_BASE; potato_uart_base = UART_BASE;
proc_freq = readq(SYSCON_BASE + SYS_REG_CLKINFO);


potato_uart_reg_write(POTATO_CONSOLE_CLOCK_DIV, potato_uart_divisor(PROC_FREQ, UART_FREQ)); potato_uart_reg_write(POTATO_CONSOLE_CLOCK_DIV, potato_uart_divisor(proc_freq, UART_FREQ));
} }


void potato_uart_irq_en(void) void potato_uart_irq_en(void)

Binary file not shown.

Binary file not shown.

@ -515,53 +515,72 @@ e8010010ebc1fff0
3c4000014e800020 3c4000014e800020
7c0802a63842a000 7c0802a63842a000
3fe2fffffbe1fff8 3fe2fffffbe1fff8
f80100103bff71a8 f80100103bff7240
48000051f821ffd1 48000051f821ffd1
7fe3fb7860000000 7fe3fb7860000000
6000000048000139 60000000480001d5
7fe3fb787c641b78 7fe3fb787c641b78
60000000480000e1 600000004800017d
6000000048000065 60000000480000ed
480000955463063e 480001295463063e
4bffffec60000000 4bffffec60000000
0100000000000000 0100000000000000
3c40000100000180 3c40000100000180
3d20c0003842a000 3d20c0003842a000
6129200060000000 6129200060000000
7929002039000018 f922800079290020
3940001af9228000 612900203d20c000
4e8000207d4947ea 7c0004ac79290020
3d40001c7d204eea
7d295392614a2000
394a0018e9428000
7c0004ac3929ffff
4e8000207d2057ea
0000000000000000 0000000000000000
3c40000100000000 3c40000100000000
600000003842a000 600000003842a000
39000010e9228000 394000ffe9228000
794707e17d4946ea 7c0004ac39290020
386000084082fff8 4e8000207d404fea
5463063e7c691eea 0000000000000000
000000004e800020 3c40000100000000
0000000000000000 600000003842a000
3842a0003c400001 39400000e9228000
e942800060000000 7c0004ac39290020
7d2a46ea39000010 4e8000207d404fea
4082fff87927efe3 0000000000000000
7c6a4fea39200000 3c40000100000000
000000004e800020 600000003842a000
0000000000000000 39290010e9228000
3842a0003c400001 7d204eea7c0004ac
fbc1fff07c0802a6 4082ffe871290001
3884fffffbe1fff8 38630008e8628000
7fe322143bc3ffff 7c601eea7c0004ac
f821ffd1f8010010 4e8000205463063e
419e00107fbef840
4bffff9d8c7e0001
382100304bfffff0
000000004bfffe98
0000028001000000
7d4348ae39200000
419e000c2f8a0000
4bfffff039290001
4e8000207d234b78
0000000000000000 0000000000000000
3c40000100000000
600000003842a000
39290010e9228000
7d204eea7c0004ac
4082ffe871290008
7c0004ace9228000
4e8000207c604fea
0000000000000000
3c40000100000000
7c0802a63842a000
fbe1fff8fbc1fff0
7c7f1b787fc32214
f821ffd1f8010010
409e000c7fbff040
4bfffe0c38210030
3bff0001887f0000
4bffffe44bffff8d
0100000000000000
3920000000000280
2f8a00007d4348ae
7d234b78409e000c
392900014e800020
000000004bffffe8
0000000000000000 0000000000000000
6f57206f6c6c6548 6f57206f6c6c6548
0000000a0d646c72 0000000a0d646c72

@ -9,7 +9,7 @@ CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy OBJCOPY = $(CROSS_COMPILE)objcopy


CFLAGS = -Os -g -Wall -std=c99 -msoft-float -mno-string -mno-multiple -mno-vsx -mno-altivec -mlittle-endian -fno-stack-protector -mstrict-align -ffreestanding -fdata-sections -ffunction-sections CFLAGS = -Os -g -Wall -std=c99 -msoft-float -mno-string -mno-multiple -mno-vsx -mno-altivec -mlittle-endian -fno-stack-protector -mstrict-align -ffreestanding -fdata-sections -ffunction-sections -I../include
ASFLAGS = $(CFLAGS) ASFLAGS = $(CFLAGS)
LDFLAGS = -T powerpc.lds LDFLAGS = -T powerpc.lds



@ -9,7 +9,7 @@ CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy OBJCOPY = $(CROSS_COMPILE)objcopy


CFLAGS = -Os -g -Wall -std=c99 -msoft-float -mno-string -mno-multiple -mno-vsx -mno-altivec -mlittle-endian -fno-stack-protector -mstrict-align -ffreestanding -fdata-sections -ffunction-sections -I ../../hello_world CFLAGS = -Os -g -Wall -std=c99 -msoft-float -mno-string -mno-multiple -mno-vsx -mno-altivec -mlittle-endian -fno-stack-protector -mstrict-align -ffreestanding -fdata-sections -ffunction-sections -I ../../hello_world -I ../../include
ASFLAGS = $(CFLAGS) ASFLAGS = $(CFLAGS)
LDFLAGS = -T powerpc.lds LDFLAGS = -T powerpc.lds



Loading…
Cancel
Save