1f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
2f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug/* Microcode patches for the CPM as supplied by Motorola.
3f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug * This is the one for IIC/SPI.  There is a newer one that
4f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug * also relocates SMC2, but this would require additional changes
5f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug * to uart.c, so I am holding off on that for a moment.
6f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug */
7af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsov#include <linux/init.h>
8f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <linux/errno.h>
9f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <linux/sched.h>
10f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <linux/kernel.h>
11f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <linux/param.h>
12f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <linux/string.h>
13f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <linux/mm.h>
14f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <linux/interrupt.h>
15f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <asm/irq.h>
16f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <asm/mpc8xx.h>
17f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <asm/page.h>
18f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <asm/pgtable.h>
19f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#include <asm/8xx_immap.h>
2056825c88ff438f4dbb51a44591cc29e707fe783aAnton Vorontsov#include <asm/cpm.h>
21b5677d848cbb94220ac2cfd36d93bcdbe49c3280Jochen Friedrich#include <asm/cpm1.h>
22f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
23f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug/*
24f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug * I2C/SPI relocation patch arrays.
25f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug */
26f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
27f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#ifdef CONFIG_I2C_SPI_UCODE_PATCH
28f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
29af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovstatic uint patch_2000[] __initdata = {
30f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FFFEFD9,
31f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3FFD0000,
32f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FFB49F7,
33f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FF90000,
34f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FEFADF7,
35f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F89ADF7,
36f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FEFAFF7,
37f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F89AFF7,
38f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3A9CFBC8,
39f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xE7C0EDF0,
40f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x77C1E1BB,
41f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xF4DC7F1D,
42f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xABAD932F,
43f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4E08FDCF,
44f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6E0FAFF8,
45f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7CCF76CF,
46f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFD1FF9CF,
47f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xABF88DC6,
48f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAB5679F7,
49f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xB0937383,
50f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xDFCE79F7,
51f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xB091E6BB,
52f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xE5BBE74F,
53f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xB3FA6F0F,
54f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6FFB76CE,
55f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xEE0DF9CF,
56f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2BFBEFEF,
57f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xCFEEF9CF,
58f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x76CEAD24,
59f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x90B2DF9A,
60f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FDDD0BF,
61f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4BF847FD,
62f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7CCF76CE,
63f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xCFEF7E1F,
64f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7F1D7DFD,
65f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xF0B6EF71,
66f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FC177C1,
67f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFBC86079,
68f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xE722FBC8,
69f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FFFDFFF,
70f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FB2FFFB,
71f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFBC8F3C8,
72f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x94A67F01,
73f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7F1D5F39,
74f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAFE85F5E,
75f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFFDFDF96,
76f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xCB9FAF7D,
77f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FC1AFED,
78f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x8C1C5FC1,
79f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAFDD5FC3,
80f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xDF9A7EFD,
81f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xB0B25FB2,
82f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFFFEABAD,
83f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FB2FFFE,
84f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FCE600B,
85f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xE6BB600B,
86f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FCEDFC6,
87f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x27FBEFDF,
88f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FC8CFDE,
89f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3A9CE7C0,
90f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xEDF0F3C8,
91f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7F0154CD,
92f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7F1D2D3D,
93f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x363A7570,
94f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7E0AF1CE,
95f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x37EF2E68,
96f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FEE10EC,
97f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xADF8EFDE,
98f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xCFEAE52F,
99f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7D0FE12B,
100f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xF1CE5F65,
101f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7E0A4DF8,
102f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xCFEA5F72,
103f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7D0BEFEE,
104f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xCFEA5F74,
105f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xE522EFDE,
106f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F74CFDA,
107f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x0B627385,
108f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xDF627E0A,
109f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x30D8145B,
110f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xBFFFF3C8,
111f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5FFFDFFF,
112f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xA7F85F5E,
113f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xBFFE7F7D,
114f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x10D31450,
115f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F36BFFF,
116f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAF785F5E,
117f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xBFFDA7F8,
118f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F36BFFE,
119f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x77FD30C0,
120f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4E08FDCF,
121f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xE5FF6E0F,
122f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAFF87E1F,
123f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7E0FFD1F,
124f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xF1CF5F1B,
125f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xABF80D5E,
126f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F5EFFEF,
127f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x79F730A2,
128f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAFDD5F34,
129f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x47F85F34,
130f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAFED7FDD,
131f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x50B24978,
132f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x47FD7F1D,
133f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7DFD70AD,
134f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xEF717EC1,
135f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6BA47F01,
136f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2D267EFD,
137f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x30DE5F5E,
138f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFFFD5F5E,
139f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFFEF5F5E,
140f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFFDF0CA0,
141f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAFED0A9E,
142f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xAFDD0C3A,
143f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F3AAFBD,
144f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FBDB082,
145f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5F8247F8
146f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug};
147f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
148af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovstatic uint patch_2f00[] __initdata = {
149f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3E303430,
150f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x34343737,
151f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xABF7BF9B,
152f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x994B4FBD,
153f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xBD599493,
154f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x349FFF37,
155f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFB9B177D,
156f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xD9936956,
157f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xBBFDD697,
158f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xBDD2FD11,
159f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x31DB9BB3,
160f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x63139637,
161f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x93733693,
162f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x193137F7,
163f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x331737AF,
164f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7BB9B999,
165f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xBB197957,
166f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7FDFD3D5,
167f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x73B773F7,
168f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x37933B99,
169f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x1D115316,
170f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x99315315,
171f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x31694BF4,
172f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xFBDBD359,
173f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x31497353,
174f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x76956D69,
175f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7B9D9693,
176f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x13131979,
177f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x79376935
178f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug};
179f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#endif
180f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
181f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug/*
182f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug * I2C/SPI/SMC1 relocation patch arrays.
183f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug */
184f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
185f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH
186f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
187af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovstatic uint patch_2000[] __initdata = {
188f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3fff0000,
189f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3ffd0000,
190f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3ffb0000,
191f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3ff90000,
192f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f13eff8,
193f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5eb5eff8,
194f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f88adf7,
195f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5fefadf7,
196f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3a9cfbc8,
197f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x77cae1bb,
198f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf4de7fad,
199f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xabae9330,
200f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4e08fdcf,
201f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6e0faff8,
202f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7ccf76cf,
203f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfdaff9cf,
204f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xabf88dc8,
205f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xab5879f7,
206f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb0925d8d,
207f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdfd079f7,
208f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb090e6bb,
209f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe5bbe74f,
210f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x9e046f0f,
211f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6ffb76ce,
212f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xee0cf9cf,
213f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2bfbefef,
214f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfeef9cf,
215f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x76cead23,
216f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x90b3df99,
217f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fddd0c1,
218f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4bf847fd,
219f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7ccf76ce,
220f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfef77ca,
221f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7eaf7fad,
222f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7dfdf0b7,
223f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xef7a7fca,
224f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x77cafbc8,
225f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6079e722,
226f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfbc85fff,
227f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdfff5fb3,
228f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfffbfbc8,
229f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf3c894a5,
230f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe7c9edf9,
231f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7f9a7fad,
232f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f36afe8,
233f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f5bffdf,
234f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdf95cb9e,
235f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaf7d5fc3,
236f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafed8c1b,
237f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5fc3afdd,
238f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5fc5df99,
239f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7efdb0b3,
240f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5fb3fffe,
241f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xabae5fb3,
242f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfffe5fd0,
243f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x600be6bb,
244f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x600b5fd0,
245f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdfc827fb,
246f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefdf5fca,
247f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfde3a9c,
248f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe7c9edf9,
249f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf3c87f9e,
250f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x54ca7fed,
251f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2d3a3637,
252f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x756f7e9a,
253f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf1ce37ef,
254f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2e677fee,
255f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x10ebadf8,
256f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefdecfea,
257f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe52f7d9f,
258f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe12bf1ce,
259f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f647e9a,
260f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4df8cfea,
261f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f717d9b,
262f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefeecfea,
263f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f73e522,
264f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefde5f73,
265f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfda0b61,
266f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5d8fdf61,
267f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe7c9edf9,
268f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7e9a30d5,
269f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x1458bfff,
270f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf3c85fff,
271f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdfffa7f8,
272f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f5bbffe,
273f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7f7d10d0,
274f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x144d5f33,
275f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xbfffaf78,
276f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f5bbffd,
277f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xa7f85f33,
278f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xbffe77fd,
279f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x30bd4e08,
280f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfdcfe5ff,
281f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6e0faff8,
282f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7eef7e9f,
283f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfdeff1cf,
284f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f17abf8,
285f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x0d5b5f5b,
286f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xffef79f7,
287f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x309eafdd,
288f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f3147f8,
289f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f31afed,
290f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fdd50af,
291f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x497847fd,
292f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7f9e7fed,
293f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7dfd70a9,
294f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xef7e7ece,
295f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6ba07f9e,
296f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2d227efd,
297f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x30db5f5b,
298f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfffd5f5b,
299f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xffef5f5b,
300f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xffdf0c9c,
301f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafed0a9a,
302f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafdd0c37,
303f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f37afbd,
304f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fbdb081,
305f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5f8147f8,
306f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3a11e710,
307f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xedf0ccdd,
308f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf3186d0a,
309f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7f0e5f06,
310f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fedbb38,
311f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3afe7468,
312f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fedf4fc,
313f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x8ffbb951,
314f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb85f77fd,
315f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb0df5ddd,
316f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdefe7fed,
317f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x90e1e74d,
318f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6f0dcbf7,
319f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe7decfed,
320f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcb74cfed,
321f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfeddf6d,
322f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x91714f74,
323f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5dd2deef,
324f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x9e04e7df,
325f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefbb6ffb,
326f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe7ef7f0e,
327f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x9e097fed,
328f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xebdbeffa,
329f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xeb54affb,
330f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fea90d7,
331f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7e0cf0c3,
332f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xbffff318,
333f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5fffdfff,
334f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xac59efea,
335f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fce1ee5,
336f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe2ff5ee1,
337f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaffbe2ff,
338f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5ee3affb,
339f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf9cc7d0f,
340f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaef8770f,
341f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7d0fb0c6,
342f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xeffbbfff,
343f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfef5ede,
344f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7d0fbfff,
345f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5ede4cf8,
346f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fddd0bf,
347f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x49f847fd,
348f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7efdf0bb,
349f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fedfffd,
350f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7dfdf0b7,
351f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xef7e7e1e,
352f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5ede7f0e,
353f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3a11e710,
354f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xedf0ccab,
355f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfb18ad2e,
356f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x1ea9bbb8,
357f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x74283b7e,
358f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x73c2e4bb,
359f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2ada4fb8,
360f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdc21e4bb,
361f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb2a1ffbf,
362f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5e2c43f8,
363f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfc87e1bb,
364f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe74ffd91,
365f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6f0f4fe8,
366f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xc7ba32e2,
367f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf396efeb,
368f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x600b4f78,
369f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe5bb760b,
370f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x53acaef8,
371f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4ef88b0e,
372f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfef9e09,
373f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xabf8751f,
374f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefef5bac,
375f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x741f4fe8,
376f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x751e760d,
377f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fdbf081,
378f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x741cafce,
379f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefcc7fce,
380f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x751e70ac,
381f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x741ce7bb,
382f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3372cfed,
383f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafdbefeb,
384f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe5bb760b,
385f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x53f2aef8,
386f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafe8e7eb,
387f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4bf8771e,
388f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7e247fed,
389f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4fcbe2cc,
390f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fbc30a9,
391f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7b0f7a0f,
392f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x34d577fd,
393f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x308b5db7,
394f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xde553e5f,
395f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaf78741f,
396f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x741f30f0,
397f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfef5e2c,
398f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x741f3eac,
399f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafb8771e,
400f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5e677fed,
401f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x0bd3e2cc,
402f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x741ccfec,
403f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe5ca53cd,
404f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6fcb4f74,
405f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5dadde4b,
406f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2ab63d38,
407f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4bb3de30,
408f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x751f741c,
409f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6c42effa,
410f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefea7fce,
411f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6ffc30be,
412f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefec3fca,
413f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x30b3de2e,
414f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xadf85d9e,
415f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaf7daefd,
416f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5d9ede2e,
417f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5d9eafdd,
418f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x761f10ac,
419f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x1da07efd,
420f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x30adfffe,
421f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4908fb18,
422f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5fffdfff,
423f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafbb709b,
424f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4ef85e67,
425f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xadf814ad,
426f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7a0f70ad,
427f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfef50ad,
428f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7a0fde30,
429f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5da0afed,
430f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3c12780f,
431f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefef780f,
432f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefef790f,
433f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xa7f85e0f,
434f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xffef790f,
435f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefef790f,
436f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x14adde2e,
437f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5d9eadfd,
438f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5e2dfffb,
439f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe79addfd,
440f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xeff96079,
441f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x607ae79a,
442f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xddfceff9,
443f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x60795dff,
444f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x607acfef,
445f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefefefdf,
446f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefbfef7f,
447f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xeeffedff,
448f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xebffe7ff,
449f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafefafdf,
450f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xafbfaf7f,
451f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaeffadff,
452f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xabffa7ff,
453f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6fef6fdf,
454f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6fbf6f7f,
455f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6eff6dff,
456f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6bff67ff,
457f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2fef2fdf,
458f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2fbf2f7f,
459f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2eff2dff,
460f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x2bff27ff,
461f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4e08fd1f,
462f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe5ff6e0f,
463f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaff87eef,
464f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7e0ffdef,
465f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf11f6079,
466f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xabf8f542,
467f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7e0af11c,
468f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x37cfae3a,
469f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fec90be,
470f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xadf8efdc,
471f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfeae52f,
472f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7d0fe12b,
473f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf11c6079,
474f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7e0a4df8,
475f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfea5dc4,
476f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7d0befec,
477f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfea5dc6,
478f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe522efdc,
479f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x5dc6cfda,
480f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4e08fd1f,
481f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6e0faff8,
482f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7c1f761f,
483f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfdeff91f,
484f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6079abf8,
485f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x761cee24,
486f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf91f2bfb,
487f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefefcfec,
488f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf91f6079,
489f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x761c27fb,
490f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xefdf5da7,
491f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcfdc7fdd,
492f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xd09c4bf8,
493f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x47fd7c1f,
494f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x761ccfcf,
495f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7eef7fed,
496f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7dfdf093,
497f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xef7e7f1e,
498f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x771efb18,
499f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6079e722,
500f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe6bbe5bb,
501f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xae0ae5bb,
502f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x600bae85,
503f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe2bbe2bb,
504f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe2bbe2bb,
505f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaf02e2bb,
506f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe2bb2ff9,
507f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6079e2bb
508f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug};
509f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
510af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovstatic uint patch_2f00[] __initdata = {
511f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x30303030,
512f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3e3e3434,
513f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xabbf9b99,
514f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4b4fbdbd,
515f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x59949334,
516f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x9fff37fb,
517f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x9b177dd9,
518f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x936956bb,
519f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfbdd697b,
520f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdd2fd113,
521f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x1db9f7bb,
522f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x36313963,
523f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x79373369,
524f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3193137f,
525f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7331737a,
526f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf7bb9b99,
527f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x9bb19795,
528f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x77fdfd3d,
529f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x573b773f,
530f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x737933f7,
531f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb991d115,
532f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x31699315,
533f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x31531694,
534f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xbf4fbdbd,
535f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x35931497,
536f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x35376956,
537f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xbd697b9d,
538f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x96931313,
539f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x19797937,
540f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6935af78,
541f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb9b3baa3,
542f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb8788683,
543f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x368f78f7,
544f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x87778733,
545f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3ffffb3b,
546f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x8e8f78b8,
547f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x1d118e13,
548f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf3ff3f8b,
549f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x6bd8e173,
550f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xd1366856,
551f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x68d1687b,
552f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3daf78b8,
553f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3a3a3f87,
554f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x8f81378f,
555f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf876f887,
556f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x77fd8778,
557f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x737de8d6,
558f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xbbf8bfff,
559f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xd8df87f7,
560f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xfd876f7b,
561f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x8bfff8bd,
562f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x8683387d,
563f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb873d87b,
564f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3b8fd7f8,
565f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf7338883,
566f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xbb8ee1f8,
567f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xef837377,
568f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3337b836,
569f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x817d11f8,
570f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7378b878,
571f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xd3368b7d,
572f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xed731b7d,
573f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x833731f3,
574f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf22f3f23
575f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug};
576f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
577af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovstatic uint patch_2e00[] __initdata = {
578f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x27eeeeee,
579f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xeeeeeeee,
580f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xeeeeeeee,
581f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xeeeeeeee,
582f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xee4bf4fb,
583f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdbd259bb,
584f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x1979577f,
585f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xdfd2d573,
586f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xb773f737,
587f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x4b4fbdbd,
588f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x25b9b177,
589f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xd2d17376,
590f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x956bbfdd,
591f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x697bdd2f,
592f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xff9f79ff,
593f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xff9ff22f
594f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug};
595f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#endif
596f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
597f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug/*
598f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug *  USB SOF patch arrays.
599f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug */
600f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
601f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#ifdef CONFIG_USB_SOF_UCODE_PATCH
602f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
603af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovstatic uint patch_2000[] __initdata = {
604f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7fff0000,
605f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7ffd0000,
606f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x7ffb0000,
607f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x49f7ba5b,
608f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xba383ffb,
609f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xf9b8b46d,
610f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe5ab4e07,
611f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xaf77bffe,
612f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3f7bbf79,
613f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xba5bba38,
614f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xe7676076,
615f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x60750000
616f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug};
617f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
618af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovstatic uint patch_2f00[] __initdata = {
619f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0x3030304c,
620f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xcab9e441,
621f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	0xa1aaf220
622f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug};
623f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#endif
624f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
625af71bcfeaaaad92147922282341d394093a4fc9bAnton Vorontsovvoid __init cpm_load_patch(cpm8xx_t *cp)
626f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug{
627f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	volatile uint		*dp;		/* Dual-ported RAM. */
628f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	volatile cpm8xx_t	*commproc;
6292069a6ae19a34d96cc9cb284eb645b165138e03fAnton Vorontsov#if defined(CONFIG_I2C_SPI_UCODE_PATCH) || \
6302069a6ae19a34d96cc9cb284eb645b165138e03fAnton Vorontsov    defined(CONFIG_I2C_SPI_SMC1_UCODE_PATCH)
631f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	volatile iic_t		*iip;
63256825c88ff438f4dbb51a44591cc29e707fe783aAnton Vorontsov	volatile struct spi_pram *spp;
6332069a6ae19a34d96cc9cb284eb645b165138e03fAnton Vorontsov#ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH
634f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	volatile smc_uart_t	*smp;
6352069a6ae19a34d96cc9cb284eb645b165138e03fAnton Vorontsov#endif
6362069a6ae19a34d96cc9cb284eb645b165138e03fAnton Vorontsov#endif
637f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	int	i;
638f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
639f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc = cp;
640f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
641f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#ifdef CONFIG_USB_SOF_UCODE_PATCH
642f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_rccr = 0;
643f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
644f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	dp = (uint *)(commproc->cp_dpmem);
645f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	for (i=0; i<(sizeof(patch_2000)/4); i++)
646f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		*dp++ = patch_2000[i];
647f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
648f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	dp = (uint *)&(commproc->cp_dpmem[0x0f00]);
649f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	for (i=0; i<(sizeof(patch_2f00)/4); i++)
650f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		*dp++ = patch_2f00[i];
651f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
652f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_rccr = 0x0009;
653f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
654f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	printk("USB SOF microcode patch installed\n");
655f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#endif /* CONFIG_USB_SOF_UCODE_PATCH */
656f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
657f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#if defined(CONFIG_I2C_SPI_UCODE_PATCH) || \
658f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug    defined(CONFIG_I2C_SPI_SMC1_UCODE_PATCH)
659f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
660f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_rccr = 0;
661f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
662f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	dp = (uint *)(commproc->cp_dpmem);
663f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	for (i=0; i<(sizeof(patch_2000)/4); i++)
664f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		*dp++ = patch_2000[i];
665f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
666f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	dp = (uint *)&(commproc->cp_dpmem[0x0f00]);
667f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	for (i=0; i<(sizeof(patch_2f00)/4); i++)
668f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		*dp++ = patch_2f00[i];
669f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
670f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	iip = (iic_t *)&commproc->cp_dparam[PROFF_IIC];
671f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug# define RPBASE 0x0500
672f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	iip->iic_rpbase = RPBASE;
673f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
674f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	/* Put SPI above the IIC, also 32-byte aligned.
675f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	*/
676f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	i = (RPBASE + sizeof(iic_t) + 31) & ~31;
67756825c88ff438f4dbb51a44591cc29e707fe783aAnton Vorontsov	spp = (struct spi_pram *)&commproc->cp_dparam[PROFF_SPI];
67856825c88ff438f4dbb51a44591cc29e707fe783aAnton Vorontsov	spp->rpbase = i;
679f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
680f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug# if defined(CONFIG_I2C_SPI_UCODE_PATCH)
681f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr1 = 0x802a;
682f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr2 = 0x8028;
683f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr3 = 0x802e;
684f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr4 = 0x802c;
685f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_rccr = 1;
686f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
687f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	printk("I2C/SPI microcode patch installed.\n");
688f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug# endif /* CONFIG_I2C_SPI_UCODE_PATCH */
689f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
690f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug# if defined(CONFIG_I2C_SPI_SMC1_UCODE_PATCH)
691f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
692f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	dp = (uint *)&(commproc->cp_dpmem[0x0e00]);
693f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	for (i=0; i<(sizeof(patch_2e00)/4); i++)
694f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		*dp++ = patch_2e00[i];
695f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
696f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr1 = 0x8080;
697f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr2 = 0x808a;
698f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr3 = 0x8028;
699f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_cpmcr4 = 0x802a;
700f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_rccr = 3;
701f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
702f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	smp = (smc_uart_t *)&commproc->cp_dparam[PROFF_SMC1];
703f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	smp->smc_rpbase = 0x1FC0;
704f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
705f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	printk("I2C/SPI/SMC1 microcode patch installed.\n");
706f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug# endif /* CONFIG_I2C_SPI_SMC1_UCODE_PATCH) */
707f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
708f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#endif /* some variation of the I2C/SPI patch was selected */
709f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug}
710f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
711f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug/*
712f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug *  Take this entire routine out, since no one calls it and its
713f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug * logic is suspect.
714f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug */
715f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
716f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#if 0
717f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordugvoid
718f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordugverify_patch(volatile immap_t *immr)
719f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug{
720f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	volatile uint		*dp;
721f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	volatile cpm8xx_t	*commproc;
722f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	int i;
723f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
724f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc = (cpm8xx_t *)&immr->im_cpm;
725f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
726f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	printk("cp_rccr %x\n", commproc->cp_rccr);
727f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_rccr = 0;
728f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
729f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	dp = (uint *)(commproc->cp_dpmem);
730f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	for (i=0; i<(sizeof(patch_2000)/4); i++)
731f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		if (*dp++ != patch_2000[i]) {
732f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			printk("patch_2000 bad at %d\n", i);
733f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			dp--;
734f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			printk("found 0x%X, wanted 0x%X\n", *dp, patch_2000[i]);
735f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			break;
736f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		}
737f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
738f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	dp = (uint *)&(commproc->cp_dpmem[0x0f00]);
739f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	for (i=0; i<(sizeof(patch_2f00)/4); i++)
740f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		if (*dp++ != patch_2f00[i]) {
741f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			printk("patch_2f00 bad at %d\n", i);
742f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			dp--;
743f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			printk("found 0x%X, wanted 0x%X\n", *dp, patch_2f00[i]);
744f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug			break;
745f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug		}
746f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug
747f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug	commproc->cp_rccr = 0x0009;
748f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug}
749f2a0bd3753dad7ea4605ebd5435716b39e9f92bbVitaly Bordug#endif
750