Lines Matching +full:axi +full:- +full:usb2 +full:- +full:device

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
4 * Copyright (C) 2008-2011 MARVELL INTERNATIONAL LTD.
179 { "marvell,armada-370-neta", &decode_win_neta_setup,
181 { "mrvl,usb-ehci", &decode_win_usb_setup, &decode_win_usb_dump, &decode_win_usb_valid},
182 { "marvell,orion-ehci", &decode_win_usb_setup, &decode_win_usb_dump, &decode_win_usb_valid },
183 { "marvell,armada-380-xhci", &decode_win_usb3_setup,
185 { "marvell,armada-380-ahci", &decode_win_ahci_setup,
187 { "marvell,armada-380-sdhci", &decode_win_sdhci_setup,
191 { "marvell,armada-38x-crypto", &decode_win_a38x_cesa_setup,
283 { "mrvl,usb-ehci", CPU_PM_CTRL_USB(0) },
284 { "mrvl,usb-ehci", CPU_PM_CTRL_USB(1) },
285 { "mrvl,usb-ehci", CPU_PM_CTRL_USB(2) },
292 * Disable device using power management register.
293 * 1 - Device Power On
294 * 0 - Device Power Off
297 * loader> set hw.pm-disable-mask=0x2
300 * |-------------------------------|
301 * | Device | Kirkwood | Discovery |
302 * |-------------------------------|
304 * |-------------------------------|
305 * | USB1 | - | 0x040000 |
306 * |-------------------------------|
307 * | USB2 | - | 0x080000 |
308 * |-------------------------------|
310 * |-------------------------------|
311 * | GE1 | - | 0x000004 |
312 * |-------------------------------|
313 * | IDMA | - | 0x100000 |
314 * |-------------------------------|
316 * |-------------------------------|
318 * |-------------------------------|
320 * --------------------------------|
375 printf("Device %x is disabled\n", mask); in pm_disable_device()
430 if (soc_decode_win_spec->read_cpu_ctrl != NULL) in read_cpu_ctrl()
431 return (soc_decode_win_spec->read_cpu_ctrl(reg)); in read_cpu_ctrl()
432 return (-1); in read_cpu_ctrl()
446 if (soc_decode_win_spec->write_cpu_ctrl != NULL) in write_cpu_ctrl()
447 soc_decode_win_spec->write_cpu_ctrl(reg, val); in write_cpu_ctrl()
486 * Set the power status of device. This feature was only supported on
511 if ((node = OF_finddevice("/")) == -1) in soc_id()
585 TUNABLE_INT_FETCH("hw.pm-disable-mask", &mask); in soc_decode_win()
590 /* Retrieve data about physical addresses from device tree. */ in soc_decode_win()
627 if (soc_decode_win_spec->cr_read != NULL) in WIN_REG_IDX_RD()
628 return (soc_decode_win_spec->cr_read(i)); in WIN_REG_IDX_RD()
629 return (-1); in WIN_REG_IDX_RD()
636 if (soc_decode_win_spec->br_read != NULL) in win_cpu_br_read()
637 return (soc_decode_win_spec->br_read(i)); in win_cpu_br_read()
638 return (-1); in win_cpu_br_read()
645 if (soc_decode_win_spec->remap_l_read != NULL) in win_cpu_remap_l_read()
646 return (soc_decode_win_spec->remap_l_read(i)); in win_cpu_remap_l_read()
647 return (-1); in win_cpu_remap_l_read()
654 if (soc_decode_win_spec->remap_h_read != NULL) in win_cpu_remap_h_read()
655 return soc_decode_win_spec->remap_h_read(i); in win_cpu_remap_h_read()
656 return (-1); in win_cpu_remap_h_read()
663 if (soc_decode_win_spec->cr_write != NULL) in win_cpu_cr_write()
664 soc_decode_win_spec->cr_write(i, val); in win_cpu_cr_write()
671 if (soc_decode_win_spec->br_write != NULL) in win_cpu_br_write()
672 soc_decode_win_spec->br_write(i, val); in win_cpu_br_write()
679 if (soc_decode_win_spec->remap_l_write != NULL) in win_cpu_remap_l_write()
680 soc_decode_win_spec->remap_l_write(i, val); in win_cpu_remap_l_write()
687 if (soc_decode_win_spec->remap_h_write != NULL) in win_cpu_remap_h_write()
688 soc_decode_win_spec->remap_h_write(i, val); in win_cpu_remap_h_write()
757 if (soc_decode_win_spec->ddr_br_read != NULL) in WIN_REG_IDX_RD()
758 return (soc_decode_win_spec->ddr_br_read(i)); in WIN_REG_IDX_RD()
759 return (-1); in WIN_REG_IDX_RD()
766 if (soc_decode_win_spec->ddr_sz_read != NULL) in ddr_sz_read()
767 return (soc_decode_win_spec->ddr_sz_read(i)); in ddr_sz_read()
768 return (-1); in ddr_sz_read()
775 if (soc_decode_win_spec->ddr_br_write != NULL) in ddr_br_write()
776 soc_decode_win_spec->ddr_br_write(i, val); in ddr_br_write()
783 if (soc_decode_win_spec->ddr_sz_write != NULL) in ddr_sz_write()
784 soc_decode_win_spec->ddr_sz_write(i, val); in ddr_sz_write()
789 * single MBUS <-> AXI bridge. In this case we provide emulated
816 return (((size - 1) << 16) | (mmap & 0x01)); in ddr_sz_read()
828 for (i = 0; i < soc_decode_win_spec->mv_win_cpu_max; i++) { in soc_dump_decode_win()
881 if ((tab->base + tab->size - 1) < (wintab + win)->base) in decode_win_overlap()
884 else if (((wintab + win)->base + (wintab + win)->size - 1) < in decode_win_overlap()
885 tab->base) in decode_win_overlap()
891 return (-1); in decode_win_overlap()
902 win = soc_decode_win_spec->mv_win_cpu_max - 1; in decode_win_cpu_set()
903 i = -1; in decode_win_cpu_set()
909 while ((win >= 0) && (win < soc_decode_win_spec->mv_win_cpu_max)) { in decode_win_cpu_set()
920 if ((win < 0) || (win >= soc_decode_win_spec->mv_win_cpu_max) || in decode_win_cpu_set()
922 return (-1); in decode_win_cpu_set()
934 * (capable of remapping) - set remap field with the in decode_win_cpu_set()
942 cr = ((size - 1) & 0xffff0000) | (attr << MV_WIN_CPU_ATTR_SHIFT) | in decode_win_cpu_set()
955 for (i = 0; i < soc_decode_win_spec->mv_win_cpu_max; i++) { in decode_win_cpu_setup()
986 (ddr_base(j) == mr->mr_start) && in ddr_valid_cb()
987 (ddr_size(j) == mr->mr_size)) { in ddr_valid_cb()
988 data->window_valid[j] = 1; in ddr_valid_cb()
989 data->valid_win_num++; in ddr_valid_cb()
992 data->mr_count++; in ddr_valid_cb()
1009 /* Destroy windows without corresponding device tree entry */ in decode_win_sdram_fixup()
1144 cr = (((size - 1) & 0xffff0000) | in decode_win_cesa_setup()
1219 cr = (((ddr_size(i) - 1) & 0xffff0000) | in decode_win_usb_setup()
1273 cr = (((ddr_size(i) - 1) & in decode_win_usb3_setup()
1299 /* ETH encode windows 0-3 have remap capability */ in win_eth_can_remap()
1382 sz = ((ddr_size(i) - 1) & 0xffff0000); in decode_win_eth_setup()
1467 /* On End-Point only set BAR size to 1MB regardless of DDR size */ in decode_win_pcie_setup()
1477 cr = (ddr_size(i) - 1) & 0xffff0000; in decode_win_pcie_setup()
1501 size -= 0x10000; in decode_win_pcie_setup()
1532 cr = ((ddr_size(i) - 1) & 0xffff0000) | in decode_win_sata_setup()
1568 sz = (ddr_size(i) - 1) & in decode_win_ahci_setup()
1580 /* SIZE is set to 16MB - max value */ in decode_win_ahci_setup()
1619 cr = (((ddr_size(i) - 1) & in decode_win_sdhci_setup()
1666 if (node == -1) in fdt_get_ranges()
1741 if ((node = OF_finddevice("sram")) != -1) in win_cpu_from_dt()
1742 if (ofw_bus_node_is_compatible(node, "mrvl,cesa-sram")) in win_cpu_from_dt()
1745 if ((node = OF_finddevice("/")) == -1) in win_cpu_from_dt()
1748 if ((node = fdt_find_compatible(node, "mrvl,cesa-sram", 0)) == 0) in win_cpu_from_dt()
1762 cpu_win_tbl[t].target = soc_decode_win_spec->win_cesa_target; in win_cpu_from_dt()
1764 cpu_win_tbl[t].attr = soc_decode_win_spec->win_cesa_attr(0); in win_cpu_from_dt()
1766 cpu_win_tbl[t].attr = soc_decode_win_spec->win_cesa_attr(1); in win_cpu_from_dt()
1775 if (ofw_bus_node_is_compatible(node, "mrvl,cesa-sram")) { in win_cpu_from_dt()
1792 cpu_win_tbl[t].target = soc_decode_win_spec->win_cesa_target; in win_cpu_from_dt()
1793 cpu_win_tbl[t].attr = soc_decode_win_spec->win_cesa_attr(1); in win_cpu_from_dt()
1844 base = fdt_data_get(&reg[addr_cells - 2], 2); in fdt_win_process_child()
1847 if (soc_node->valid_handler != NULL) in fdt_win_process_child()
1848 if (!soc_node->valid_handler()) in fdt_win_process_child()
1852 if (soc_node->decode_handler != NULL) in fdt_win_process_child()
1853 soc_node->decode_handler(base); in fdt_win_process_child()
1857 if (MV_DUMP_WIN && (soc_node->dump_handler != NULL)) in fdt_win_process_child()
1858 soc_node->dump_handler(base); in fdt_win_process_child()
1872 if (node == -1) in fdt_win_setup()
1880 * Traverse through all children of root and simple-bus nodes. in fdt_win_setup()
1881 * For each found device retrieve decode windows data (if applicable). in fdt_win_setup()
1890 /* Process Marvell Armada-XP/38x PCIe controllers */ in fdt_win_setup()
1891 if (ofw_bus_node_is_compatible(child, "marvell,armada-370-pcie")) { in fdt_win_setup()
1896 "assigned-addresses"); in fdt_win_setup()
1905 * Once done with root-level children let's move down to in fdt_win_setup()
1906 * simple-bus and its children. in fdt_win_setup()
1910 sb = node = fdt_find_compatible(node, "simple-bus", 0); in fdt_win_setup()
1916 * Next, move one more level down to internal-regs node (if in fdt_win_setup()
1918 * "simple-bus" compatible. in fdt_win_setup()
1921 node = fdt_find_compatible(node, "simple-bus", 0); in fdt_win_setup()
1942 if ((sb = OF_finddevice("cpu")) != -1) in fdt_fixup_busfreq()
1944 OF_setprop(sb, "bus-frequency", (void *)&freq, in fdt_fixup_busfreq()
1948 * This fixup sets the simple-bus bus-frequency property. in fdt_fixup_busfreq()
1950 if ((sb = fdt_find_compatible(root, "simple-bus", 1)) != 0) in fdt_fixup_busfreq()
1951 OF_setprop(sb, "bus-frequency", (void *)&freq, sizeof(freq)); in fdt_fixup_busfreq()
1963 /* Fix-up SoC ranges according to real fdt_immr_pa */ in fdt_fixup_ranges()
1964 if ((node = fdt_find_compatible(root, "simple-bus", 1)) != 0) { in fdt_fixup_ranges()
1986 /* Fix-up PCIe reg according to real PCIe registers' PA */ in fdt_fixup_ranges()
2007 /* Fix-up succeeded. May return and continue */ in fdt_fixup_ranges()
2024 { "mrvl,DB-88F6281", &fdt_fixup_busfreq },
2025 { "mrvl,DB-78460", &fdt_fixup_busfreq },
2026 { "mrvl,DB-78460", &fdt_fixup_ranges },
2034 if (soc_decode_win_spec->get_tclk != NULL) in get_tclk()
2035 return soc_decode_win_spec->get_tclk(); in get_tclk()
2037 return -1; in get_tclk()
2044 if (soc_decode_win_spec->get_cpu_freq != NULL) in get_cpu_freq()
2045 return soc_decode_win_spec->get_cpu_freq(); in get_cpu_freq()
2047 return -1; in get_cpu_freq()