diff options
| -rw-r--r-- | Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt | 54 | ||||
| -rw-r--r-- | arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | 2 | ||||
| -rw-r--r-- | drivers/of/fdt.c | 7 |
3 files changed, 61 insertions, 2 deletions
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt index 6e37be1eeb2d..4f8930263dd9 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt +++ b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt | |||
| @@ -21,6 +21,15 @@ Required properties: | |||
| 21 | - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the | 21 | - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the |
| 22 | threads. | 22 | threads. |
| 23 | 23 | ||
| 24 | Optional properties: | ||
| 25 | - fsl,firmware-phandle: | ||
| 26 | Usage: required only if there is no fsl,qe-firmware child node | ||
| 27 | Value type: <phandle> | ||
| 28 | Definition: Points to a firmware node (see "QE Firmware Node" below) | ||
| 29 | that contains the firmware that should be uploaded for this QE. | ||
| 30 | The compatible property for the firmware node should say, | ||
| 31 | "fsl,qe-firmware". | ||
| 32 | |||
| 24 | Recommended properties | 33 | Recommended properties |
| 25 | - brg-frequency : the internal clock source frequency for baud-rate | 34 | - brg-frequency : the internal clock source frequency for baud-rate |
| 26 | generators in Hz. | 35 | generators in Hz. |
| @@ -59,3 +68,48 @@ Example: | |||
| 59 | reg = <0 c000>; | 68 | reg = <0 c000>; |
| 60 | }; | 69 | }; |
| 61 | }; | 70 | }; |
| 71 | |||
| 72 | * QE Firmware Node | ||
| 73 | |||
| 74 | This node defines a firmware binary that is embedded in the device tree, for | ||
| 75 | the purpose of passing the firmware from bootloader to the kernel, or from | ||
| 76 | the hypervisor to the guest. | ||
| 77 | |||
| 78 | The firmware node itself contains the firmware binary contents, a compatible | ||
| 79 | property, and any firmware-specific properties. The node should be placed | ||
| 80 | inside a QE node that needs it. Doing so eliminates the need for a | ||
| 81 | fsl,firmware-phandle property. Other QE nodes that need the same firmware | ||
| 82 | should define an fsl,firmware-phandle property that points to the firmware node | ||
| 83 | in the first QE node. | ||
| 84 | |||
| 85 | The fsl,firmware property can be specified in the DTS (possibly using incbin) | ||
| 86 | or can be inserted by the boot loader at boot time. | ||
| 87 | |||
| 88 | Required properties: | ||
| 89 | - compatible | ||
| 90 | Usage: required | ||
| 91 | Value type: <string> | ||
| 92 | Definition: A standard property. Specify a string that indicates what | ||
| 93 | kind of firmware it is. For QE, this should be "fsl,qe-firmware". | ||
| 94 | |||
| 95 | - fsl,firmware | ||
| 96 | Usage: required | ||
| 97 | Value type: <prop-encoded-array>, encoded as an array of bytes | ||
| 98 | Definition: A standard property. This property contains the firmware | ||
| 99 | binary "blob". | ||
| 100 | |||
| 101 | Example: | ||
| 102 | qe1@e0080000 { | ||
| 103 | compatible = "fsl,qe"; | ||
| 104 | qe_firmware:qe-firmware { | ||
| 105 | compatible = "fsl,qe-firmware"; | ||
| 106 | fsl,firmware = [0x70 0xcd 0x00 0x00 0x01 0x46 0x45 ...]; | ||
| 107 | }; | ||
| 108 | ... | ||
| 109 | }; | ||
| 110 | |||
| 111 | qe2@e0090000 { | ||
| 112 | compatible = "fsl,qe"; | ||
| 113 | fsl,firmware-phandle = <&qe_firmware>; | ||
| 114 | ... | ||
| 115 | }; | ||
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c index 929d017535a3..d4f8be307cd5 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | |||
| @@ -481,6 +481,8 @@ mpc52xx_lpbfifo_probe(struct of_device *op, const struct of_device_id *match) | |||
| 481 | if (rc) | 481 | if (rc) |
| 482 | goto err_bcom_rx_irq; | 482 | goto err_bcom_rx_irq; |
| 483 | 483 | ||
| 484 | lpbfifo.dma_irqs_enabled = 1; | ||
| 485 | |||
| 484 | /* Request the Bestcomm transmit (memory --> fifo) task and IRQ */ | 486 | /* Request the Bestcomm transmit (memory --> fifo) task and IRQ */ |
| 485 | lpbfifo.bcom_tx_task = | 487 | lpbfifo.bcom_tx_task = |
| 486 | bcom_gen_bd_tx_init(2, res.start + LPBFIFO_REG_FIFO_DATA, | 488 | bcom_gen_bd_tx_init(2, res.start + LPBFIFO_REG_FIFO_DATA, |
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 406757a9d7ea..dee4fb56b094 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c | |||
| @@ -376,8 +376,11 @@ unsigned long __init unflatten_dt_node(unsigned long mem, | |||
| 376 | if (!np->type) | 376 | if (!np->type) |
| 377 | np->type = "<NULL>"; | 377 | np->type = "<NULL>"; |
| 378 | } | 378 | } |
| 379 | while (tag == OF_DT_BEGIN_NODE) { | 379 | while (tag == OF_DT_BEGIN_NODE || tag == OF_DT_NOP) { |
| 380 | mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize); | 380 | if (tag == OF_DT_NOP) |
| 381 | *p += 4; | ||
| 382 | else | ||
| 383 | mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize); | ||
| 381 | tag = be32_to_cpup((__be32 *)(*p)); | 384 | tag = be32_to_cpup((__be32 *)(*p)); |
| 382 | } | 385 | } |
| 383 | if (tag != OF_DT_END_NODE) { | 386 | if (tag != OF_DT_END_NODE) { |
