|
@@ -40,15 +40,6 @@
|
|
|
|
|
|
#include <asm/unaligned.h>
|
|
|
|
|
|
-
|
|
|
-#define DEBUG 1
|
|
|
-#ifdef DEBUG
|
|
|
-#define DPRINTK(f, a...) printk(KERN_DEBUG "%s: " f, __func__ , ## a)
|
|
|
-#else
|
|
|
-#define DPRINTK(f, a...)
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
/* Display specific information */
|
|
|
#define DPY_W 832
|
|
|
#define DPY_H 622
|
|
@@ -135,8 +126,8 @@ static u16 calc_img_cksum(u16 *start, int length)
|
|
|
|
|
|
/* here we decode the incoming waveform file and populate metromem */
|
|
|
#define EXP_WFORM_SIZE 47001
|
|
|
-static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
- u8 *frame_count)
|
|
|
+static int __devinit load_waveform(u8 *mem, size_t size, int m, int t,
|
|
|
+ struct metronomefb_par *par)
|
|
|
{
|
|
|
int tta;
|
|
|
int wmta;
|
|
@@ -148,9 +139,11 @@ static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
int wfm_idx, owfm_idx;
|
|
|
int mem_idx = 0;
|
|
|
struct waveform_hdr *wfm_hdr;
|
|
|
+ u8 *metromem = par->metromem_wfm;
|
|
|
+ struct device *dev = par->info->dev;
|
|
|
|
|
|
if (size != EXP_WFORM_SIZE) {
|
|
|
- printk(KERN_ERR "Error: unexpected size %d != %d\n", size,
|
|
|
+ dev_err(dev, "Error: unexpected size %d != %d\n", size,
|
|
|
EXP_WFORM_SIZE);
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -158,16 +151,16 @@ static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
wfm_hdr = (struct waveform_hdr *) mem;
|
|
|
|
|
|
if (wfm_hdr->fvsn != 1) {
|
|
|
- printk(KERN_ERR "Error: bad fvsn %x\n", wfm_hdr->fvsn);
|
|
|
+ dev_err(dev, "Error: bad fvsn %x\n", wfm_hdr->fvsn);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
if (wfm_hdr->luts != 0) {
|
|
|
- printk(KERN_ERR "Error: bad luts %x\n", wfm_hdr->luts);
|
|
|
+ dev_err(dev, "Error: bad luts %x\n", wfm_hdr->luts);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
cksum = calc_cksum(32, 47, mem);
|
|
|
if (cksum != wfm_hdr->wfm_cs) {
|
|
|
- printk(KERN_ERR "Error: bad cksum %x != %x\n", cksum,
|
|
|
+ dev_err(dev, "Error: bad cksum %x != %x\n", cksum,
|
|
|
wfm_hdr->wfm_cs);
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -175,7 +168,7 @@ static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
wfm_hdr->trc += 1;
|
|
|
for (i = 0; i < 5; i++) {
|
|
|
if (*(wfm_hdr->stuff2a + i) != 0) {
|
|
|
- printk(KERN_ERR "Error: unexpected value in padding\n");
|
|
|
+ dev_err(dev, "Error: unexpected value in padding\n");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
}
|
|
@@ -200,7 +193,7 @@ static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
return -EINVAL;
|
|
|
cksum = calc_cksum(sizeof(*wfm_hdr), cksum_idx, mem);
|
|
|
if (cksum != mem[cksum_idx]) {
|
|
|
- printk(KERN_ERR "Error: bad temperature range table cksum"
|
|
|
+ dev_err(dev, "Error: bad temperature range table cksum"
|
|
|
" %x != %x\n", cksum, mem[cksum_idx]);
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -212,7 +205,7 @@ static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
return -EINVAL;
|
|
|
cksum = calc_cksum(cksum_idx - 3, cksum_idx, mem);
|
|
|
if (cksum != mem[cksum_idx]) {
|
|
|
- printk(KERN_ERR "Error: bad mode table address cksum"
|
|
|
+ dev_err(dev, "Error: bad mode table address cksum"
|
|
|
" %x != %x\n", cksum, mem[cksum_idx]);
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -224,7 +217,7 @@ static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
return -EINVAL;
|
|
|
cksum = calc_cksum(cksum_idx - 3, cksum_idx, mem);
|
|
|
if (cksum != mem[cksum_idx]) {
|
|
|
- printk(KERN_ERR "Error: bad temperature table address cksum"
|
|
|
+ dev_err(dev, "Error: bad temperature table address cksum"
|
|
|
" %x != %x\n", cksum, mem[cksum_idx]);
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -259,11 +252,11 @@ static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t,
|
|
|
return -EINVAL;
|
|
|
cksum = calc_cksum(owfm_idx, cksum_idx, mem);
|
|
|
if (cksum != mem[cksum_idx]) {
|
|
|
- printk(KERN_ERR "Error: bad waveform data cksum"
|
|
|
+ dev_err(dev, "Error: bad waveform data cksum"
|
|
|
" %x != %x\n", cksum, mem[cksum_idx]);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
- *frame_count = (mem_idx/64);
|
|
|
+ par->frame_count = (mem_idx/64);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -662,15 +655,15 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
|
|
|
b) process waveform and decode into metromem */
|
|
|
retval = request_firmware(&fw_entry, "metronome.wbf", &dev->dev);
|
|
|
if (retval < 0) {
|
|
|
- printk(KERN_ERR "metronomefb: couldn't get waveform\n");
|
|
|
+ dev_err(&dev->dev, "Failed to get waveform\n");
|
|
|
goto err_dma_free;
|
|
|
}
|
|
|
|
|
|
- retval = load_waveform((u8 *) fw_entry->data, fw_entry->size,
|
|
|
- par->metromem_wfm, 3, 31, &par->frame_count);
|
|
|
+ retval = load_waveform((u8 *) fw_entry->data, fw_entry->size, 3, 31,
|
|
|
+ par);
|
|
|
release_firmware(fw_entry);
|
|
|
if (retval < 0) {
|
|
|
- printk(KERN_ERR "metronomefb: couldn't process waveform\n");
|
|
|
+ dev_err(&dev->dev, "Failed processing waveform\n");
|
|
|
goto err_dma_free;
|
|
|
}
|
|
|
|
|
@@ -688,7 +681,7 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
|
|
|
|
|
|
retval = fb_alloc_cmap(&info->cmap, 8, 0);
|
|
|
if (retval < 0) {
|
|
|
- printk(KERN_ERR "Failed to allocate colormap\n");
|
|
|
+ dev_err(&dev->dev, "Failed to allocate colormap\n");
|
|
|
goto err_fb_rel;
|
|
|
}
|
|
|
|
|
@@ -704,7 +697,7 @@ static int __devinit metronomefb_probe(struct platform_device *dev)
|
|
|
|
|
|
platform_set_drvdata(dev, info);
|
|
|
|
|
|
- printk(KERN_INFO
|
|
|
+ dev_dbg(&dev->dev,
|
|
|
"fb%d: Metronome frame buffer device, using %dK of video"
|
|
|
" memory\n", info->node, videomemorysize >> 10);
|
|
|
|