diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-11-25 01:59:58 +0100 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-11-25 02:25:56 +0100 |
commit | 1361c6221d8256edab90ead704e7ea8d1e65b011 (patch) | |
tree | 4f8b2dc86c5189b9cb8eda7d759d8b8e572598e0 /arch/powerpc/platforms/8xx/micropatch.c | |
parent | b2a0ea8d882d8d340ae7e905b148f9a2224de290 (diff) | |
download | kernel_replicant_linux-debian/v5.10.70.tar.gz kernel_replicant_linux-debian/v5.10.70.tar.bz2 kernel_replicant_linux-debian/v5.10.70.zip |
Remove binaries that lack corresponding source codedebian/v5.10.70
While the firmwares being removed here are typically
under GPLv2 compatible free software licenses, they lack
corresponding source code, so they are practically speaking
not free software as we lack the source code and/or
toolchains that are required for modifying them.
And Replicant does not want to ship nonfree firmwares
because Replicant is a fully free software Android
distribution.
In addition, Replicant follows the GNU Free System
Distributions Guidelines (FSDG)[1].
And it is also directly supported by the FSF in various
ways[2] (they help with fundraising, we have a virtual
machine in the FSF infrastructure, etc).
So willingly shipping nonfree software (including firmwares)
is completely out of the question.
Since the Replicant 11 kernel is now based on Linux, we can
leverage projects that remove various nonfree firmwares
found in Linux.
Both linux-libre and Debian kernels remove theses nonfree
firmwares. Both linux-libre and Debian have a policy of
not including nonfree software so if there is any nonfree
software found, it's a bug and they need to be removed.
The Replicant steering commitee and the other people present
in the Replicant Contributors Meeting 2019 in Paris (me
included) decided againt blocking the usage of nonfree
firmwares.
Blocking nonfree firmwares is not required by the GNU Free
System Distribution Guidelines (FSDG).
The internal WiFi interface (and also some less important
hardware components) don't work without nonfree firmwares.
On some devices supported by Replicant, like the Galaxy SIII
(GT-I9300) and the Galaxy SIII 4G (GT-I9305), external WiFi
dongles compatible with the ath9k_htc driver do work fine
with a free firmware in Replicant 6.
And Replicant strongly advises its users to use such
WiFi dongles to get WiFi working.
But despite that, many users, by themselves, without any
guidance or instructions from Replicant, still do install
nonfree firmwares to get the internal WiFi working (and
potentially other hardware components too), probably because
external WiFi dongles are not very convenient to use and
consume a lot of battery.
So until we manage to replace the nonfree firmwares with
free firmwares we still need to not block users who still
install nonfree firmwares on their own, knowing that the
firmwares are nonfree and that they don't come from
Replicant at all.
In addition, if a decision to block nonfree firmwares is
taken, we would need to consult people about it and also to
have the Replicant steering have the final word on the
decision as it could potentially have a major impact on
users.
Because of that linux-libre cannot be used as-is.
So it either need to be modified or we need to find another
way to remove the nonfree firmwares.
It turned out difficult to modify linux-libre to remove the
nonfree firmwares without removing the loading of nonfree
firmwares, so here we used the ./debian/bin/genorig.py
Debian script against the kernel_replicant_linux git
repository to generate a linux_5.10.70.orig.tar.xz tarball
that was then used to produce this patch.
I used the Debian Linux repository[3] at the following
commit for that:
commit 12d3fa3c63f642e03da71e173d614ca7d2a844ba (HEAD, tag: debian/5.10.70-1)
Author: Salvatore Bonaccorso <carnil@debian.org>
Date: Thu Sep 30 21:36:41 2021 +0200
Prepare to release linux (5.10.70-1).
References:
-----------
[1]https://www.gnu.org/distros/free-system-distribution-guidelines.html
[2]https://redmine.replicant.us/projects/replicant/wiki/SteeringCommittee
[3]https://salsa.debian.org/kernel-team/linux.git
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Diffstat (limited to 'arch/powerpc/platforms/8xx/micropatch.c')
-rw-r--r-- | arch/powerpc/platforms/8xx/micropatch.c | 388 |
1 files changed, 0 insertions, 388 deletions
diff --git a/arch/powerpc/platforms/8xx/micropatch.c b/arch/powerpc/platforms/8xx/micropatch.c deleted file mode 100644 index aef179fcbd4f..000000000000 --- a/arch/powerpc/platforms/8xx/micropatch.c +++ /dev/null @@ -1,388 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 - -/* - * Microcode patches for the CPM as supplied by Motorola. - * This is the one for IIC/SPI. There is a newer one that - * also relocates SMC2, but this would require additional changes - * to uart.c, so I am holding off on that for a moment. - */ -#include <linux/init.h> -#include <linux/errno.h> -#include <linux/sched.h> -#include <linux/kernel.h> -#include <linux/param.h> -#include <linux/string.h> -#include <linux/mm.h> -#include <linux/interrupt.h> -#include <asm/irq.h> -#include <asm/page.h> -#include <asm/8xx_immap.h> -#include <asm/cpm.h> -#include <asm/cpm1.h> - -struct patch_params { - ushort rccr; - ushort cpmcr1; - ushort cpmcr2; - ushort cpmcr3; - ushort cpmcr4; -}; - -/* - * I2C/SPI relocation patch arrays. - */ - -#ifdef CONFIG_I2C_SPI_UCODE_PATCH - -static char patch_name[] __initdata = "I2C/SPI"; - -static struct patch_params patch_params __initdata = { - 1, 0x802a, 0x8028, 0x802e, 0x802c, -}; - -static uint patch_2000[] __initdata = { - 0x7FFFEFD9, 0x3FFD0000, 0x7FFB49F7, 0x7FF90000, - 0x5FEFADF7, 0x5F89ADF7, 0x5FEFAFF7, 0x5F89AFF7, - 0x3A9CFBC8, 0xE7C0EDF0, 0x77C1E1BB, 0xF4DC7F1D, - 0xABAD932F, 0x4E08FDCF, 0x6E0FAFF8, 0x7CCF76CF, - 0xFD1FF9CF, 0xABF88DC6, 0xAB5679F7, 0xB0937383, - 0xDFCE79F7, 0xB091E6BB, 0xE5BBE74F, 0xB3FA6F0F, - 0x6FFB76CE, 0xEE0DF9CF, 0x2BFBEFEF, 0xCFEEF9CF, - 0x76CEAD24, 0x90B2DF9A, 0x7FDDD0BF, 0x4BF847FD, - 0x7CCF76CE, 0xCFEF7E1F, 0x7F1D7DFD, 0xF0B6EF71, - 0x7FC177C1, 0xFBC86079, 0xE722FBC8, 0x5FFFDFFF, - 0x5FB2FFFB, 0xFBC8F3C8, 0x94A67F01, 0x7F1D5F39, - 0xAFE85F5E, 0xFFDFDF96, 0xCB9FAF7D, 0x5FC1AFED, - 0x8C1C5FC1, 0xAFDD5FC3, 0xDF9A7EFD, 0xB0B25FB2, - 0xFFFEABAD, 0x5FB2FFFE, 0x5FCE600B, 0xE6BB600B, - 0x5FCEDFC6, 0x27FBEFDF, 0x5FC8CFDE, 0x3A9CE7C0, - 0xEDF0F3C8, 0x7F0154CD, 0x7F1D2D3D, 0x363A7570, - 0x7E0AF1CE, 0x37EF2E68, 0x7FEE10EC, 0xADF8EFDE, - 0xCFEAE52F, 0x7D0FE12B, 0xF1CE5F65, 0x7E0A4DF8, - 0xCFEA5F72, 0x7D0BEFEE, 0xCFEA5F74, 0xE522EFDE, - 0x5F74CFDA, 0x0B627385, 0xDF627E0A, 0x30D8145B, - 0xBFFFF3C8, 0x5FFFDFFF, 0xA7F85F5E, 0xBFFE7F7D, - 0x10D31450, 0x5F36BFFF, 0xAF785F5E, 0xBFFDA7F8, - 0x5F36BFFE, 0x77FD30C0, 0x4E08FDCF, 0xE5FF6E0F, - 0xAFF87E1F, 0x7E0FFD1F, 0xF1CF5F1B, 0xABF80D5E, - 0x5F5EFFEF, 0x79F730A2, 0xAFDD5F34, 0x47F85F34, - 0xAFED7FDD, 0x50B24978, 0x47FD7F1D, 0x7DFD70AD, - 0xEF717EC1, 0x6BA47F01, 0x2D267EFD, 0x30DE5F5E, - 0xFFFD5F5E, 0xFFEF5F5E, 0xFFDF0CA0, 0xAFED0A9E, - 0xAFDD0C3A, 0x5F3AAFBD, 0x7FBDB082, 0x5F8247F8 -}; - -static uint patch_2f00[] __initdata = { - 0x3E303430, 0x34343737, 0xABF7BF9B, 0x994B4FBD, - 0xBD599493, 0x349FFF37, 0xFB9B177D, 0xD9936956, - 0xBBFDD697, 0xBDD2FD11, 0x31DB9BB3, 0x63139637, - 0x93733693, 0x193137F7, 0x331737AF, 0x7BB9B999, - 0xBB197957, 0x7FDFD3D5, 0x73B773F7, 0x37933B99, - 0x1D115316, 0x99315315, 0x31694BF4, 0xFBDBD359, - 0x31497353, 0x76956D69, 0x7B9D9693, 0x13131979, - 0x79376935 -}; - -static uint patch_2e00[] __initdata = {}; -#endif - -/* - * I2C/SPI/SMC1 relocation patch arrays. - */ - -#ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH - -static char patch_name[] __initdata = "I2C/SPI/SMC1"; - -static struct patch_params patch_params __initdata = { - 3, 0x8080, 0x808a, 0x8028, 0x802a, -}; - -static uint patch_2000[] __initdata = { - 0x3fff0000, 0x3ffd0000, 0x3ffb0000, 0x3ff90000, - 0x5f13eff8, 0x5eb5eff8, 0x5f88adf7, 0x5fefadf7, - 0x3a9cfbc8, 0x77cae1bb, 0xf4de7fad, 0xabae9330, - 0x4e08fdcf, 0x6e0faff8, 0x7ccf76cf, 0xfdaff9cf, - 0xabf88dc8, 0xab5879f7, 0xb0925d8d, 0xdfd079f7, - 0xb090e6bb, 0xe5bbe74f, 0x9e046f0f, 0x6ffb76ce, - 0xee0cf9cf, 0x2bfbefef, 0xcfeef9cf, 0x76cead23, - 0x90b3df99, 0x7fddd0c1, 0x4bf847fd, 0x7ccf76ce, - 0xcfef77ca, 0x7eaf7fad, 0x7dfdf0b7, 0xef7a7fca, - 0x77cafbc8, 0x6079e722, 0xfbc85fff, 0xdfff5fb3, - 0xfffbfbc8, 0xf3c894a5, 0xe7c9edf9, 0x7f9a7fad, - 0x5f36afe8, 0x5f5bffdf, 0xdf95cb9e, 0xaf7d5fc3, - 0xafed8c1b, 0x5fc3afdd, 0x5fc5df99, 0x7efdb0b3, - 0x5fb3fffe, 0xabae5fb3, 0xfffe5fd0, 0x600be6bb, - 0x600b5fd0, 0xdfc827fb, 0xefdf5fca, 0xcfde3a9c, - 0xe7c9edf9, 0xf3c87f9e, 0x54ca7fed, 0x2d3a3637, - 0x756f7e9a, 0xf1ce37ef, 0x2e677fee, 0x10ebadf8, - 0xefdecfea, 0xe52f7d9f, 0xe12bf1ce, 0x5f647e9a, - 0x4df8cfea, 0x5f717d9b, 0xefeecfea, 0x5f73e522, - 0xefde5f73, 0xcfda0b61, 0x5d8fdf61, 0xe7c9edf9, - 0x7e9a30d5, 0x1458bfff, 0xf3c85fff, 0xdfffa7f8, - 0x5f5bbffe, 0x7f7d10d0, 0x144d5f33, 0xbfffaf78, - 0x5f5bbffd, 0xa7f85f33, 0xbffe77fd, 0x30bd4e08, - 0xfdcfe5ff, 0x6e0faff8, 0x7eef7e9f, 0xfdeff1cf, - 0x5f17abf8, 0x0d5b5f5b, 0xffef79f7, 0x309eafdd, - 0x5f3147f8, 0x5f31afed, 0x7fdd50af, 0x497847fd, - 0x7f9e7fed, 0x7dfd70a9, 0xef7e7ece, 0x6ba07f9e, - 0x2d227efd, 0x30db5f5b, 0xfffd5f5b, 0xffef5f5b, - 0xffdf0c9c, 0xafed0a9a, 0xafdd0c37, 0x5f37afbd, - 0x7fbdb081, 0x5f8147f8, 0x3a11e710, 0xedf0ccdd, - 0xf3186d0a, 0x7f0e5f06, 0x7fedbb38, 0x3afe7468, - 0x7fedf4fc, 0x8ffbb951, 0xb85f77fd, 0xb0df5ddd, - 0xdefe7fed, 0x90e1e74d, 0x6f0dcbf7, 0xe7decfed, - 0xcb74cfed, 0xcfeddf6d, 0x91714f74, 0x5dd2deef, - 0x9e04e7df, 0xefbb6ffb, 0xe7ef7f0e, 0x9e097fed, - 0xebdbeffa, 0xeb54affb, 0x7fea90d7, 0x7e0cf0c3, - 0xbffff318, 0x5fffdfff, 0xac59efea, 0x7fce1ee5, - 0xe2ff5ee1, 0xaffbe2ff, 0x5ee3affb, 0xf9cc7d0f, - 0xaef8770f, 0x7d0fb0c6, 0xeffbbfff, 0xcfef5ede, - 0x7d0fbfff, 0x5ede4cf8, 0x7fddd0bf, 0x49f847fd, - 0x7efdf0bb, 0x7fedfffd, 0x7dfdf0b7, 0xef7e7e1e, - 0x5ede7f0e, 0x3a11e710, 0xedf0ccab, 0xfb18ad2e, - 0x1ea9bbb8, 0x74283b7e, 0x73c2e4bb, 0x2ada4fb8, - 0xdc21e4bb, 0xb2a1ffbf, 0x5e2c43f8, 0xfc87e1bb, - 0xe74ffd91, 0x6f0f4fe8, 0xc7ba32e2, 0xf396efeb, - 0x600b4f78, 0xe5bb760b, 0x53acaef8, 0x4ef88b0e, - 0xcfef9e09, 0xabf8751f, 0xefef5bac, 0x741f4fe8, - 0x751e760d, 0x7fdbf081, 0x741cafce, 0xefcc7fce, - 0x751e70ac, 0x741ce7bb, 0x3372cfed, 0xafdbefeb, - 0xe5bb760b, 0x53f2aef8, 0xafe8e7eb, 0x4bf8771e, - 0x7e247fed, 0x4fcbe2cc, 0x7fbc30a9, 0x7b0f7a0f, - 0x34d577fd, 0x308b5db7, 0xde553e5f, 0xaf78741f, - 0x741f30f0, 0xcfef5e2c, 0x741f3eac, 0xafb8771e, - 0x5e677fed, 0x0bd3e2cc, 0x741ccfec, 0xe5ca53cd, - 0x6fcb4f74, 0x5dadde4b, 0x2ab63d38, 0x4bb3de30, - 0x751f741c, 0x6c42effa, 0xefea7fce, 0x6ffc30be, - 0xefec3fca, 0x30b3de2e, 0xadf85d9e, 0xaf7daefd, - 0x5d9ede2e, 0x5d9eafdd, 0x761f10ac, 0x1da07efd, - 0x30adfffe, 0x4908fb18, 0x5fffdfff, 0xafbb709b, - 0x4ef85e67, 0xadf814ad, 0x7a0f70ad, 0xcfef50ad, - 0x7a0fde30, 0x5da0afed, 0x3c12780f, 0xefef780f, - 0xefef790f, 0xa7f85e0f, 0xffef790f, 0xefef790f, - 0x14adde2e, 0x5d9eadfd, 0x5e2dfffb, 0xe79addfd, - 0xeff96079, 0x607ae79a, 0xddfceff9, 0x60795dff, - 0x607acfef, 0xefefefdf, 0xefbfef7f, 0xeeffedff, - 0xebffe7ff, 0xafefafdf, 0xafbfaf7f, 0xaeffadff, - 0xabffa7ff, 0x6fef6fdf, 0x6fbf6f7f, 0x6eff6dff, - 0x6bff67ff, 0x2fef2fdf, 0x2fbf2f7f, 0x2eff2dff, - 0x2bff27ff, 0x4e08fd1f, 0xe5ff6e0f, 0xaff87eef, - 0x7e0ffdef, 0xf11f6079, 0xabf8f542, 0x7e0af11c, - 0x37cfae3a, 0x7fec90be, 0xadf8efdc, 0xcfeae52f, - 0x7d0fe12b, 0xf11c6079, 0x7e0a4df8, 0xcfea5dc4, - 0x7d0befec, 0xcfea5dc6, 0xe522efdc, 0x5dc6cfda, - 0x4e08fd1f, 0x6e0faff8, 0x7c1f761f, 0xfdeff91f, - 0x6079abf8, 0x761cee24, 0xf91f2bfb, 0xefefcfec, - 0xf91f6079, 0x761c27fb, 0xefdf5da7, 0xcfdc7fdd, - 0xd09c4bf8, 0x47fd7c1f, 0x761ccfcf, 0x7eef7fed, - 0x7dfdf093, 0xef7e7f1e, 0x771efb18, 0x6079e722, - 0xe6bbe5bb, 0xae0ae5bb, 0x600bae85, 0xe2bbe2bb, - 0xe2bbe2bb, 0xaf02e2bb, 0xe2bb2ff9, 0x6079e2bb -}; - -static uint patch_2f00[] __initdata = { - 0x30303030, 0x3e3e3434, 0xabbf9b99, 0x4b4fbdbd, - 0x59949334, 0x9fff37fb, 0x9b177dd9, 0x936956bb, - 0xfbdd697b, 0xdd2fd113, 0x1db9f7bb, 0x36313963, - 0x79373369, 0x3193137f, 0x7331737a, 0xf7bb9b99, - 0x9bb19795, 0x77fdfd3d, 0x573b773f, 0x737933f7, - 0xb991d115, 0x31699315, 0x31531694, 0xbf4fbdbd, - 0x35931497, 0x35376956, 0xbd697b9d, 0x96931313, - 0x19797937, 0x6935af78, 0xb9b3baa3, 0xb8788683, - 0x368f78f7, 0x87778733, 0x3ffffb3b, 0x8e8f78b8, - 0x1d118e13, 0xf3ff3f8b, 0x6bd8e173, 0xd1366856, - 0x68d1687b, 0x3daf78b8, 0x3a3a3f87, 0x8f81378f, - 0xf876f887, 0x77fd8778, 0x737de8d6, 0xbbf8bfff, - 0xd8df87f7, 0xfd876f7b, 0x8bfff8bd, 0x8683387d, - 0xb873d87b, 0x3b8fd7f8, 0xf7338883, 0xbb8ee1f8, - 0xef837377, 0x3337b836, 0x817d11f8, 0x7378b878, - 0xd3368b7d, 0xed731b7d, 0x833731f3, 0xf22f3f23 -}; - -static uint patch_2e00[] __initdata = { - 0x27eeeeee, 0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee, - 0xee4bf4fb, 0xdbd259bb, 0x1979577f, 0xdfd2d573, - 0xb773f737, 0x4b4fbdbd, 0x25b9b177, 0xd2d17376, - 0x956bbfdd, 0x697bdd2f, 0xff9f79ff, 0xff9ff22f -}; -#endif - -/* - * USB SOF patch arrays. - */ - -#ifdef CONFIG_USB_SOF_UCODE_PATCH - -static char patch_name[] __initdata = "USB SOF"; - -static struct patch_params patch_params __initdata = { - 9, -}; - -static uint patch_2000[] __initdata = { - 0x7fff0000, 0x7ffd0000, 0x7ffb0000, 0x49f7ba5b, - 0xba383ffb, 0xf9b8b46d, 0xe5ab4e07, 0xaf77bffe, - 0x3f7bbf79, 0xba5bba38, 0xe7676076, 0x60750000 -}; - -static uint patch_2f00[] __initdata = { - 0x3030304c, 0xcab9e441, 0xa1aaf220 -}; - -static uint patch_2e00[] __initdata = {}; -#endif - -/* - * SMC relocation patch arrays. - */ - -#ifdef CONFIG_SMC_UCODE_PATCH - -static char patch_name[] __initdata = "SMC"; - -static struct patch_params patch_params __initdata = { - 2, 0x8080, 0x8088, -}; - -static uint patch_2000[] __initdata = { - 0x3fff0000, 0x3ffd0000, 0x3ffb0000, 0x3ff90000, - 0x5fefeff8, 0x5f91eff8, 0x3ff30000, 0x3ff10000, - 0x3a11e710, 0xedf0ccb9, 0xf318ed66, 0x7f0e5fe2, - 0x7fedbb38, 0x3afe7468, 0x7fedf4d8, 0x8ffbb92d, - 0xb83b77fd, 0xb0bb5eb9, 0xdfda7fed, 0x90bde74d, - 0x6f0dcbd3, 0xe7decfed, 0xcb50cfed, 0xcfeddf6d, - 0x914d4f74, 0x5eaedfcb, 0x9ee0e7df, 0xefbb6ffb, - 0xe7ef7f0e, 0x9ee57fed, 0xebb7effa, 0xeb30affb, - 0x7fea90b3, 0x7e0cf09f, 0xbffff318, 0x5fffdfff, - 0xac35efea, 0x7fce1fc1, 0xe2ff5fbd, 0xaffbe2ff, - 0x5fbfaffb, 0xf9a87d0f, 0xaef8770f, 0x7d0fb0a2, - 0xeffbbfff, 0xcfef5fba, 0x7d0fbfff, 0x5fba4cf8, - 0x7fddd09b, 0x49f847fd, 0x7efdf097, 0x7fedfffd, - 0x7dfdf093, 0xef7e7e1e, 0x5fba7f0e, 0x3a11e710, - 0xedf0cc87, 0xfb18ad0a, 0x1f85bbb8, 0x74283b7e, - 0x7375e4bb, 0x2ab64fb8, 0x5c7de4bb, 0x32fdffbf, - 0x5f0843f8, 0x7ce3e1bb, 0xe74f7ded, 0x6f0f4fe8, - 0xc7ba32be, 0x73f2efeb, 0x600b4f78, 0xe5bb760b, - 0x5388aef8, 0x4ef80b6a, 0xcfef9ee5, 0xabf8751f, - 0xefef5b88, 0x741f4fe8, 0x751e760d, 0x7fdb70dd, - 0x741cafce, 0xefcc7fce, 0x751e7088, 0x741ce7bb, - 0x334ecfed, 0xafdbefeb, 0xe5bb760b, 0x53ceaef8, - 0xafe8e7eb, 0x4bf8771e, 0x7e007fed, 0x4fcbe2cc, - 0x7fbc3085, 0x7b0f7a0f, 0x34b177fd, 0xb0e75e93, - 0xdf313e3b, 0xaf78741f, 0x741f30cc, 0xcfef5f08, - 0x741f3e88, 0xafb8771e, 0x5f437fed, 0x0bafe2cc, - 0x741ccfec, 0xe5ca53a9, 0x6fcb4f74, 0x5e89df27, - 0x2a923d14, 0x4b8fdf0c, 0x751f741c, 0x6c1eeffa, - 0xefea7fce, 0x6ffc309a, 0xefec3fca, 0x308fdf0a, - 0xadf85e7a, 0xaf7daefd, 0x5e7adf0a, 0x5e7aafdd, - 0x761f1088, 0x1e7c7efd, 0x3089fffe, 0x4908fb18, - 0x5fffdfff, 0xafbbf0f7, 0x4ef85f43, 0xadf81489, - 0x7a0f7089, 0xcfef5089, 0x7a0fdf0c, 0x5e7cafed, - 0xbc6e780f, 0xefef780f, 0xefef790f, 0xa7f85eeb, - 0xffef790f, 0xefef790f, 0x1489df0a, 0x5e7aadfd, - 0x5f09fffb, 0xe79aded9, 0xeff96079, 0x607ae79a, - 0xded8eff9, 0x60795edb, 0x607acfef, 0xefefefdf, - 0xefbfef7f, 0xeeffedff, 0xebffe7ff, 0xafefafdf, - 0xafbfaf7f, 0xaeffadff, 0xabffa7ff, 0x6fef6fdf, - 0x6fbf6f7f, 0x6eff6dff, 0x6bff67ff, 0x2fef2fdf, - 0x2fbf2f7f, 0x2eff2dff, 0x2bff27ff, 0x4e08fd1f, - 0xe5ff6e0f, 0xaff87eef, 0x7e0ffdef, 0xf11f6079, - 0xabf8f51e, 0x7e0af11c, 0x37cfae16, 0x7fec909a, - 0xadf8efdc, 0xcfeae52f, 0x7d0fe12b, 0xf11c6079, - 0x7e0a4df8, 0xcfea5ea0, 0x7d0befec, 0xcfea5ea2, - 0xe522efdc, 0x5ea2cfda, 0x4e08fd1f, 0x6e0faff8, - 0x7c1f761f, 0xfdeff91f, 0x6079abf8, 0x761cee00, - 0xf91f2bfb, 0xefefcfec, 0xf91f6079, 0x761c27fb, - 0xefdf5e83, 0xcfdc7fdd, 0x50f84bf8, 0x47fd7c1f, - 0x761ccfcf, 0x7eef7fed, 0x7dfd70ef, 0xef7e7f1e, - 0x771efb18, 0x6079e722, 0xe6bbe5bb, 0x2e66e5bb, - 0x600b2ee1, 0xe2bbe2bb, 0xe2bbe2bb, 0x2f5ee2bb, - 0xe2bb2ff9, 0x6079e2bb, -}; - -static uint patch_2f00[] __initdata = { - 0x30303030, 0x3e3e3030, 0xaf79b9b3, 0xbaa3b979, - 0x9693369f, 0x79f79777, 0x97333fff, 0xfb3b9e9f, - 0x79b91d11, 0x9e13f3ff, 0x3f9b6bd9, 0xe173d136, - 0x695669d1, 0x697b3daf, 0x79b93a3a, 0x3f979f91, - 0x379ff976, 0xf99777fd, 0x9779737d, 0xe9d6bbf9, - 0xbfffd9df, 0x97f7fd97, 0x6f7b9bff, 0xf9bd9683, - 0x397db973, 0xd97b3b9f, 0xd7f9f733, 0x9993bb9e, - 0xe1f9ef93, 0x73773337, 0xb936917d, 0x11f87379, - 0xb979d336, 0x8b7ded73, 0x1b7d9337, 0x31f3f22f, - 0x3f2327ee, 0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee, - 0xeeeeee4b, 0xf4fbdbd2, 0x58bb1878, 0x577fdfd2, - 0xd573b773, 0xf7374b4f, 0xbdbd25b8, 0xb177d2d1, - 0x7376856b, 0xbfdd687b, 0xdd2fff8f, 0x78ffff8f, - 0xf22f0000, -}; - -static uint patch_2e00[] __initdata = {}; -#endif - -static void __init cpm_write_patch(cpm8xx_t *cp, int offset, uint *patch, int len) -{ - if (!len) - return; - memcpy_toio(cp->cp_dpmem + offset, patch, len); -} - -void __init cpm_load_patch(cpm8xx_t *cp) -{ - out_be16(&cp->cp_rccr, 0); - - cpm_write_patch(cp, 0, patch_2000, sizeof(patch_2000)); - cpm_write_patch(cp, 0xf00, patch_2f00, sizeof(patch_2f00)); - cpm_write_patch(cp, 0xe00, patch_2e00, sizeof(patch_2e00)); - - if (IS_ENABLED(CONFIG_I2C_SPI_UCODE_PATCH) || - IS_ENABLED(CONFIG_I2C_SPI_SMC1_UCODE_PATCH)) { - u16 rpbase = 0x500; - iic_t *iip; - struct spi_pram *spp; - - iip = (iic_t *)&cp->cp_dparam[PROFF_IIC]; - out_be16(&iip->iic_rpbase, rpbase); - - /* Put SPI above the IIC, also 32-byte aligned. */ - spp = (struct spi_pram *)&cp->cp_dparam[PROFF_SPI]; - out_be16(&spp->rpbase, (rpbase + sizeof(iic_t) + 31) & ~31); - - if (IS_ENABLED(CONFIG_I2C_SPI_SMC1_UCODE_PATCH)) { - smc_uart_t *smp; - - smp = (smc_uart_t *)&cp->cp_dparam[PROFF_SMC1]; - out_be16(&smp->smc_rpbase, 0x1FC0); - } - } - - if (IS_ENABLED(CONFIG_SMC_UCODE_PATCH)) { - smc_uart_t *smp; - - if (IS_ENABLED(CONFIG_PPC_EARLY_DEBUG_CPM)) { - int i; - - for (i = 0; i < sizeof(*smp); i += 4) { - u32 __iomem *src = (u32 __iomem *)&cp->cp_dparam[PROFF_SMC1 + i]; - u32 __iomem *dst = (u32 __iomem *)&cp->cp_dparam[PROFF_DSP1 + i]; - - out_be32(dst, in_be32(src)); - } - } - - smp = (smc_uart_t *)&cp->cp_dparam[PROFF_SMC1]; - out_be16(&smp->smc_rpbase, 0x1ec0); - smp = (smc_uart_t *)&cp->cp_dparam[PROFF_SMC2]; - out_be16(&smp->smc_rpbase, 0x1fc0); - } - - out_be16(&cp->cp_cpmcr1, patch_params.cpmcr1); - out_be16(&cp->cp_cpmcr2, patch_params.cpmcr2); - out_be16(&cp->cp_cpmcr3, patch_params.cpmcr3); - out_be16(&cp->cp_cpmcr4, patch_params.cpmcr4); - - out_be16(&cp->cp_rccr, patch_params.rccr); - - pr_info("%s microcode patch installed\n", patch_name); -} |