From: David Gibson <david@gibson.dropbear.id.au>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Alexander Graf <agraf@suse.de>,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
BALATON Zoltan <balaton@eik.bme.hu>
Subject: Re: [Qemu-devel] [PATCH v4] sam460ex: Fix sam460ex device tree when booting the Linux kernel
Date: Sun, 24 Jun 2018 20:12:56 +1000 [thread overview]
Message-ID: <20180624101256.GA2258@umbus.fritz.box> (raw)
In-Reply-To: <1529788685-31687-1-git-send-email-linux@roeck-us.net>
[-- Attachment #1: Type: text/plain, Size: 3640 bytes --]
On Sat, Jun 23, 2018 at 02:18:05PM -0700, Guenter Roeck wrote:
> sam460ex (or at least this emulation) does not support the "ibm,cpm" power
> management. As a result, Linux crashes when trying to access it. Remove
> its device tree node. Also, if/when we boot the Linux kernel directly,
> serial port clock frequencies in the device tree file will be unset, and
> serial port initialization will fail. Add valid frequency values to
> the serial ports to be able to use it. Also set valid values for the other
> clock nodes otherwise set by u-boot.
>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Applied to ppc-for-3.0, thanks.
> ---
> v4: Use correct UART clock.
> v3: Fix style problems (ERROR: braces {} are necessary for all arms ...).
> Use defines for clock frequencies.
> Use clock frequencies as reported by u-boot in real system.
> Use more specific prefix in subject.
> Fix typos in description.
> v2: Initialize all serial nodes to match u-boot behavior more closely.
> Use direct fdt API functions and ignore errors when clearing out
> /cpm and for setting the serial port clocks.
>
> hw/ppc/sam460ex.c | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c
> index bdc53d2..33ea518 100644
> --- a/hw/ppc/sam460ex.c
> +++ b/hw/ppc/sam460ex.c
> @@ -37,6 +37,8 @@
> #include "hw/i2c/smbus.h"
> #include "hw/usb/hcd-ehci.h"
>
> +#include <libfdt.h>
> +
> #define BINARY_DEVICE_TREE_FILE "canyonlands.dtb"
> #define UBOOT_FILENAME "u-boot-sam460-20100605.bin"
> /* to extract the official U-Boot bin from the updater: */
> @@ -67,6 +69,10 @@
> */
>
> #define CPU_FREQ 1150000000
> +#define PLB_FREQ 230000000
> +#define OPB_FREQ 115000000
> +#define EBC_FREQ 115000000
> +#define UART_FREQ 11059200
> #define SDRAM_NR_BANKS 4
>
> /* FIXME: See u-boot.git 8ac41e, also fix in ppc440_uc.c */
> @@ -255,6 +261,7 @@ static int sam460ex_load_device_tree(hwaddr addr,
> void *fdt;
> uint32_t tb_freq = CPU_FREQ;
> uint32_t clock_freq = CPU_FREQ;
> + int offset;
>
> filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, BINARY_DEVICE_TREE_FILE);
> if (!filename) {
> @@ -308,6 +315,27 @@ static int sam460ex_load_device_tree(hwaddr addr,
> qemu_fdt_setprop_cell(fdt, "/cpus/cpu@0", "timebase-frequency",
> tb_freq);
>
> + /* Remove cpm node if it exists (it is not emulated) */
> + offset = fdt_path_offset(fdt, "/cpm");
> + if (offset >= 0) {
> + fdt_nop_node(fdt, offset);
> + }
> +
> + /* set serial port clocks */
> + offset = fdt_node_offset_by_compatible(fdt, -1, "ns16550");
> + while (offset >= 0) {
> + fdt_setprop_cell(fdt, offset, "clock-frequency", UART_FREQ);
> + offset = fdt_node_offset_by_compatible(fdt, offset, "ns16550");
> + }
> +
> + /* some more clocks */
> + qemu_fdt_setprop_cell(fdt, "/plb", "clock-frequency",
> + PLB_FREQ);
> + qemu_fdt_setprop_cell(fdt, "/plb/opb", "clock-frequency",
> + OPB_FREQ);
> + qemu_fdt_setprop_cell(fdt, "/plb/opb/ebc", "clock-frequency",
> + EBC_FREQ);
> +
> rom_add_blob_fixed(BINARY_DEVICE_TREE_FILE, fdt, fdt_size, addr);
> g_free(fdt);
> ret = fdt_size;
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2018-06-24 10:26 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-23 21:18 [Qemu-devel] [PATCH v4] sam460ex: Fix sam460ex device tree when booting the Linux kernel Guenter Roeck
2018-06-23 21:22 ` BALATON Zoltan
2018-06-24 10:12 ` David Gibson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180624101256.GA2258@umbus.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=balaton@eik.bme.hu \
--cc=linux@roeck-us.net \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).