MCPcopy Create free account
hub / github.com/F-Stack/f-stack / decode_win_idma_setup

Function decode_win_idma_setup

freebsd/arm/mv/mv_common.c:1888–1964  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1886}
1887
1888void
1889decode_win_idma_setup(u_long base)
1890{
1891 uint32_t br, sz;
1892 int i, j;
1893
1894 if (pm_is_disabled(CPU_PM_CTRL_IDMA))
1895 return;
1896 /*
1897 * Disable and clear all IDMA windows, revoke protection for all channels
1898 */
1899 for (i = 0; i < MV_WIN_IDMA_MAX; i++) {
1900 idma_bare_write(base, i, 1);
1901 win_idma_br_write(base, i, 0);
1902 win_idma_sz_write(base, i, 0);
1903 if (win_idma_can_remap(i) == 1)
1904 win_idma_har_write(base, i, 0);
1905 }
1906 for (i = 0; i < MV_IDMA_CHAN_MAX; i++)
1907 win_idma_cap_write(base, i, 0);
1908
1909 /*
1910 * Set up access to all active DRAM banks
1911 */
1912 for (i = 0; i < MV_WIN_DDR_MAX; i++)
1913 if (ddr_is_active(i)) {
1914 br = ddr_base(i) | (ddr_attr(i) << 8) | ddr_target(i);
1915 sz = ((ddr_size(i) - 1) & 0xffff0000);
1916
1917 /* Place DDR entries in non-remapped windows */
1918 for (j = 0; j < MV_WIN_IDMA_MAX; j++)
1919 if (win_idma_can_remap(j) != 1 &&
1920 idma_bare_read(base, j) == 1) {
1921 /* Configure window */
1922 win_idma_br_write(base, j, br);
1923 win_idma_sz_write(base, j, sz);
1924
1925 /* Set protection RW on all channels */
1926 idma_set_prot(base, j, 0x3);
1927
1928 /* Enable window */
1929 idma_bare_write(base, j, 0);
1930 break;
1931 }
1932 }
1933
1934 /*
1935 * Remaining targets -- from statically defined table
1936 */
1937 for (i = 0; i < idma_wins_no; i++)
1938 if (idma_wins[i].target > 0) {
1939 br = (idma_wins[i].base & 0xffff0000) |
1940 (idma_wins[i].attr << 8) | idma_wins[i].target;
1941 sz = ((idma_wins[i].size - 1) & 0xffff0000);
1942
1943 /* Set the first free IDMA window */
1944 for (j = 0; j < MV_WIN_IDMA_MAX; j++) {
1945 if (idma_bare_read(base, j) == 0)

Callers

nothing calls this directly

Calls 10

pm_is_disabledFunction · 0.85
idma_bare_writeFunction · 0.85
win_idma_can_remapFunction · 0.85
ddr_is_activeFunction · 0.85
ddr_baseFunction · 0.85
ddr_attrFunction · 0.85
ddr_targetFunction · 0.85
ddr_sizeFunction · 0.85
idma_bare_readFunction · 0.85
idma_set_protFunction · 0.85

Tested by

no test coverage detected