imx233/fuze+: rework i2c and fmradio_i2c init

Only enable fmradio_i2c once with _init() called from system.
Move actual i2c init to system for consistency.
Move tuner power pin setup to power instead of fmradio.

Change-Id: Idb56bfba5803f71b5d049f174c48d2afb969a6ea
This commit is contained in:
Amaury Pouly 2012-03-15 14:59:20 +01:00
parent a4fd5bf7cb
commit 9caffa8bf7
6 changed files with 15 additions and 11 deletions

View file

@ -53,7 +53,7 @@ void INT_I2C_DMA(void)
semaphore_release(&i2c_sema); semaphore_release(&i2c_sema);
} }
void i2c_init(void) void imx233_i2c_init(void)
{ {
imx233_reset_block(&HW_I2C_CTRL0); imx233_reset_block(&HW_I2C_CTRL0);
/* setup pins (must be done when shutdown) */ /* setup pins (must be done when shutdown) */
@ -147,6 +147,10 @@ enum imx233_i2c_error_t imx233_i2c_end(unsigned timeout)
return ret; return ret;
} }
void i2c_init(void)
{
}
int i2c_write(int device, const unsigned char* buf, int count) int i2c_write(int device, const unsigned char* buf, int count)
{ {
uint8_t addr = device; uint8_t addr = device;

View file

@ -126,7 +126,7 @@ enum imx233_i2c_error_t
I2C_SLAVE_NAK = -5 I2C_SLAVE_NAK = -5
}; };
void i2c_init(void); void imx233_i2c_init(void);
/* start building a transfer, will acquire an exclusive lock */ /* start building a transfer, will acquire an exclusive lock */
void imx233_i2c_begin(void); void imx233_i2c_begin(void);
/* add stage */ /* add stage */

View file

@ -27,6 +27,7 @@
#include "system-target.h" #include "system-target.h"
#include "power-imx233.h" #include "power-imx233.h"
#include "pinctrl-imx233.h" #include "pinctrl-imx233.h"
#include "fmradio_i2c.h"
struct current_step_bit_t struct current_step_bit_t
{ {

View file

@ -85,17 +85,11 @@ struct i2c_interface fmradio_i2c =
.delay_thigh = 4 .delay_thigh = 4
}; };
void fmradio_i2c_enable(bool enable) void fmradio_i2c_init(void)
{ {
if(fmradio_i2c_bus == -1)
fmradio_i2c_bus = i2c_add_node(&fmradio_i2c);
imx233_set_pin_function(0, 29, PINCTRL_FUNCTION_GPIO);
imx233_set_pin_function(1, 24, PINCTRL_FUNCTION_GPIO); imx233_set_pin_function(1, 24, PINCTRL_FUNCTION_GPIO);
imx233_set_pin_function(1, 22, PINCTRL_FUNCTION_GPIO); imx233_set_pin_function(1, 22, PINCTRL_FUNCTION_GPIO);
imx233_enable_gpio_output(1, 22, enable); fmradio_i2c_bus = i2c_add_node(&fmradio_i2c);
imx233_enable_gpio_output(1, 24, enable);
imx233_set_gpio_output(1, 22, enable);
imx233_set_gpio_output(1, 24, enable);
} }
int fmradio_i2c_write(unsigned char address, const unsigned char* buf, int count) int fmradio_i2c_write(unsigned char address, const unsigned char* buf, int count)

View file

@ -32,8 +32,8 @@ bool tuner_power(bool enable)
{ {
if(enable != tuner_enable) if(enable != tuner_enable)
{ {
fmradio_i2c_enable(enable);
/* CE is B029 (active high) */ /* CE is B029 (active high) */
imx233_set_pin_function(0, 29, PINCTRL_FUNCTION_GPIO);
imx233_set_pin_drive_strength(0, 29, PINCTRL_DRIVE_4mA); imx233_set_pin_drive_strength(0, 29, PINCTRL_DRIVE_4mA);
imx233_enable_gpio_output(0, 29, enable); imx233_enable_gpio_output(0, 29, enable);
imx233_set_gpio_output(0, 29, enable); imx233_set_gpio_output(0, 29, enable);

View file

@ -34,6 +34,7 @@
#include "lcd.h" #include "lcd.h"
#include "backlight-target.h" #include "backlight-target.h"
#include "button.h" #include "button.h"
#include "fmradio_i2c.h"
#define default_interrupt(name) \ #define default_interrupt(name) \
extern __attribute__((weak, alias("UIRQ"))) void name(void) extern __attribute__((weak, alias("UIRQ"))) void name(void)
@ -213,6 +214,10 @@ void system_init(void)
imx233_dma_init(); imx233_dma_init();
imx233_ssp_init(); imx233_ssp_init();
imx233_dcp_init(); imx233_dcp_init();
imx233_i2c_init();
#if defined(SANSA_FUZEPLUS) && !defined(BOOTLOADER)
fmradio_i2c_init();
#endif
} }
bool imx233_us_elapsed(uint32_t ref, unsigned us_delay) bool imx233_us_elapsed(uint32_t ref, unsigned us_delay)