Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 91578
b: refs/heads/master
c: da0a5f0
h: refs/heads/master
v: v3
  • Loading branch information
Laurent Pinchart authored and Kumar Gala committed Apr 17, 2008
1 parent a533563 commit 765c095
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 44 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d464df2667cf181419604e656773f80996cf0470
refs/heads/master: da0a5f0c65913e4ec0a70a5019ce0a7bcaab21c9
34 changes: 6 additions & 28 deletions trunk/arch/powerpc/boot/cpm-serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,6 @@ int cpm_console_init(void *devp, struct serial_console_data *scdp)
{
void *reg_virt[2];
int is_smc = 0, is_cpm2 = 0, n;
unsigned long reg_phys;
void *parent, *muram;

if (dt_is_compatible(devp, "fsl,cpm1-smc-uart")) {
Expand Down Expand Up @@ -206,15 +205,8 @@ int cpm_console_init(void *devp, struct serial_console_data *scdp)
if (n < 4)
return -1;

n = getprop(devp, "virtual-reg", reg_virt, sizeof(reg_virt));
if (n < (int)sizeof(reg_virt)) {
for (n = 0; n < 2; n++) {
if (!dt_xlate_reg(devp, n, &reg_phys, NULL))
return -1;

reg_virt[n] = (void *)reg_phys;
}
}
if (dt_get_virtual_reg(devp, reg_virt, 2) < 2)
return -1;

if (is_smc)
smc = reg_virt[0];
Expand All @@ -227,15 +219,8 @@ int cpm_console_init(void *devp, struct serial_console_data *scdp)
if (!parent)
return -1;

n = getprop(parent, "virtual-reg", reg_virt, sizeof(reg_virt));
if (n < (int)sizeof(reg_virt)) {
if (!dt_xlate_reg(parent, 0, &reg_phys, NULL))
return -1;

reg_virt[0] = (void *)reg_phys;
}

cpcr = reg_virt[0];
if (dt_get_virtual_reg(parent, &cpcr, 1) < 1)
return -1;

muram = finddevice("/soc/cpm/muram/data");
if (!muram)
Expand All @@ -246,15 +231,8 @@ int cpm_console_init(void *devp, struct serial_console_data *scdp)
* is one for both parent and child.
*/

n = getprop(muram, "virtual-reg", reg_virt, sizeof(reg_virt));
if (n < (int)sizeof(reg_virt)) {
if (!dt_xlate_reg(muram, 0, &reg_phys, NULL))
return -1;

reg_virt[0] = (void *)reg_phys;
}

muram_start = reg_virt[0];
if (dt_get_virtual_reg(muram, (void **)&muram_start, 1) < 1)
return -1;

n = getprop(muram, "reg", &muram_offset, 4);
if (n < 4)
Expand Down
20 changes: 20 additions & 0 deletions trunk/arch/powerpc/boot/devtree.c
Original file line number Diff line number Diff line change
Expand Up @@ -350,3 +350,23 @@ int dt_is_compatible(void *node, const char *compat)

return 0;
}

int dt_get_virtual_reg(void *node, void **addr, int nres)
{
unsigned long xaddr;
int n;

n = getprop(node, "virtual-reg", addr, nres * 4);
if (n > 0)
return n / 4;

for (n = 0; n < nres; n++) {
if (!dt_xlate_reg(node, n, &xaddr, NULL))
break;

addr[n] = (void *)xaddr;
}

return n;
}

9 changes: 2 additions & 7 deletions trunk/arch/powerpc/boot/mpc52xx-psc.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,9 @@ static unsigned char psc_getc(void)

int mpc5200_psc_console_init(void *devp, struct serial_console_data *scdp)
{
int n;

/* Get the base address of the psc registers */
n = getprop(devp, "virtual-reg", &psc, sizeof(psc));
if (n != sizeof(psc)) {
if (!dt_xlate_reg(devp, 0, (void *)&psc, NULL))
return -1;
}
if (dt_get_virtual_reg(devp, &psc, 1) < 1)
return -1;

scdp->open = psc_open;
scdp->putc = psc_putc;
Expand Down
10 changes: 2 additions & 8 deletions trunk/arch/powerpc/boot/ns16550.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,9 @@ static u8 ns16550_tstc(void)
int ns16550_console_init(void *devp, struct serial_console_data *scdp)
{
int n;
unsigned long reg_phys;

n = getprop(devp, "virtual-reg", &reg_base, sizeof(reg_base));
if (n != sizeof(reg_base)) {
if (!dt_xlate_reg(devp, 0, &reg_phys, NULL))
return -1;

reg_base = (void *)reg_phys;
}
if (dt_get_virtual_reg(devp, (void **)&reg_base, 1) < 1)
return -1;

n = getprop(devp, "reg-shift", &reg_shift, sizeof(reg_shift));
if (n != sizeof(reg_shift))
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/powerpc/boot/ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ int dt_xlate_reg(void *node, int res, unsigned long *addr, unsigned long *size);
int dt_xlate_addr(void *node, u32 *buf, int buflen, unsigned long *xlated_addr);
int dt_is_compatible(void *node, const char *compat);
void dt_get_reg_format(void *node, u32 *naddr, u32 *nsize);
int dt_get_virtual_reg(void *node, void **addr, int nres);

static inline void *finddevice(const char *name)
{
Expand Down

0 comments on commit 765c095

Please sign in to comment.