0001
0002 #ifndef __LM7000_H
0003 #define __LM7000_H
0004
0005
0006
0007
0008
0009
0010
0011
0012 #define LM7000_DATA (1 << 0)
0013 #define LM7000_CLK (1 << 1)
0014 #define LM7000_CE (1 << 2)
0015
0016 #define LM7000_FM_100 (0 << 20)
0017 #define LM7000_FM_50 (1 << 20)
0018 #define LM7000_FM_25 (2 << 20)
0019 #define LM7000_BIT_FM (1 << 23)
0020
0021 static inline void lm7000_set_freq(u32 freq, void *handle,
0022 void (*set_pins)(void *handle, u8 pins))
0023 {
0024 int i;
0025 u8 data;
0026 u32 val;
0027
0028 freq += 171200;
0029 freq /= 400;
0030 val = freq | LM7000_FM_25 | LM7000_BIT_FM;
0031
0032 for (i = 0; i < 24; i++) {
0033 data = val & (1 << i) ? LM7000_DATA : 0;
0034 set_pins(handle, data | LM7000_CE);
0035 udelay(2);
0036 set_pins(handle, data | LM7000_CE | LM7000_CLK);
0037 udelay(2);
0038 set_pins(handle, data | LM7000_CE);
0039 udelay(2);
0040 }
0041 set_pins(handle, 0);
0042 }
0043
0044 #endif