summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx31/gigabeat-s/i2c-imx31.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/i2c-imx31.c')
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/i2c-imx31.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/firmware/target/arm/imx31/gigabeat-s/i2c-imx31.c b/firmware/target/arm/imx31/gigabeat-s/i2c-imx31.c
index bf69afedb7..05d761c9ce 100644
--- a/firmware/target/arm/imx31/gigabeat-s/i2c-imx31.c
+++ b/firmware/target/arm/imx31/gigabeat-s/i2c-imx31.c
@@ -57,7 +57,7 @@ static struct i2c_module_descriptor
57 { 57 {
58 .base = (struct i2c_map *)I2C1_BASE_ADDR, 58 .base = (struct i2c_map *)I2C1_BASE_ADDR,
59 .cg = CG_I2C1, 59 .cg = CG_I2C1,
60 .ints = I2C1, 60 .ints = INT_I2C1,
61 .handler = I2C1_HANDLER, 61 .handler = I2C1_HANDLER,
62 }, 62 },
63#endif 63#endif
@@ -65,7 +65,7 @@ static struct i2c_module_descriptor
65 { 65 {
66 .base = (struct i2c_map *)I2C2_BASE_ADDR, 66 .base = (struct i2c_map *)I2C2_BASE_ADDR,
67 .cg = CG_I2C2, 67 .cg = CG_I2C2,
68 .ints = I2C2, 68 .ints = INT_I2C2,
69 .handler = I2C2_HANDLER, 69 .handler = I2C2_HANDLER,
70 }, 70 },
71#endif 71#endif
@@ -73,7 +73,7 @@ static struct i2c_module_descriptor
73 { 73 {
74 .base = (struct i2c_map *)I2C3_BASE_ADDR, 74 .base = (struct i2c_map *)I2C3_BASE_ADDR,
75 .cg = CG_I2C3, 75 .cg = CG_I2C3,
76 .ints = I2C3, 76 .ints = INT_I2C3,
77 .handler = I2C3_HANDLER, 77 .handler = I2C3_HANDLER,
78 }, 78 },
79#endif 79#endif
@@ -286,11 +286,11 @@ void i2c_init(void)
286 for (i = 0; i < I2C_NUM_I2C; i++) 286 for (i = 0; i < I2C_NUM_I2C; i++)
287 { 287 {
288 struct i2c_module_descriptor *const desc = &i2c_descs[i]; 288 struct i2c_module_descriptor *const desc = &i2c_descs[i];
289 imx31_clkctl_module_clock_gating(desc->cg, CGM_ON_ALL); 289 ccm_module_clock_gating(desc->cg, CGM_ON_RUN_WAIT);
290 mutex_init(&desc->m); 290 mutex_init(&desc->m);
291 wakeup_init(&desc->w); 291 wakeup_init(&desc->w);
292 desc->base->i2cr = 0; 292 desc->base->i2cr = 0;
293 imx31_clkctl_module_clock_gating(desc->cg, CGM_OFF); 293 ccm_module_clock_gating(desc->cg, CGM_OFF);
294 } 294 }
295} 295}
296 296
@@ -305,8 +305,9 @@ void i2c_enable_node(struct i2c_node *node, bool enable)
305 if (++desc->enable == 1) 305 if (++desc->enable == 1)
306 { 306 {
307 /* First enable */ 307 /* First enable */
308 imx31_clkctl_module_clock_gating(desc->cg, CGM_ON_ALL); 308 ccm_module_clock_gating(desc->cg, CGM_ON_RUN_WAIT);
309 avic_enable_int(desc->ints, IRQ, 7, desc->handler); 309 avic_enable_int(desc->ints, INT_TYPE_IRQ, INT_PRIO_DEFAULT,
310 desc->handler);
310 } 311 }
311 } 312 }
312 else 313 else
@@ -317,7 +318,7 @@ void i2c_enable_node(struct i2c_node *node, bool enable)
317 while (desc->base->i2sr & I2C_I2SR_IBB); /* Wait for STOP */ 318 while (desc->base->i2sr & I2C_I2SR_IBB); /* Wait for STOP */
318 desc->base->i2cr &= ~I2C_I2CR_IEN; 319 desc->base->i2cr &= ~I2C_I2CR_IEN;
319 avic_disable_int(desc->ints); 320 avic_disable_int(desc->ints);
320 imx31_clkctl_module_clock_gating(desc->cg, CGM_OFF); 321 ccm_module_clock_gating(desc->cg, CGM_OFF);
321 } 322 }
322 } 323 }
323 324