Lines Matching refs:emif_data
48 static u32 sram_suspend_address(struct ti_emif_data *emif_data, in sram_suspend_address() argument
51 return (emif_data->ti_emif_sram_virt + in sram_suspend_address()
55 static phys_addr_t sram_resume_address(struct ti_emif_data *emif_data, in sram_resume_address() argument
58 return ((unsigned long)emif_data->ti_emif_sram_phys + in sram_resume_address()
62 static void ti_emif_free_sram(struct ti_emif_data *emif_data) in ti_emif_free_sram() argument
64 gen_pool_free(emif_data->sram_pool_code, emif_data->ti_emif_sram_virt, in ti_emif_free_sram()
66 gen_pool_free(emif_data->sram_pool_data, in ti_emif_free_sram()
67 emif_data->ti_emif_sram_data_virt, in ti_emif_free_sram()
72 struct ti_emif_data *emif_data) in ti_emif_alloc_sram() argument
77 emif_data->sram_pool_code = of_gen_pool_get(np, "sram", 0); in ti_emif_alloc_sram()
78 if (!emif_data->sram_pool_code) { in ti_emif_alloc_sram()
83 emif_data->ti_emif_sram_virt = in ti_emif_alloc_sram()
84 gen_pool_alloc(emif_data->sram_pool_code, in ti_emif_alloc_sram()
86 if (!emif_data->ti_emif_sram_virt) { in ti_emif_alloc_sram()
92 emif_data->ti_emif_sram_phys = in ti_emif_alloc_sram()
93 gen_pool_virt_to_phys(emif_data->sram_pool_code, in ti_emif_alloc_sram()
94 emif_data->ti_emif_sram_virt); in ti_emif_alloc_sram()
97 emif_data->sram_pool_data = of_gen_pool_get(np, "sram", 1); in ti_emif_alloc_sram()
98 if (!emif_data->sram_pool_data) { in ti_emif_alloc_sram()
104 emif_data->ti_emif_sram_data_virt = in ti_emif_alloc_sram()
105 gen_pool_alloc(emif_data->sram_pool_data, in ti_emif_alloc_sram()
107 if (!emif_data->ti_emif_sram_data_virt) { in ti_emif_alloc_sram()
114 emif_data->ti_emif_sram_data_phys = in ti_emif_alloc_sram()
115 gen_pool_virt_to_phys(emif_data->sram_pool_data, in ti_emif_alloc_sram()
116 emif_data->ti_emif_sram_data_virt); in ti_emif_alloc_sram()
121 emif_data->pm_functions.save_context = in ti_emif_alloc_sram()
122 sram_suspend_address(emif_data, in ti_emif_alloc_sram()
124 emif_data->pm_functions.enter_sr = in ti_emif_alloc_sram()
125 sram_suspend_address(emif_data, in ti_emif_alloc_sram()
127 emif_data->pm_functions.abort_sr = in ti_emif_alloc_sram()
128 sram_suspend_address(emif_data, in ti_emif_alloc_sram()
135 emif_data->pm_functions.restore_context = in ti_emif_alloc_sram()
136 sram_resume_address(emif_data, in ti_emif_alloc_sram()
138 emif_data->pm_functions.exit_sr = in ti_emif_alloc_sram()
139 sram_resume_address(emif_data, in ti_emif_alloc_sram()
142 emif_data->pm_data.regs_virt = in ti_emif_alloc_sram()
143 (struct emif_regs_amx3 *)emif_data->ti_emif_sram_data_virt; in ti_emif_alloc_sram()
144 emif_data->pm_data.regs_phys = emif_data->ti_emif_sram_data_phys; in ti_emif_alloc_sram()
149 gen_pool_free(emif_data->sram_pool_code, emif_data->ti_emif_sram_virt, in ti_emif_alloc_sram()
154 static int ti_emif_push_sram(struct device *dev, struct ti_emif_data *emif_data) in ti_emif_push_sram() argument
159 copy_addr = sram_exec_copy(emif_data->sram_pool_code, in ti_emif_push_sram()
160 (void *)emif_data->ti_emif_sram_virt, in ti_emif_push_sram()
167 data_addr = sram_suspend_address(emif_data, in ti_emif_push_sram()
169 copy_addr = sram_exec_copy(emif_data->sram_pool_code, in ti_emif_push_sram()
171 &emif_data->pm_data, in ti_emif_push_sram()
172 sizeof(emif_data->pm_data)); in ti_emif_push_sram()
188 static void ti_emif_configure_sr_delay(struct ti_emif_data *emif_data) in ti_emif_configure_sr_delay() argument
191 (emif_data->pm_data.ti_emif_base_addr_virt + in ti_emif_configure_sr_delay()
195 (emif_data->pm_data.ti_emif_base_addr_virt + in ti_emif_configure_sr_delay()
286 struct ti_emif_data *emif_data; in ti_emif_probe() local
288 emif_data = devm_kzalloc(dev, sizeof(*emif_data), GFP_KERNEL); in ti_emif_probe()
289 if (!emif_data) in ti_emif_probe()
296 emif_data->pm_data.ti_emif_sram_config = (unsigned long)match->data; in ti_emif_probe()
299 emif_data->pm_data.ti_emif_base_addr_virt = devm_ioremap_resource(dev, in ti_emif_probe()
301 if (IS_ERR(emif_data->pm_data.ti_emif_base_addr_virt)) { in ti_emif_probe()
302 ret = PTR_ERR(emif_data->pm_data.ti_emif_base_addr_virt); in ti_emif_probe()
306 emif_data->pm_data.ti_emif_base_addr_phys = res->start; in ti_emif_probe()
308 ti_emif_configure_sr_delay(emif_data); in ti_emif_probe()
310 ret = ti_emif_alloc_sram(dev, emif_data); in ti_emif_probe()
314 ret = ti_emif_push_sram(dev, emif_data); in ti_emif_probe()
318 emif_instance = emif_data; in ti_emif_probe()
323 ti_emif_free_sram(emif_data); in ti_emif_probe()
330 struct ti_emif_data *emif_data = emif_instance; in ti_emif_remove() local
334 ti_emif_free_sram(emif_data); in ti_emif_remove()