1 #include <linux/kernel.h>
2 #include <linux/init.h>
3 #include <linux/module.h>
4 #include <linux/string.h>
5 #include <linux/slab.h>
6 #include <linux/delay.h>
7 #include <linux/jiffies.h>
8 #include <linux/types.h>
10 #include "drx_driver.h"
13 /* Dummy function to satisfy drxj.c */
14 int drxbsp_tuner_open(struct tuner_instance *tuner)
19 int drxbsp_tuner_close(struct tuner_instance *tuner)
24 int drxbsp_tuner_set_frequency(struct tuner_instance *tuner,
32 drxbsp_tuner_get_frequency(struct tuner_instance *tuner,
40 int drxbsp_hst_sleep(u32 n)
46 u32 drxbsp_hst_clock(void)
48 return jiffies_to_msecs(jiffies);
51 int drxbsp_hst_memcmp(void *s1, void *s2, u32 n)
53 return (memcmp(s1, s2, (size_t) n));
56 void *drxbsp_hst_memcpy(void *to, void *from, u32 n)
58 return (memcpy(to, from, (size_t) n));
61 int drxbsp_i2c_write_read(struct i2c_device_addr *w_dev_addr,
64 struct i2c_device_addr *r_dev_addr,
65 u16 r_count, u8 *r_data)
67 struct drx39xxj_state *state;
68 struct i2c_msg msg[2];
69 unsigned int num_msgs;
71 if (w_dev_addr == NULL) {
73 state = r_dev_addr->user_data;
74 msg[0].addr = r_dev_addr->i2c_addr >> 1;
75 msg[0].flags = I2C_M_RD;
79 } else if (r_dev_addr == NULL) {
81 state = w_dev_addr->user_data;
82 msg[0].addr = w_dev_addr->i2c_addr >> 1;
88 /* Both write and read */
89 state = w_dev_addr->user_data;
90 msg[0].addr = w_dev_addr->i2c_addr >> 1;
94 msg[1].addr = r_dev_addr->i2c_addr >> 1;
95 msg[1].flags = I2C_M_RD;
101 if (state->i2c == NULL) {
102 printk("i2c was zero, aborting\n");
105 if (i2c_transfer(state->i2c, msg, num_msgs) != num_msgs) {
106 printk(KERN_WARNING "drx3933: I2C write/read failed\n");
113 struct drx39xxj_state *state = w_dev_addr->user_data;
115 struct i2c_msg msg[2] = {
116 {.addr = w_dev_addr->i2c_addr,
117 .flags = 0, .buf = wData, .len = w_count},
118 {.addr = r_dev_addr->i2c_addr,
119 .flags = I2C_M_RD, .buf = r_data, .len = r_count},
122 printk("drx3933 i2c operation addr=%x i2c=%p, wc=%x rc=%x\n",
123 w_dev_addr->i2c_addr, state->i2c, w_count, r_count);
125 if (i2c_transfer(state->i2c, msg, 2) != 2) {
126 printk(KERN_WARNING "drx3933: I2C write/read failed\n");