Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 93473
b: refs/heads/master
c: b912b5e
h: refs/heads/master
i:
  93471: 1e87f01
v: v3
  • Loading branch information
John Linn authored and Josh Boyer committed Apr 24, 2008
1 parent 07b367d commit c96fe58
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 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: 2f0b45f846735b486c0383740d3959941c4721a4
refs/heads/master: b912b5e2cfb35c02c9c79d3f6e31753f3be4dd83
11 changes: 11 additions & 0 deletions trunk/Documentation/powerpc/booting-without-of.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2601,6 +2601,17 @@ platforms are moved over to use the flattened-device-tree model.
differ between different families. May be
'virtex2p', 'virtex4', or 'virtex5'.

vi) Xilinx Uart 16550

Xilinx UART 16550 devices are very similar to the NS16550 but with
different register spacing and an offset from the base address.

Requred properties:
- clock-frequency : Frequency of the clock input
- reg-offset : A value of 3 is required
- reg-shift : A value of 2 is required


p) Freescale Synchronous Serial Interface

The SSI is a serial device that communicates with audio codecs. It can
Expand Down
14 changes: 13 additions & 1 deletion trunk/drivers/serial/of_serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ static int __devinit of_platform_serial_setup(struct of_device *ofdev,
struct resource resource;
struct device_node *np = ofdev->node;
const unsigned int *clk, *spd;
int ret;
const u32 *prop;
int ret, prop_size;

memset(port, 0, sizeof *port);
spd = of_get_property(np, "current-speed", NULL);
Expand All @@ -49,6 +50,17 @@ static int __devinit of_platform_serial_setup(struct of_device *ofdev,

spin_lock_init(&port->lock);
port->mapbase = resource.start;

/* Check for shifted address mapping */
prop = of_get_property(np, "reg-offset", &prop_size);
if (prop && (prop_size == sizeof(u32)))
port->mapbase += *prop;

/* Check for registers offset within the devices address range */
prop = of_get_property(np, "reg-shift", &prop_size);
if (prop && (prop_size == sizeof(u32)))
port->regshift = *prop;

port->irq = irq_of_parse_and_map(np, 0);
port->iotype = UPIO_MEM;
port->type = type;
Expand Down

0 comments on commit c96fe58

Please sign in to comment.