#include <linux/delay.h>
#include <linux/string.h>
#include <linux/firmware.h>
+#include <asm/div64.h>
#include "dvb_frontend.h"
#include "drx397xD.h"
const struct firmware *file;
rwlock_t lock;
int refcnt;
- u8 *data[ARRAY_SIZE(blob_name)];
+ const u8 *data[ARRAY_SIZE(blob_name)];
} fw[] = {
#define _FW_ENTRY(a, b) { \
.name = a, \
static int drx_load_fw(struct drx397xD_state *s, fw_ix_t ix)
{
- u8 *data;
+ const u8 *data;
size_t size, len;
int i = 0, j, rc = -EINVAL;
static int write_fw(struct drx397xD_state *s, blob_ix_t ix)
{
struct i2c_msg msg = {.addr = s->config.demod_address,.flags = 0 };
- u8 *data;
+ const u8 *data;
int len, rc = 0, i = 0;
if (ix < 0 || ix >= ARRAY_SIZE(blob_name)) {
case 0: /* bytecode */
len = data[i++];
msg.len = len;
- msg.buf = &data[i];
+ msg.buf = (__u8 *) &data[i];
if (i2c_transfer(s->i2c, &msg, 1) != 1) {
rc = -EIO;
goto exit_rc;
rc = WR16(s, 0x0820050, rc);
{
- long dummy;
-
/* Configure bandwidth specific factor */
- ebx = div_ll_X_l_rem(((u64) (s->f_osc) << 21) + (ebx >> 1),
- ebx, &dummy) - 0x800000;
+ ebx = div64_u64(((u64) (s->f_osc) << 21) + (ebx >> 1),
+ (u64)ebx) - 0x800000;
EXIT_RC(WR16(s, 0x0c50010, ebx & 0xffff));
EXIT_RC(WR16(s, 0x0c50011, ebx >> 16));
/* drx397xD oscillator calibration */
- ebx = div_ll_X_l_rem(((u64) (s->config.f_if + df_tuner) << 28) +
- (s->f_osc >> 1), s->f_osc, &dummy);
+ ebx = div64_u64(((u64) (s->config.f_if + df_tuner) << 28) +
+ (s->f_osc >> 1), (u64)s->f_osc);
}
ebx &= 0xfffffff;
if (fep->inversion == INVERSION_ON)