diff options
| -rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index 5c0ba235f5a5..b57e7da78976 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
| @@ -1441,6 +1441,258 @@ platforms are moved over to use the flattened-device-tree model. | |||
| 1441 | descriptor-types-mask = <012b0ebf>; | 1441 | descriptor-types-mask = <012b0ebf>; |
| 1442 | }; | 1442 | }; |
| 1443 | 1443 | ||
| 1444 | h) Board Control and Status (BCSR) | ||
| 1445 | |||
| 1446 | Required properties: | ||
| 1447 | |||
| 1448 | - device_type : Should be "board-control" | ||
| 1449 | - reg : Offset and length of the register set for the device | ||
| 1450 | |||
| 1451 | Example: | ||
| 1452 | |||
| 1453 | bcsr@f8000000 { | ||
| 1454 | device_type = "board-control"; | ||
| 1455 | reg = <f8000000 8000>; | ||
| 1456 | }; | ||
| 1457 | |||
| 1458 | i) Freescale QUICC Engine module (QE) | ||
| 1459 | This represents qe module that is installed on PowerQUICC II Pro. | ||
| 1460 | Hopefully it will merge backward compatibility with CPM/CPM2. | ||
| 1461 | Basically, it is a bus of devices, that could act more or less | ||
| 1462 | as a complete entity (UCC, USB etc ). All of them should be siblings on | ||
| 1463 | the "root" qe node, using the common properties from there. | ||
| 1464 | The description below applies to the the qe of MPC8360 and | ||
| 1465 | more nodes and properties would be extended in the future. | ||
| 1466 | |||
| 1467 | i) Root QE device | ||
| 1468 | |||
| 1469 | Required properties: | ||
| 1470 | - device_type : should be "qe"; | ||
| 1471 | - model : precise model of the QE, Can be "QE", "CPM", or "CPM2" | ||
| 1472 | - reg : offset and length of the device registers. | ||
| 1473 | - bus-frequency : the clock frequency for QUICC Engine. | ||
| 1474 | |||
| 1475 | Recommended properties | ||
| 1476 | - brg-frequency : the internal clock source frequency for baud-rate | ||
| 1477 | generators in Hz. | ||
| 1478 | |||
| 1479 | Example: | ||
| 1480 | qe@e0100000 { | ||
| 1481 | #address-cells = <1>; | ||
| 1482 | #size-cells = <1>; | ||
| 1483 | #interrupt-cells = <2>; | ||
| 1484 | device_type = "qe"; | ||
| 1485 | model = "QE"; | ||
| 1486 | ranges = <0 e0100000 00100000>; | ||
| 1487 | reg = <e0100000 480>; | ||
| 1488 | brg-frequency = <0>; | ||
| 1489 | bus-frequency = <179A7B00>; | ||
| 1490 | } | ||
| 1491 | |||
| 1492 | |||
| 1493 | ii) SPI (Serial Peripheral Interface) | ||
| 1494 | |||
| 1495 | Required properties: | ||
| 1496 | - device_type : should be "spi". | ||
| 1497 | - compatible : should be "fsl_spi". | ||
| 1498 | - mode : the spi operation mode, it can be "cpu" or "qe". | ||
| 1499 | - reg : Offset and length of the register set for the device | ||
| 1500 | - interrupts : <a b> where a is the interrupt number and b is a | ||
| 1501 | field that represents an encoding of the sense and level | ||
| 1502 | information for the interrupt. This should be encoded based on | ||
| 1503 | the information in section 2) depending on the type of interrupt | ||
| 1504 | controller you have. | ||
| 1505 | - interrupt-parent : the phandle for the interrupt controller that | ||
| 1506 | services interrupts for this device. | ||
| 1507 | |||
| 1508 | Example: | ||
| 1509 | spi@4c0 { | ||
| 1510 | device_type = "spi"; | ||
| 1511 | compatible = "fsl_spi"; | ||
| 1512 | reg = <4c0 40>; | ||
| 1513 | interrupts = <82 0>; | ||
| 1514 | interrupt-parent = <700>; | ||
| 1515 | mode = "cpu"; | ||
| 1516 | }; | ||
| 1517 | |||
| 1518 | |||
| 1519 | iii) USB (Universal Serial Bus Controller) | ||
| 1520 | |||
| 1521 | Required properties: | ||
| 1522 | - device_type : should be "usb". | ||
| 1523 | - compatible : could be "qe_udc" or "fhci-hcd". | ||
| 1524 | - mode : the could be "host" or "slave". | ||
| 1525 | - reg : Offset and length of the register set for the device | ||
| 1526 | - interrupts : <a b> where a is the interrupt number and b is a | ||
| 1527 | field that represents an encoding of the sense and level | ||
| 1528 | information for the interrupt. This should be encoded based on | ||
| 1529 | the information in section 2) depending on the type of interrupt | ||
| 1530 | controller you have. | ||
| 1531 | - interrupt-parent : the phandle for the interrupt controller that | ||
| 1532 | services interrupts for this device. | ||
| 1533 | |||
| 1534 | Example(slave): | ||
| 1535 | usb@6c0 { | ||
| 1536 | device_type = "usb"; | ||
| 1537 | compatible = "qe_udc"; | ||
| 1538 | reg = <6c0 40>; | ||
| 1539 | interrupts = <8b 0>; | ||
| 1540 | interrupt-parent = <700>; | ||
| 1541 | mode = "slave"; | ||
| 1542 | }; | ||
| 1543 | |||
| 1544 | |||
| 1545 | iv) UCC (Unified Communications Controllers) | ||
| 1546 | |||
| 1547 | Required properties: | ||
| 1548 | - device_type : should be "network", "hldc", "uart", "transparent" | ||
| 1549 | "bisync" or "atm". | ||
| 1550 | - compatible : could be "ucc_geth" or "fsl_atm" and so on. | ||
| 1551 | - model : should be "UCC". | ||
| 1552 | - device-id : the ucc number(1-8), corresponding to UCCx in UM. | ||
| 1553 | - reg : Offset and length of the register set for the device | ||
| 1554 | - interrupts : <a b> where a is the interrupt number and b is a | ||
| 1555 | field that represents an encoding of the sense and level | ||
| 1556 | information for the interrupt. This should be encoded based on | ||
| 1557 | the information in section 2) depending on the type of interrupt | ||
| 1558 | controller you have. | ||
| 1559 | - interrupt-parent : the phandle for the interrupt controller that | ||
| 1560 | services interrupts for this device. | ||
| 1561 | - pio-handle : The phandle for the Parallel I/O port configuration. | ||
| 1562 | - rx-clock : represents the UCC receive clock source. | ||
| 1563 | 0x00 : clock source is disabled; | ||
| 1564 | 0x1~0x10 : clock source is BRG1~BRG16 respectively; | ||
| 1565 | 0x11~0x28: clock source is QE_CLK1~QE_CLK24 respectively. | ||
| 1566 | - tx-clock: represents the UCC transmit clock source; | ||
| 1567 | 0x00 : clock source is disabled; | ||
| 1568 | 0x1~0x10 : clock source is BRG1~BRG16 respectively; | ||
| 1569 | 0x11~0x28: clock source is QE_CLK1~QE_CLK24 respectively. | ||
| 1570 | |||
| 1571 | Required properties for network device_type: | ||
| 1572 | - mac-address : list of bytes representing the ethernet address. | ||
| 1573 | - phy-handle : The phandle for the PHY connected to this controller. | ||
| 1574 | |||
| 1575 | Example: | ||
| 1576 | ucc@2000 { | ||
| 1577 | device_type = "network"; | ||
| 1578 | compatible = "ucc_geth"; | ||
| 1579 | model = "UCC"; | ||
| 1580 | device-id = <1>; | ||
| 1581 | reg = <2000 200>; | ||
| 1582 | interrupts = <a0 0>; | ||
| 1583 | interrupt-parent = <700>; | ||
| 1584 | mac-address = [ 00 04 9f 00 23 23 ]; | ||
| 1585 | rx-clock = "none"; | ||
| 1586 | tx-clock = "clk9"; | ||
| 1587 | phy-handle = <212000>; | ||
| 1588 | pio-handle = <140001>; | ||
| 1589 | }; | ||
| 1590 | |||
| 1591 | |||
| 1592 | v) Parallel I/O Ports | ||
| 1593 | |||
| 1594 | This node configures Parallel I/O ports for CPUs with QE support. | ||
| 1595 | The node should reside in the "soc" node of the tree. For each | ||
| 1596 | device that using parallel I/O ports, a child node should be created. | ||
| 1597 | See the definition of the Pin configuration nodes below for more | ||
| 1598 | information. | ||
| 1599 | |||
| 1600 | Required properties: | ||
| 1601 | - device_type : should be "par_io". | ||
| 1602 | - reg : offset to the register set and its length. | ||
| 1603 | - num-ports : number of Parallel I/O ports | ||
| 1604 | |||
| 1605 | Example: | ||
| 1606 | par_io@1400 { | ||
| 1607 | reg = <1400 100>; | ||
| 1608 | #address-cells = <1>; | ||
| 1609 | #size-cells = <0>; | ||
| 1610 | device_type = "par_io"; | ||
| 1611 | num-ports = <7>; | ||
| 1612 | ucc_pin@01 { | ||
| 1613 | ...... | ||
| 1614 | }; | ||
| 1615 | |||
| 1616 | |||
| 1617 | vi) Pin configuration nodes | ||
| 1618 | |||
| 1619 | Required properties: | ||
| 1620 | - linux,phandle : phandle of this node; likely referenced by a QE | ||
| 1621 | device. | ||
| 1622 | - pio-map : array of pin configurations. Each pin is defined by 6 | ||
| 1623 | integers. The six numbers are respectively: port, pin, dir, | ||
| 1624 | open_drain, assignment, has_irq. | ||
| 1625 | - port : port number of the pin; 0-6 represent port A-G in UM. | ||
| 1626 | - pin : pin number in the port. | ||
| 1627 | - dir : direction of the pin, should encode as follows: | ||
| 1628 | |||
| 1629 | 0 = The pin is disabled | ||
| 1630 | 1 = The pin is an output | ||
| 1631 | 2 = The pin is an input | ||
| 1632 | 3 = The pin is I/O | ||
| 1633 | |||
| 1634 | - open_drain : indicates the pin is normal or wired-OR: | ||
| 1635 | |||
| 1636 | 0 = The pin is actively driven as an output | ||
| 1637 | 1 = The pin is an open-drain driver. As an output, the pin is | ||
| 1638 | driven active-low, otherwise it is three-stated. | ||
| 1639 | |||
| 1640 | - assignment : function number of the pin according to the Pin Assignment | ||
| 1641 | tables in User Manual. Each pin can have up to 4 possible functions in | ||
| 1642 | QE and two options for CPM. | ||
| 1643 | - has_irq : indicates if the pin is used as source of exteral | ||
| 1644 | interrupts. | ||
| 1645 | |||
| 1646 | Example: | ||
| 1647 | ucc_pin@01 { | ||
| 1648 | linux,phandle = <140001>; | ||
| 1649 | pio-map = < | ||
| 1650 | /* port pin dir open_drain assignment has_irq */ | ||
| 1651 | 0 3 1 0 1 0 /* TxD0 */ | ||
| 1652 | 0 4 1 0 1 0 /* TxD1 */ | ||
| 1653 | 0 5 1 0 1 0 /* TxD2 */ | ||
| 1654 | 0 6 1 0 1 0 /* TxD3 */ | ||
| 1655 | 1 6 1 0 3 0 /* TxD4 */ | ||
| 1656 | 1 7 1 0 1 0 /* TxD5 */ | ||
| 1657 | 1 9 1 0 2 0 /* TxD6 */ | ||
| 1658 | 1 a 1 0 2 0 /* TxD7 */ | ||
| 1659 | 0 9 2 0 1 0 /* RxD0 */ | ||
| 1660 | 0 a 2 0 1 0 /* RxD1 */ | ||
| 1661 | 0 b 2 0 1 0 /* RxD2 */ | ||
| 1662 | 0 c 2 0 1 0 /* RxD3 */ | ||
| 1663 | 0 d 2 0 1 0 /* RxD4 */ | ||
| 1664 | 1 1 2 0 2 0 /* RxD5 */ | ||
| 1665 | 1 0 2 0 2 0 /* RxD6 */ | ||
| 1666 | 1 4 2 0 2 0 /* RxD7 */ | ||
| 1667 | 0 7 1 0 1 0 /* TX_EN */ | ||
| 1668 | 0 8 1 0 1 0 /* TX_ER */ | ||
| 1669 | 0 f 2 0 1 0 /* RX_DV */ | ||
| 1670 | 0 10 2 0 1 0 /* RX_ER */ | ||
| 1671 | 0 0 2 0 1 0 /* RX_CLK */ | ||
| 1672 | 2 9 1 0 3 0 /* GTX_CLK - CLK10 */ | ||
| 1673 | 2 8 2 0 1 0>; /* GTX125 - CLK9 */ | ||
| 1674 | }; | ||
| 1675 | |||
| 1676 | vii) Multi-User RAM (MURAM) | ||
| 1677 | |||
| 1678 | Required properties: | ||
| 1679 | - device_type : should be "muram". | ||
| 1680 | - mode : the could be "host" or "slave". | ||
| 1681 | - ranges : Should be defined as specified in 1) to describe the | ||
| 1682 | translation of MURAM addresses. | ||
| 1683 | - data-only : sub-node which defines the address area under MURAM | ||
| 1684 | bus that can be allocated as data/parameter | ||
| 1685 | |||
| 1686 | Example: | ||
| 1687 | |||
| 1688 | muram@10000 { | ||
| 1689 | device_type = "muram"; | ||
| 1690 | ranges = <0 00010000 0000c000>; | ||
| 1691 | |||
| 1692 | data-only@0{ | ||
| 1693 | reg = <0 c000>; | ||
| 1694 | }; | ||
| 1695 | }; | ||
| 1444 | 1696 | ||
| 1445 | More devices will be defined as this spec matures. | 1697 | More devices will be defined as this spec matures. |
| 1446 | 1698 | ||
