17 #include <linux/sched.h>
25 static void *s5p_mfc_bitproc_buf;
26 static size_t s5p_mfc_bitproc_phys;
27 static unsigned char *s5p_mfc_bitproc_virt;
33 size_t bank2_base_phys;
44 mfc_err(
"Firmware is not present in the /lib/firmware directory nor compiled in kernel\n");
49 mfc_err(
"MFC firmware is too big to be loaded\n");
53 if (s5p_mfc_bitproc_buf) {
54 mfc_err(
"Attempting to allocate firmware when it seems that it is already loaded\n");
60 if (IS_ERR(s5p_mfc_bitproc_buf)) {
61 s5p_mfc_bitproc_buf =
NULL;
62 mfc_err(
"Allocating bitprocessor buffer failed\n");
66 s5p_mfc_bitproc_phys = s5p_mfc_mem_cookie(
69 mfc_err(
"The base memory for bank 1 is not aligned to 128KB\n");
71 s5p_mfc_bitproc_phys = 0;
72 s5p_mfc_bitproc_buf =
NULL;
77 if (!s5p_mfc_bitproc_virt) {
78 mfc_err(
"Bitprocessor memory remap failed\n");
80 s5p_mfc_bitproc_phys = 0;
81 s5p_mfc_bitproc_buf =
NULL;
85 dev->
bank1 = s5p_mfc_bitproc_phys;
92 s5p_mfc_bitproc_phys = 0;
93 s5p_mfc_bitproc_buf =
NULL;
94 mfc_err(
"Allocating bank2 base failed\n");
98 bank2_base_phys = s5p_mfc_mem_cookie(
102 mfc_err(
"The base memory for bank 2 is not aligned to 128KB\n");
104 s5p_mfc_bitproc_phys = 0;
105 s5p_mfc_bitproc_buf =
NULL;
137 mfc_err(
"Firmware is not present in the /lib/firmware directory nor compiled in kernel\n");
141 mfc_err(
"MFC firmware is too big to be loaded\n");
145 if (s5p_mfc_bitproc_buf ==
NULL || s5p_mfc_bitproc_phys == 0) {
146 mfc_err(
"MFC firmware is not allocated or was not mapped correctly\n");
162 if (!s5p_mfc_bitproc_buf)
165 s5p_mfc_bitproc_virt =
NULL;
166 s5p_mfc_bitproc_phys = 0;
167 s5p_mfc_bitproc_buf =
NULL;
174 unsigned int mc_status;
211 mfc_err(
"Timeout while resetting MFC\n");
217 }
while (mc_status & 0x3);
235 mfc_debug(2,
"Bank1: %08x, Bank2: %08x\n",
240 static inline void s5p_mfc_clear_cmds(
struct s5p_mfc_dev *dev)
260 if (!s5p_mfc_bitproc_buf)
268 mfc_err(
"Failed to reset MFC - timeout\n");
273 s5p_mfc_init_memctrl(dev);
275 s5p_mfc_clear_cmds(dev);
282 mfc_debug(2,
"Will now wait for completion of firmware transfer\n");
284 mfc_err(
"Failed to load firmware\n");
293 mfc_err(
"Failed to send command to MFC - timeout\n");
298 mfc_debug(2,
"Ok, now will write a command to init the system\n");
300 mfc_err(
"Failed to load firmware\n");
309 mfc_err(
"Failed to init firmware - error: %d int: %d\n",
320 mfc_debug(2,
"MFC F/W version : %02xyy, %02xmm, %02xdd\n",
321 (ver >> 16) & 0xFF, (ver >> 8) & 0xFF, ver & 0xFF);
348 mfc_err(
"Failed to send command to MFC - timeout\n");
378 mfc_err(
"Failed to reset MFC - timeout\n");
383 s5p_mfc_init_memctrl(dev);
385 s5p_mfc_clear_cmds(dev);
390 mfc_err(
"Failed to send command to MFC - timeout\n");
398 mfc_debug(2,
"Ok, now will write a command to wakeup the system\n");
400 mfc_err(
"Failed to load firmware\n");