mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
Merge git://git.infradead.org/~dwmw2/firmware-2.6
* git://git.infradead.org/~dwmw2/firmware-2.6: qla1280: Fix off-by-some error in firmware loading. Add README.AddingFirmware file. Basically telling people not to. firmware: Remove newly-added slicoss and sxg firmware images firmware/WHENCE: Add missing origin information for Ambassador atmsar11.fw ALSA: wavefront - Always use request_firmware() Remove fdump tool for av7110 firmware firmware: convert av7110 driver to request_firmware() Partially revert "V4L/DVB (9533): cx88: Add support for TurboSight TBS8910 DVB-S PCI card" Revert "fix modules_install via NFS" Add-add conflicts in firmware/WHENCE fixed manually
This commit is contained in:
commit
1e17d774db
27 changed files with 1238 additions and 26986 deletions
|
|
@ -28,26 +28,13 @@ config DVB_AV7110
|
|||
download/extract it, and then copy it to /usr/lib/hotplug/firmware
|
||||
or /lib/firmware (depending on configuration of firmware hotplug).
|
||||
|
||||
Alternatively, you can download the file and use the kernel's
|
||||
EXTRA_FIRMWARE configuration option to build it into your
|
||||
kernel image by adding the filename to the EXTRA_FIRMWARE
|
||||
configuration option string.
|
||||
|
||||
Say Y if you own such a card and want to use it.
|
||||
|
||||
config DVB_AV7110_FIRMWARE
|
||||
bool "Compile AV7110 firmware into the driver"
|
||||
depends on DVB_AV7110 && !STANDALONE
|
||||
default y if DVB_AV7110=y
|
||||
help
|
||||
The AV7110 firmware is normally loaded by the firmware hotplug manager.
|
||||
If you want to compile the firmware into the driver you need to say
|
||||
Y here and provide the correct path of the firmware. You need this
|
||||
option if you want to compile the whole driver statically into the
|
||||
kernel.
|
||||
|
||||
All other people say N.
|
||||
|
||||
config DVB_AV7110_FIRMWARE_FILE
|
||||
string "Full pathname of av7110 firmware file"
|
||||
depends on DVB_AV7110_FIRMWARE
|
||||
default "/usr/lib/hotplug/firmware/dvb-ttpci-01.fw"
|
||||
|
||||
config DVB_AV7110_OSD
|
||||
bool "AV7110 OSD support"
|
||||
depends on DVB_AV7110
|
||||
|
|
|
|||
|
|
@ -19,12 +19,3 @@ obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o
|
|||
|
||||
EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
|
||||
EXTRA_CFLAGS += -Idrivers/media/common/tuners
|
||||
|
||||
hostprogs-y := fdump
|
||||
|
||||
ifeq ($(CONFIG_DVB_AV7110_FIRMWARE),y)
|
||||
$(obj)/av7110.o: $(obj)/av7110_firm.h
|
||||
|
||||
$(obj)/av7110_firm.h: $(obj)/fdump
|
||||
$(obj)/fdump $(CONFIG_DVB_AV7110_FIRMWARE_FILE) dvb_ttpci_fw $@
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -1518,20 +1518,6 @@ static int check_firmware(struct av7110* av7110)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DVB_AV7110_FIRMWARE_FILE
|
||||
#include "av7110_firm.h"
|
||||
static void put_firmware(struct av7110* av7110)
|
||||
{
|
||||
av7110->bin_fw = NULL;
|
||||
}
|
||||
|
||||
static inline int get_firmware(struct av7110* av7110)
|
||||
{
|
||||
av7110->bin_fw = dvb_ttpci_fw;
|
||||
av7110->size_fw = sizeof(dvb_ttpci_fw);
|
||||
return check_firmware(av7110);
|
||||
}
|
||||
#else
|
||||
static void put_firmware(struct av7110* av7110)
|
||||
{
|
||||
vfree(av7110->bin_fw);
|
||||
|
|
@ -1580,8 +1566,6 @@ static int get_firmware(struct av7110* av7110)
|
|||
release_firmware(fw);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct dvb_frontend_parameters *params)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -198,29 +198,10 @@ static int load_dram(struct av7110 *av7110, u32 *data, int len)
|
|||
|
||||
/* we cannot write av7110 DRAM directly, so load a bootloader into
|
||||
* the DPRAM which implements a simple boot protocol */
|
||||
static u8 bootcode[] = {
|
||||
0xea, 0x00, 0x00, 0x0e, 0xe1, 0xb0, 0xf0, 0x0e, 0xe2, 0x5e, 0xf0, 0x04,
|
||||
0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x08, 0xe2, 0x5e, 0xf0, 0x04,
|
||||
0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, 0x2c, 0x00, 0x00, 0x24,
|
||||
0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x34,
|
||||
0x00, 0x00, 0x00, 0x00, 0xa5, 0xa5, 0x5a, 0x5a, 0x00, 0x1f, 0x15, 0x55,
|
||||
0x00, 0x00, 0x00, 0x09, 0xe5, 0x9f, 0xd0, 0x7c, 0xe5, 0x9f, 0x40, 0x74,
|
||||
0xe3, 0xa0, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x04,
|
||||
0xe5, 0x9f, 0x10, 0x70, 0xe5, 0x9f, 0x20, 0x70, 0xe5, 0x9f, 0x30, 0x64,
|
||||
0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe1, 0x51, 0x00, 0x02,
|
||||
0xda, 0xff, 0xff, 0xfb, 0xe5, 0x9f, 0xf0, 0x50, 0xe1, 0xd4, 0x10, 0xb0,
|
||||
0xe3, 0x51, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xfc, 0xe1, 0xa0, 0x10, 0x0d,
|
||||
0xe5, 0x94, 0x30, 0x04, 0xe1, 0xd4, 0x20, 0xb2, 0xe2, 0x82, 0x20, 0x3f,
|
||||
0xe1, 0xb0, 0x23, 0x22, 0x03, 0xa0, 0x00, 0x02, 0xe1, 0xc4, 0x00, 0xb0,
|
||||
0x0a, 0xff, 0xff, 0xf4, 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0,
|
||||
0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, 0xe2, 0x52, 0x20, 0x01,
|
||||
0x1a, 0xff, 0xff, 0xf9, 0xe2, 0x2d, 0xdb, 0x05, 0xea, 0xff, 0xff, 0xec,
|
||||
0x2c, 0x00, 0x03, 0xf8, 0x2c, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x08, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x74, 0x2c, 0x00, 0x00, 0xc0
|
||||
};
|
||||
|
||||
int av7110_bootarm(struct av7110 *av7110)
|
||||
{
|
||||
const struct firmware *fw;
|
||||
const char *fw_name = "av7110/bootcode.bin";
|
||||
struct saa7146_dev *dev = av7110->dev;
|
||||
u32 ret;
|
||||
int i;
|
||||
|
|
@ -261,7 +242,15 @@ int av7110_bootarm(struct av7110 *av7110)
|
|||
//saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT);
|
||||
//saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT);
|
||||
|
||||
mwdebi(av7110, DEBISWAB, DPRAM_BASE, bootcode, sizeof(bootcode));
|
||||
ret = request_firmware(&fw, fw_name, &dev->pci->dev);
|
||||
if (ret) {
|
||||
printk(KERN_ERR "dvb-ttpci: Failed to load firmware \"%s\"\n",
|
||||
fw_name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
mwdebi(av7110, DEBISWAB, DPRAM_BASE, fw->data, fw->size);
|
||||
release_firmware(fw);
|
||||
iwdebi(av7110, DEBINOSWAP, AV7110_BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2);
|
||||
|
||||
if (saa7146_wait_for_debi_done(av7110->dev, 1)) {
|
||||
|
|
@ -302,7 +291,7 @@ int av7110_bootarm(struct av7110 *av7110)
|
|||
av7110->arm_ready = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
MODULE_FIRMWARE("av7110/bootcode.bin");
|
||||
|
||||
/****************************************************************************
|
||||
* DEBI command polling
|
||||
|
|
|
|||
|
|
@ -390,7 +390,8 @@ static inline void iwdebi(struct av7110 *av7110, u32 config, int addr, u32 val,
|
|||
}
|
||||
|
||||
/* buffer writes */
|
||||
static inline void mwdebi(struct av7110 *av7110, u32 config, int addr, u8 *val, int count)
|
||||
static inline void mwdebi(struct av7110 *av7110, u32 config, int addr,
|
||||
const u8 *val, int count)
|
||||
{
|
||||
memcpy(av7110->debi_virt, val, count);
|
||||
av7110_debiwrite(av7110, config, addr, 0, count);
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
unsigned char buf[8];
|
||||
unsigned int i, count, bytes = 0;
|
||||
FILE *fd_in, *fd_out;
|
||||
|
||||
if (argc != 4) {
|
||||
fprintf(stderr, "\n\tusage: %s <ucode.bin> <array_name> <output_name>\n\n", argv[0]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
fd_in = fopen(argv[1], "rb");
|
||||
if (fd_in == NULL) {
|
||||
fprintf(stderr, "firmware file '%s' not found\n", argv[1]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
fd_out = fopen(argv[3], "w+");
|
||||
if (fd_out == NULL) {
|
||||
fprintf(stderr, "cannot create output file '%s'\n", argv[3]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
fprintf(fd_out, "\n#include <asm/types.h>\n\nu8 %s [] = {", argv[2]);
|
||||
|
||||
while ((count = fread(buf, 1, 8, fd_in)) > 0) {
|
||||
fprintf(fd_out, "\n\t");
|
||||
for (i = 0; i < count; i++, bytes++)
|
||||
fprintf(fd_out, "0x%02x, ", buf[i]);
|
||||
}
|
||||
|
||||
fprintf(fd_out, "\n};\n\n");
|
||||
|
||||
fclose(fd_in);
|
||||
fclose(fd_out);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in a new issue