static int __init i2c_init(void) { static int res; static int first = 1; if (!first) return res; first = 0; /* Setup and enable the DATA and CLK pins */ res = crisv32_io_get_name(&cris_i2c_data, CONFIG_ETRAX_V32_I2C_DATA_PORT); if (res < 0) return res; res = crisv32_io_get_name(&cris_i2c_clk, CONFIG_ETRAX_V32_I2C_CLK_PORT); crisv32_io_set_dir(&cris_i2c_clk, crisv32_io_dir_out); return res; }
int __init i2c_init(void) { int res; /* Setup and enable the Port B I2C interface */ crisv32_io_get_name(&cris_i2c_data, CONFIG_ETRAX_I2C_DATA_PORT); crisv32_io_get_name(&cris_i2c_clk, CONFIG_ETRAX_I2C_CLK_PORT); /* register char device */ res = register_chrdev(I2C_MAJOR, i2c_name, &i2c_fops); if(res < 0) { printk(KERN_ERR "i2c: couldn't get a major number.\n"); return res; } printk(KERN_INFO "I2C driver v2.2, (c) 1999-2001 Axis Communications AB\n"); return 0; }
static int __init crisv32_io_init(void) { int ret = 0; u32 i; /* Locks *should* be dynamically initialized. */ for (i = 0; i < ARRAY_SIZE(crisv32_ioports); i++) spin_lock_init(&crisv32_ioports[i].lock); spin_lock_init(&dummy_port.lock); /* Initialize LEDs */ #if (defined(CONFIG_ETRAX_NBR_LED_GRP_ONE) || defined(CONFIG_ETRAX_NBR_LED_GRP_TWO)) ret += crisv32_io_get_name(&crisv32_led_net0_green, CONFIG_ETRAX_LED_G_NET0); crisv32_io_set_dir(&crisv32_led_net0_green, crisv32_io_dir_out); if (strcmp(CONFIG_ETRAX_LED_G_NET0, CONFIG_ETRAX_LED_R_NET0)) { ret += crisv32_io_get_name(&crisv32_led_net0_red, CONFIG_ETRAX_LED_R_NET0); crisv32_io_set_dir(&crisv32_led_net0_red, crisv32_io_dir_out); } else crisv32_led_net0_red = dummy_led; #endif ret += crisv32_io_get_name(&crisv32_led2_green, CONFIG_ETRAX_V32_LED2G); ret += crisv32_io_get_name(&crisv32_led2_red, CONFIG_ETRAX_V32_LED2R); ret += crisv32_io_get_name(&crisv32_led3_green, CONFIG_ETRAX_V32_LED3G); ret += crisv32_io_get_name(&crisv32_led3_red, CONFIG_ETRAX_V32_LED3R); crisv32_io_set_dir(&crisv32_led2_green, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led2_red, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led3_green, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led3_red, crisv32_io_dir_out); return ret; }
static int __init crisv32_io_init(void) { int ret = 0; /* Initialize LEDs */ ret += crisv32_io_get_name(&crisv32_led1_green, CONFIG_ETRAX_LED1G); ret += crisv32_io_get_name(&crisv32_led1_red, CONFIG_ETRAX_LED1R); ret += crisv32_io_get_name(&crisv32_led2_green, CONFIG_ETRAX_LED2G); ret += crisv32_io_get_name(&crisv32_led2_red, CONFIG_ETRAX_LED2R); ret += crisv32_io_get_name(&crisv32_led3_green, CONFIG_ETRAX_LED3G); ret += crisv32_io_get_name(&crisv32_led3_red, CONFIG_ETRAX_LED3R); crisv32_io_set_dir(&crisv32_led1_green, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led1_red, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led2_green, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led2_red, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led3_green, crisv32_io_dir_out); crisv32_io_set_dir(&crisv32_led3_red, crisv32_io_dir_out); if (!strcmp(CONFIG_ETRAX_LED1G, CONFIG_ETRAX_LED1R)) crisv32_led1_red = dummy_led; if (!strcmp(CONFIG_ETRAX_LED2G, CONFIG_ETRAX_LED2R)) crisv32_led2_red = dummy_led; return ret; }