diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2007-08-22 23:56:01 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:51:52 -0400 |
commit | 1d3bb996481e116f5f2b127cbd29b83365d2cf62 (patch) | |
tree | b612a1dbf51c920fb5a9758a6d35f9ed37eb927f /Documentation/powerpc/booting-without-of.txt | |
parent | 03233b90b0977d577322a6e1ddd56d9cc570d406 (diff) |
Device tree aware EMAC driver
Based on BenH's earlier work, this is a new version of the EMAC driver
for the built-in ethernet found on PowerPC 4xx embedded CPUs. The
same ASIC is also found in the Axon bridge chip. This new version is
designed to work in the arch/powerpc tree, using the device tree to
probe the device, rather than the old and ugly arch/ppc OCP layer.
This driver is designed to sit alongside the old driver (that lies in
drivers/net/ibm_emac and this one in drivers/net/ibm_newemac). The
old driver is left in place to support arch/ppc until arch/ppc itself
reaches its final demise (not too long now, with luck).
This driver still has a number of things that could do with cleaning
up, but I think they can be fixed up after merging. Specifically:
- Should be adjusted to properly use the dma mapping API.
Axon needs this.
- Probe logic needs reworking, in conjuction with the general
probing code for of_platform devices. The dependencies here between
EMAC, MAL, ZMII etc. make this complicated. At present, it usually
works, because we initialize and register the sub-drivers before the
EMAC driver itself, and (being in driver code) runs after the devices
themselves have been instantiated from the device tree.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'Documentation/powerpc/booting-without-of.txt')
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index 76733a3962f0..838fd323e797 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
@@ -1824,6 +1824,162 @@ platforms are moved over to use the flattened-device-tree model. | |||
1824 | fsl,has-rstcr; | 1824 | fsl,has-rstcr; |
1825 | }; | 1825 | }; |
1826 | 1826 | ||
1827 | |||
1828 | h) 4xx/Axon EMAC ethernet nodes | ||
1829 | |||
1830 | The EMAC ethernet controller in IBM and AMCC 4xx chips, and also | ||
1831 | the Axon bridge. To operate this needs to interact with a ths | ||
1832 | special McMAL DMA controller, and sometimes an RGMII or ZMII | ||
1833 | interface. In addition to the nodes and properties described | ||
1834 | below, the node for the OPB bus on which the EMAC sits must have a | ||
1835 | correct clock-frequency property. | ||
1836 | |||
1837 | i) The EMAC node itself | ||
1838 | |||
1839 | Required properties: | ||
1840 | - device_type : "network" | ||
1841 | |||
1842 | - compatible : compatible list, contains 2 entries, first is | ||
1843 | "ibm,emac-CHIP" where CHIP is the host ASIC (440gx, | ||
1844 | 405gp, Axon) and second is either "ibm,emac" or | ||
1845 | "ibm,emac4". For Axon, thus, we have: "ibm,emac-axon", | ||
1846 | "ibm,emac4" | ||
1847 | - interrupts : <interrupt mapping for EMAC IRQ and WOL IRQ> | ||
1848 | - interrupt-parent : optional, if needed for interrupt mapping | ||
1849 | - reg : <registers mapping> | ||
1850 | - local-mac-address : 6 bytes, MAC address | ||
1851 | - mal-device : phandle of the associated McMAL node | ||
1852 | - mal-tx-channel : 1 cell, index of the tx channel on McMAL associated | ||
1853 | with this EMAC | ||
1854 | - mal-rx-channel : 1 cell, index of the rx channel on McMAL associated | ||
1855 | with this EMAC | ||
1856 | - cell-index : 1 cell, hardware index of the EMAC cell on a given | ||
1857 | ASIC (typically 0x0 and 0x1 for EMAC0 and EMAC1 on | ||
1858 | each Axon chip) | ||
1859 | - max-frame-size : 1 cell, maximum frame size supported in bytes | ||
1860 | - rx-fifo-size : 1 cell, Rx fifo size in bytes for 10 and 100 Mb/sec | ||
1861 | operations. | ||
1862 | For Axon, 2048 | ||
1863 | - tx-fifo-size : 1 cell, Tx fifo size in bytes for 10 and 100 Mb/sec | ||
1864 | operations. | ||
1865 | For Axon, 2048. | ||
1866 | - fifo-entry-size : 1 cell, size of a fifo entry (used to calculate | ||
1867 | thresholds). | ||
1868 | For Axon, 0x00000010 | ||
1869 | - mal-burst-size : 1 cell, MAL burst size (used to calculate thresholds) | ||
1870 | in bytes. | ||
1871 | For Axon, 0x00000100 (I think ...) | ||
1872 | - phy-mode : string, mode of operations of the PHY interface. | ||
1873 | Supported values are: "mii", "rmii", "smii", "rgmii", | ||
1874 | "tbi", "gmii", rtbi", "sgmii". | ||
1875 | For Axon on CAB, it is "rgmii" | ||
1876 | - mdio-device : 1 cell, required iff using shared MDIO registers | ||
1877 | (440EP). phandle of the EMAC to use to drive the | ||
1878 | MDIO lines for the PHY used by this EMAC. | ||
1879 | - zmii-device : 1 cell, required iff connected to a ZMII. phandle of | ||
1880 | the ZMII device node | ||
1881 | - zmii-channel : 1 cell, required iff connected to a ZMII. Which ZMII | ||
1882 | channel or 0xffffffff if ZMII is only used for MDIO. | ||
1883 | - rgmii-device : 1 cell, required iff connected to an RGMII. phandle | ||
1884 | of the RGMII device node. | ||
1885 | For Axon: phandle of plb5/plb4/opb/rgmii | ||
1886 | - rgmii-channel : 1 cell, required iff connected to an RGMII. Which | ||
1887 | RGMII channel is used by this EMAC. | ||
1888 | Fox Axon: present, whatever value is appropriate for each | ||
1889 | EMAC, that is the content of the current (bogus) "phy-port" | ||
1890 | property. | ||
1891 | |||
1892 | Recommended properties: | ||
1893 | - linux,network-index : This is the intended "index" of this | ||
1894 | network device. This is used by the bootwrapper to interpret | ||
1895 | MAC addresses passed by the firmware when no information other | ||
1896 | than indices is available to associate an address with a device. | ||
1897 | |||
1898 | Optional properties: | ||
1899 | - phy-address : 1 cell, optional, MDIO address of the PHY. If absent, | ||
1900 | a search is performed. | ||
1901 | - phy-map : 1 cell, optional, bitmap of addresses to probe the PHY | ||
1902 | for, used if phy-address is absent. bit 0x00000001 is | ||
1903 | MDIO address 0. | ||
1904 | For Axon it can be absent, thouugh my current driver | ||
1905 | doesn't handle phy-address yet so for now, keep | ||
1906 | 0x00ffffff in it. | ||
1907 | - rx-fifo-size-gige : 1 cell, Rx fifo size in bytes for 1000 Mb/sec | ||
1908 | operations (if absent the value is the same as | ||
1909 | rx-fifo-size). For Axon, either absent or 2048. | ||
1910 | - tx-fifo-size-gige : 1 cell, Tx fifo size in bytes for 1000 Mb/sec | ||
1911 | operations (if absent the value is the same as | ||
1912 | tx-fifo-size). For Axon, either absent or 2048. | ||
1913 | - tah-device : 1 cell, optional. If connected to a TAH engine for | ||
1914 | offload, phandle of the TAH device node. | ||
1915 | - tah-channel : 1 cell, optional. If appropriate, channel used on the | ||
1916 | TAH engine. | ||
1917 | |||
1918 | Example: | ||
1919 | |||
1920 | EMAC0: ethernet@40000800 { | ||
1921 | linux,network-index = <0>; | ||
1922 | device_type = "network"; | ||
1923 | compatible = "ibm,emac-440gp", "ibm,emac"; | ||
1924 | interrupt-parent = <&UIC1>; | ||
1925 | interrupts = <1c 4 1d 4>; | ||
1926 | reg = <40000800 70>; | ||
1927 | local-mac-address = [00 04 AC E3 1B 1E]; | ||
1928 | mal-device = <&MAL0>; | ||
1929 | mal-tx-channel = <0 1>; | ||
1930 | mal-rx-channel = <0>; | ||
1931 | cell-index = <0>; | ||
1932 | max-frame-size = <5dc>; | ||
1933 | rx-fifo-size = <1000>; | ||
1934 | tx-fifo-size = <800>; | ||
1935 | phy-mode = "rmii"; | ||
1936 | phy-map = <00000001>; | ||
1937 | zmii-device = <&ZMII0>; | ||
1938 | zmii-channel = <0>; | ||
1939 | }; | ||
1940 | |||
1941 | ii) McMAL node | ||
1942 | |||
1943 | Required properties: | ||
1944 | - device_type : "dma-controller" | ||
1945 | - compatible : compatible list, containing 2 entries, first is | ||
1946 | "ibm,mcmal-CHIP" where CHIP is the host ASIC (like | ||
1947 | emac) and the second is either "ibm,mcmal" or | ||
1948 | "ibm,mcmal2". | ||
1949 | For Axon, "ibm,mcmal-axon","ibm,mcmal2" | ||
1950 | - interrupts : <interrupt mapping for the MAL interrupts sources: | ||
1951 | 5 sources: tx_eob, rx_eob, serr, txde, rxde>. | ||
1952 | For Axon: This is _different_ from the current | ||
1953 | firmware. We use the "delayed" interrupts for txeob | ||
1954 | and rxeob. Thus we end up with mapping those 5 MPIC | ||
1955 | interrupts, all level positive sensitive: 10, 11, 32, | ||
1956 | 33, 34 (in decimal) | ||
1957 | - dcr-reg : < DCR registers range > | ||
1958 | - dcr-parent : if needed for dcr-reg | ||
1959 | - num-tx-chans : 1 cell, number of Tx channels | ||
1960 | - num-rx-chans : 1 cell, number of Rx channels | ||
1961 | |||
1962 | iii) ZMII node | ||
1963 | |||
1964 | Required properties: | ||
1965 | - compatible : compatible list, containing 2 entries, first is | ||
1966 | "ibm,zmii-CHIP" where CHIP is the host ASIC (like | ||
1967 | EMAC) and the second is "ibm,zmii". | ||
1968 | For Axon, there is no ZMII node. | ||
1969 | - reg : <registers mapping> | ||
1970 | |||
1971 | iv) RGMII node | ||
1972 | |||
1973 | Required properties: | ||
1974 | - compatible : compatible list, containing 2 entries, first is | ||
1975 | "ibm,rgmii-CHIP" where CHIP is the host ASIC (like | ||
1976 | EMAC) and the second is "ibm,rgmii". | ||
1977 | For Axon, "ibm,rgmii-axon","ibm,rgmii" | ||
1978 | - reg : <registers mapping> | ||
1979 | - revision : as provided by the RGMII new version register if | ||
1980 | available. | ||
1981 | For Axon: 0x0000012a | ||
1982 | |||
1827 | More devices will be defined as this spec matures. | 1983 | More devices will be defined as this spec matures. |
1828 | 1984 | ||
1829 | VII - Specifying interrupt information for devices | 1985 | VII - Specifying interrupt information for devices |