Skip to content

Commit

Permalink
ppc64: Rearrange btext initialization for consistency with ppc32
Browse files Browse the repository at this point in the history
Moved init_boot_display from arch/ppc64/kernel/pmac_setup.c to
arch/ppc64/kernel/btext.c and declared it in asm-ppc64/btext.h.
Call it from init_early rather than pmac_init_early.

Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Paul Mackerras committed Oct 22, 2005
1 parent f7abbc1 commit 529294d
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 49 deletions.
42 changes: 42 additions & 0 deletions arch/ppc64/kernel/btext.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <asm/io.h>
#include <asm/lmb.h>
#include <asm/processor.h>
#include <asm/udbg.h>

#undef NO_SCROLL

Expand Down Expand Up @@ -131,6 +132,47 @@ int btext_initialize(struct device_node *np)
return 0;
}

static void btext_putc(unsigned char c)
{
btext_drawchar(c);
}

void __init init_boot_display(void)
{
char *name;
struct device_node *np = NULL;
int rc = -ENODEV;

printk("trying to initialize btext ...\n");

name = (char *)get_property(of_chosen, "linux,stdout-path", NULL);
if (name != NULL) {
np = of_find_node_by_path(name);
if (np != NULL) {
if (strcmp(np->type, "display") != 0) {
printk("boot stdout isn't a display !\n");
of_node_put(np);
np = NULL;
}
}
}
if (np)
rc = btext_initialize(np);
if (rc) {
for (np = NULL; (np = of_find_node_by_type(np, "display"));) {
if (get_property(np, "linux,opened", NULL)) {
printk("trying %s ...\n", np->full_name);
rc = btext_initialize(np);
printk("result: %d\n", rc);
}
if (rc == 0)
break;
}
}
if (rc == 0 && udbg_putc == NULL)
udbg_putc = btext_putc;
}


/* Calc the base address of a given point (x,y) */
static unsigned char * calc_base(int x, int y)
Expand Down
49 changes: 0 additions & 49 deletions arch/ppc64/kernel/pmac_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,48 +274,6 @@ static void pmac_halt(void)
pmac_power_off();
}

#ifdef CONFIG_BOOTX_TEXT
static void btext_putc(unsigned char c)
{
btext_drawchar(c);
}

static void __init init_boot_display(void)
{
char *name;
struct device_node *np = NULL;
int rc = -ENODEV;

printk("trying to initialize btext ...\n");

name = (char *)get_property(of_chosen, "linux,stdout-path", NULL);
if (name != NULL) {
np = of_find_node_by_path(name);
if (np != NULL) {
if (strcmp(np->type, "display") != 0) {
printk("boot stdout isn't a display !\n");
of_node_put(np);
np = NULL;
}
}
}
if (np)
rc = btext_initialize(np);
if (rc == 0)
return;

for (np = NULL; (np = of_find_node_by_type(np, "display"));) {
if (get_property(np, "linux,opened", NULL)) {
printk("trying %s ...\n", np->full_name);
rc = btext_initialize(np);
printk("result: %d\n", rc);
}
if (rc == 0)
return;
}
}
#endif /* CONFIG_BOOTX_TEXT */

/*
* Early initialization.
*/
Expand All @@ -333,13 +291,6 @@ static void __init pmac_init_early(void)
sccdbg = 1;
udbg_init_scc(NULL);
}
#ifdef CONFIG_BOOTX_TEXT
else {
init_boot_display();

udbg_putc = btext_putc;
}
#endif /* CONFIG_BOOTX_TEXT */

/* Setup interrupt mapping options */
ppc64_interrupt_controller = IC_OPEN_PIC;
Expand Down
4 changes: 4 additions & 0 deletions arch/ppc64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,10 @@ void __init setup_system(void)
*/
finish_device_tree();

#ifdef CONFIG_BOOTX_TEXT
init_boot_display();
#endif

/*
* Initialize xmon
*/
Expand Down
1 change: 1 addition & 0 deletions include/asm-ppc64/btext.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ extern int boot_text_mapped;
extern int btext_initialize(struct device_node *np);

extern void map_boot_text(void);
extern void init_boot_display(void);
extern void btext_update_display(unsigned long phys, int width, int height,
int depth, int pitch);

Expand Down

0 comments on commit 529294d

Please sign in to comment.