Lines Matching refs:i2c_imx

263 static inline int is_imx1_i2c(struct imx_i2c_struct *i2c_imx)  in is_imx1_i2c()  argument
265 return i2c_imx->hwdata->devtype == IMX1_I2C; in is_imx1_i2c()
269 struct imx_i2c_struct *i2c_imx, unsigned int reg) in imx_i2c_write_reg() argument
271 writeb(val, i2c_imx->base + (reg << i2c_imx->hwdata->regshift)); in imx_i2c_write_reg()
274 static inline unsigned char imx_i2c_read_reg(struct imx_i2c_struct *i2c_imx, in imx_i2c_read_reg() argument
277 return readb(i2c_imx->base + (reg << i2c_imx->hwdata->regshift)); in imx_i2c_read_reg()
281 static void i2c_imx_dma_request(struct imx_i2c_struct *i2c_imx, in i2c_imx_dma_request() argument
286 struct device *dev = &i2c_imx->adapter.dev; in i2c_imx_dma_request()
302 (IMX_I2C_I2DR << i2c_imx->hwdata->regshift); in i2c_imx_dma_request()
321 (IMX_I2C_I2DR << i2c_imx->hwdata->regshift); in i2c_imx_dma_request()
331 i2c_imx->dma = dma; in i2c_imx_dma_request()
348 struct imx_i2c_struct *i2c_imx = (struct imx_i2c_struct *)arg; in i2c_imx_dma_callback() local
349 struct imx_i2c_dma *dma = i2c_imx->dma; in i2c_imx_dma_callback()
356 static int i2c_imx_dma_xfer(struct imx_i2c_struct *i2c_imx, in i2c_imx_dma_xfer() argument
359 struct imx_i2c_dma *dma = i2c_imx->dma; in i2c_imx_dma_xfer()
361 struct device *dev = &i2c_imx->adapter.dev; in i2c_imx_dma_xfer()
381 txdesc->callback_param = i2c_imx; in i2c_imx_dma_xfer()
399 static void i2c_imx_dma_free(struct imx_i2c_struct *i2c_imx) in i2c_imx_dma_free() argument
401 struct imx_i2c_dma *dma = i2c_imx->dma; in i2c_imx_dma_free()
415 static void i2c_imx_clear_irq(struct imx_i2c_struct *i2c_imx, unsigned int bits) in i2c_imx_clear_irq() argument
424 temp = ~i2c_imx->hwdata->i2sr_clr_opcode ^ bits; in i2c_imx_clear_irq()
425 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); in i2c_imx_clear_irq()
428 static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy, bool atomic) in i2c_imx_bus_busy() argument
433 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); in i2c_imx_bus_busy()
436 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR); in i2c_imx_bus_busy()
440 i2c_imx_clear_irq(i2c_imx, I2SR_IAL); in i2c_imx_bus_busy()
445 i2c_imx->stopped = 0; in i2c_imx_bus_busy()
449 i2c_imx->stopped = 1; in i2c_imx_bus_busy()
453 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_bus_busy()
466 static int i2c_imx_trx_complete(struct imx_i2c_struct *i2c_imx, bool atomic) in i2c_imx_trx_complete() argument
469 void __iomem *addr = i2c_imx->base + (IMX_I2C_I2SR << i2c_imx->hwdata->regshift); in i2c_imx_trx_complete()
483 i2c_imx->i2csr = regval; in i2c_imx_trx_complete()
484 i2c_imx_clear_irq(i2c_imx, I2SR_IIF | I2SR_IAL); in i2c_imx_trx_complete()
486 wait_event_timeout(i2c_imx->queue, i2c_imx->i2csr & I2SR_IIF, HZ / 10); in i2c_imx_trx_complete()
489 if (unlikely(!(i2c_imx->i2csr & I2SR_IIF))) { in i2c_imx_trx_complete()
490 dev_dbg(&i2c_imx->adapter.dev, "<%s> Timeout\n", __func__); in i2c_imx_trx_complete()
495 if (i2c_imx->i2csr & I2SR_IAL) { in i2c_imx_trx_complete()
496 dev_dbg(&i2c_imx->adapter.dev, "<%s> Arbitration lost\n", __func__); in i2c_imx_trx_complete()
497 i2c_imx_clear_irq(i2c_imx, I2SR_IAL); in i2c_imx_trx_complete()
499 i2c_imx->i2csr = 0; in i2c_imx_trx_complete()
503 dev_dbg(&i2c_imx->adapter.dev, "<%s> TRX complete\n", __func__); in i2c_imx_trx_complete()
504 i2c_imx->i2csr = 0; in i2c_imx_trx_complete()
508 static int i2c_imx_acked(struct imx_i2c_struct *i2c_imx) in i2c_imx_acked() argument
510 if (imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR) & I2SR_RXAK) { in i2c_imx_acked()
511 dev_dbg(&i2c_imx->adapter.dev, "<%s> No ACK\n", __func__); in i2c_imx_acked()
515 dev_dbg(&i2c_imx->adapter.dev, "<%s> ACK received\n", __func__); in i2c_imx_acked()
519 static void i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx, in i2c_imx_set_clk() argument
522 struct imx_i2c_clk_pair *i2c_clk_div = i2c_imx->hwdata->clk_div; in i2c_imx_set_clk()
527 if (i2c_imx->cur_clk == i2c_clk_rate) in i2c_imx_set_clk()
530 i2c_imx->cur_clk = i2c_clk_rate; in i2c_imx_set_clk()
532 div = (i2c_clk_rate + i2c_imx->bitrate - 1) / i2c_imx->bitrate; in i2c_imx_set_clk()
535 else if (div > i2c_clk_div[i2c_imx->hwdata->ndivs - 1].div) in i2c_imx_set_clk()
536 i = i2c_imx->hwdata->ndivs - 1; in i2c_imx_set_clk()
542 i2c_imx->ifdr = i2c_clk_div[i].val; in i2c_imx_set_clk()
550 i2c_imx->disable_delay = (500000U * i2c_clk_div[i].div in i2c_imx_set_clk()
554 dev_dbg(&i2c_imx->adapter.dev, "I2C_CLK=%d, REQ DIV=%d\n", in i2c_imx_set_clk()
556 dev_dbg(&i2c_imx->adapter.dev, "IFDR[IC]=0x%x, REAL DIV=%d\n", in i2c_imx_set_clk()
565 struct imx_i2c_struct *i2c_imx = container_of(nb, in i2c_imx_clk_notifier_call() local
570 i2c_imx_set_clk(i2c_imx, ndata->new_rate); in i2c_imx_clk_notifier_call()
575 static int i2c_imx_start(struct imx_i2c_struct *i2c_imx, bool atomic) in i2c_imx_start() argument
580 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); in i2c_imx_start()
582 imx_i2c_write_reg(i2c_imx->ifdr, i2c_imx, IMX_I2C_IFDR); in i2c_imx_start()
584 imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR); in i2c_imx_start()
585 imx_i2c_write_reg(i2c_imx->hwdata->i2cr_ien_opcode, i2c_imx, IMX_I2C_I2CR); in i2c_imx_start()
594 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_start()
596 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_start()
597 result = i2c_imx_bus_busy(i2c_imx, 1, atomic); in i2c_imx_start()
606 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_start()
610 static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx, bool atomic) in i2c_imx_stop() argument
614 if (!i2c_imx->stopped) { in i2c_imx_stop()
616 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); in i2c_imx_stop()
617 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_stop()
619 i2c_imx->stopped = 1; in i2c_imx_stop()
621 if (i2c_imx->dma) in i2c_imx_stop()
623 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_stop()
625 if (is_imx1_i2c(i2c_imx)) { in i2c_imx_stop()
630 udelay(i2c_imx->disable_delay); in i2c_imx_stop()
633 if (!i2c_imx->stopped) in i2c_imx_stop()
634 i2c_imx_bus_busy(i2c_imx, 0, atomic); in i2c_imx_stop()
637 temp = i2c_imx->hwdata->i2cr_ien_opcode ^ I2CR_IEN, in i2c_imx_stop()
638 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_stop()
643 struct imx_i2c_struct *i2c_imx = dev_id; in i2c_imx_isr() local
646 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR); in i2c_imx_isr()
649 i2c_imx->i2csr = temp; in i2c_imx_isr()
650 i2c_imx_clear_irq(i2c_imx, I2SR_IIF); in i2c_imx_isr()
651 wake_up(&i2c_imx->queue); in i2c_imx_isr()
658 static int i2c_imx_dma_write(struct imx_i2c_struct *i2c_imx, in i2c_imx_dma_write() argument
665 struct imx_i2c_dma *dma = i2c_imx->dma; in i2c_imx_dma_write()
666 struct device *dev = &i2c_imx->adapter.dev; in i2c_imx_dma_write()
672 result = i2c_imx_dma_xfer(i2c_imx, msgs); in i2c_imx_dma_write()
676 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_write()
678 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_write()
684 imx_i2c_write_reg(i2c_8bit_addr_from_msg(msgs), i2c_imx, IMX_I2C_I2DR); in i2c_imx_dma_write()
686 &i2c_imx->dma->cmd_complete, in i2c_imx_dma_write()
695 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR); in i2c_imx_dma_write()
706 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_write()
708 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_write()
712 i2c_imx, IMX_I2C_I2DR); in i2c_imx_dma_write()
713 result = i2c_imx_trx_complete(i2c_imx, false); in i2c_imx_dma_write()
717 return i2c_imx_acked(i2c_imx); in i2c_imx_dma_write()
720 static int i2c_imx_dma_read(struct imx_i2c_struct *i2c_imx, in i2c_imx_dma_read() argument
727 struct imx_i2c_dma *dma = i2c_imx->dma; in i2c_imx_dma_read()
728 struct device *dev = &i2c_imx->adapter.dev; in i2c_imx_dma_read()
736 result = i2c_imx_dma_xfer(i2c_imx, msgs); in i2c_imx_dma_read()
741 &i2c_imx->dma->cmd_complete, in i2c_imx_dma_read()
750 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR); in i2c_imx_dma_read()
761 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
763 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
766 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
768 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
770 msgs->buf[msgs->len-2] = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); in i2c_imx_dma_read()
772 result = i2c_imx_trx_complete(i2c_imx, false); in i2c_imx_dma_read()
782 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
784 i2c_imx->stopped = 1; in i2c_imx_dma_read()
786 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
787 if (!i2c_imx->stopped) in i2c_imx_dma_read()
788 i2c_imx_bus_busy(i2c_imx, 0, false); in i2c_imx_dma_read()
797 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
799 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_dma_read()
801 msgs->buf[msgs->len-1] = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); in i2c_imx_dma_read()
806 static int i2c_imx_write(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, in i2c_imx_write() argument
811 dev_dbg(&i2c_imx->adapter.dev, "<%s> write slave address: addr=0x%x\n", in i2c_imx_write()
815 imx_i2c_write_reg(i2c_8bit_addr_from_msg(msgs), i2c_imx, IMX_I2C_I2DR); in i2c_imx_write()
816 result = i2c_imx_trx_complete(i2c_imx, atomic); in i2c_imx_write()
819 result = i2c_imx_acked(i2c_imx); in i2c_imx_write()
822 dev_dbg(&i2c_imx->adapter.dev, "<%s> write data\n", __func__); in i2c_imx_write()
826 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_write()
829 imx_i2c_write_reg(msgs->buf[i], i2c_imx, IMX_I2C_I2DR); in i2c_imx_write()
830 result = i2c_imx_trx_complete(i2c_imx, atomic); in i2c_imx_write()
833 result = i2c_imx_acked(i2c_imx); in i2c_imx_write()
840 static int i2c_imx_read(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, in i2c_imx_read() argument
846 int use_dma = i2c_imx->dma && msgs->len >= DMA_THRESHOLD && !block_data; in i2c_imx_read()
848 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_read()
853 imx_i2c_write_reg(i2c_8bit_addr_from_msg(msgs), i2c_imx, IMX_I2C_I2DR); in i2c_imx_read()
854 result = i2c_imx_trx_complete(i2c_imx, atomic); in i2c_imx_read()
857 result = i2c_imx_acked(i2c_imx); in i2c_imx_read()
861 dev_dbg(&i2c_imx->adapter.dev, "<%s> setup bus\n", __func__); in i2c_imx_read()
864 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
875 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
876 imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); /* dummy read */ in i2c_imx_read()
878 dev_dbg(&i2c_imx->adapter.dev, "<%s> read data\n", __func__); in i2c_imx_read()
881 return i2c_imx_dma_read(i2c_imx, msgs, is_lastmsg); in i2c_imx_read()
887 result = i2c_imx_trx_complete(i2c_imx, atomic); in i2c_imx_read()
896 len = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); in i2c_imx_read()
899 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_read()
910 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_read()
912 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
914 i2c_imx->stopped = 1; in i2c_imx_read()
916 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
917 if (!i2c_imx->stopped) in i2c_imx_read()
918 i2c_imx_bus_busy(i2c_imx, 0, atomic); in i2c_imx_read()
927 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
929 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
932 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_read()
934 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
936 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_read()
941 msgs->buf[i] = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); in i2c_imx_read()
942 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_read()
955 struct imx_i2c_struct *i2c_imx = i2c_get_adapdata(adapter); in i2c_imx_xfer_common() local
957 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); in i2c_imx_xfer_common()
960 result = i2c_imx_start(i2c_imx, atomic); in i2c_imx_xfer_common()
966 if (!atomic && i2c_imx->adapter.bus_recovery_info) { in i2c_imx_xfer_common()
967 i2c_recover_bus(&i2c_imx->adapter); in i2c_imx_xfer_common()
968 result = i2c_imx_start(i2c_imx, atomic); in i2c_imx_xfer_common()
981 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_xfer_common()
983 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_xfer_common()
985 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); in i2c_imx_xfer_common()
986 result = i2c_imx_bus_busy(i2c_imx, 1, atomic); in i2c_imx_xfer_common()
990 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_xfer_common()
994 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); in i2c_imx_xfer_common()
995 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_xfer_common()
1001 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR); in i2c_imx_xfer_common()
1002 dev_dbg(&i2c_imx->adapter.dev, in i2c_imx_xfer_common()
1011 result = i2c_imx_read(i2c_imx, &msgs[i], is_lastmsg, atomic); in i2c_imx_xfer_common()
1014 i2c_imx->dma && msgs[i].len >= DMA_THRESHOLD) in i2c_imx_xfer_common()
1015 result = i2c_imx_dma_write(i2c_imx, &msgs[i]); in i2c_imx_xfer_common()
1017 result = i2c_imx_write(i2c_imx, &msgs[i], atomic); in i2c_imx_xfer_common()
1025 i2c_imx_stop(i2c_imx, atomic); in i2c_imx_xfer_common()
1027 dev_dbg(&i2c_imx->adapter.dev, "<%s> exit with: %s: %d\n", __func__, in i2c_imx_xfer_common()
1036 struct imx_i2c_struct *i2c_imx = i2c_get_adapdata(adapter); in i2c_imx_xfer() local
1039 result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); in i2c_imx_xfer()
1045 pm_runtime_mark_last_busy(i2c_imx->adapter.dev.parent); in i2c_imx_xfer()
1046 pm_runtime_put_autosuspend(i2c_imx->adapter.dev.parent); in i2c_imx_xfer()
1054 struct imx_i2c_struct *i2c_imx = i2c_get_adapdata(adapter); in i2c_imx_xfer_atomic() local
1057 result = clk_enable(i2c_imx->clk); in i2c_imx_xfer_atomic()
1063 clk_disable(i2c_imx->clk); in i2c_imx_xfer_atomic()
1070 struct imx_i2c_struct *i2c_imx; in i2c_imx_prepare_recovery() local
1072 i2c_imx = container_of(adap, struct imx_i2c_struct, adapter); in i2c_imx_prepare_recovery()
1074 pinctrl_select_state(i2c_imx->pinctrl, i2c_imx->pinctrl_pins_gpio); in i2c_imx_prepare_recovery()
1079 struct imx_i2c_struct *i2c_imx; in i2c_imx_unprepare_recovery() local
1081 i2c_imx = container_of(adap, struct imx_i2c_struct, adapter); in i2c_imx_unprepare_recovery()
1083 pinctrl_select_state(i2c_imx->pinctrl, i2c_imx->pinctrl_pins_default); in i2c_imx_unprepare_recovery()
1093 static int i2c_imx_init_recovery_info(struct imx_i2c_struct *i2c_imx, in i2c_imx_init_recovery_info() argument
1096 struct i2c_bus_recovery_info *rinfo = &i2c_imx->rinfo; in i2c_imx_init_recovery_info()
1098 i2c_imx->pinctrl = devm_pinctrl_get(&pdev->dev); in i2c_imx_init_recovery_info()
1099 if (!i2c_imx->pinctrl || IS_ERR(i2c_imx->pinctrl)) { in i2c_imx_init_recovery_info()
1101 return PTR_ERR(i2c_imx->pinctrl); in i2c_imx_init_recovery_info()
1104 i2c_imx->pinctrl_pins_default = pinctrl_lookup_state(i2c_imx->pinctrl, in i2c_imx_init_recovery_info()
1106 i2c_imx->pinctrl_pins_gpio = pinctrl_lookup_state(i2c_imx->pinctrl, in i2c_imx_init_recovery_info()
1116 IS_ERR(i2c_imx->pinctrl_pins_default) || in i2c_imx_init_recovery_info()
1117 IS_ERR(i2c_imx->pinctrl_pins_gpio)) { in i2c_imx_init_recovery_info()
1128 i2c_imx->adapter.bus_recovery_info = rinfo; in i2c_imx_init_recovery_info()
1147 struct imx_i2c_struct *i2c_imx; in i2c_imx_probe() local
1167 i2c_imx = devm_kzalloc(&pdev->dev, sizeof(*i2c_imx), GFP_KERNEL); in i2c_imx_probe()
1168 if (!i2c_imx) in i2c_imx_probe()
1173 i2c_imx->hwdata = match; in i2c_imx_probe()
1175 i2c_imx->hwdata = (struct imx_i2c_hwdata *) in i2c_imx_probe()
1179 strlcpy(i2c_imx->adapter.name, pdev->name, sizeof(i2c_imx->adapter.name)); in i2c_imx_probe()
1180 i2c_imx->adapter.owner = THIS_MODULE; in i2c_imx_probe()
1181 i2c_imx->adapter.algo = &i2c_imx_algo; in i2c_imx_probe()
1182 i2c_imx->adapter.dev.parent = &pdev->dev; in i2c_imx_probe()
1183 i2c_imx->adapter.nr = pdev->id; in i2c_imx_probe()
1184 i2c_imx->adapter.dev.of_node = pdev->dev.of_node; in i2c_imx_probe()
1185 i2c_imx->base = base; in i2c_imx_probe()
1186 ACPI_COMPANION_SET(&i2c_imx->adapter.dev, ACPI_COMPANION(&pdev->dev)); in i2c_imx_probe()
1189 i2c_imx->clk = devm_clk_get(&pdev->dev, NULL); in i2c_imx_probe()
1190 if (IS_ERR(i2c_imx->clk)) in i2c_imx_probe()
1191 return dev_err_probe(&pdev->dev, PTR_ERR(i2c_imx->clk), in i2c_imx_probe()
1194 ret = clk_prepare_enable(i2c_imx->clk); in i2c_imx_probe()
1201 init_waitqueue_head(&i2c_imx->queue); in i2c_imx_probe()
1204 i2c_set_adapdata(&i2c_imx->adapter, i2c_imx); in i2c_imx_probe()
1207 platform_set_drvdata(pdev, i2c_imx); in i2c_imx_probe()
1220 pdev->name, i2c_imx); in i2c_imx_probe()
1227 i2c_imx->bitrate = I2C_MAX_STANDARD_MODE_FREQ; in i2c_imx_probe()
1229 "clock-frequency", &i2c_imx->bitrate); in i2c_imx_probe()
1231 i2c_imx->bitrate = pdata->bitrate; in i2c_imx_probe()
1232 i2c_imx->clk_change_nb.notifier_call = i2c_imx_clk_notifier_call; in i2c_imx_probe()
1233 clk_notifier_register(i2c_imx->clk, &i2c_imx->clk_change_nb); in i2c_imx_probe()
1234 i2c_imx_set_clk(i2c_imx, clk_get_rate(i2c_imx->clk)); in i2c_imx_probe()
1237 imx_i2c_write_reg(i2c_imx->hwdata->i2cr_ien_opcode ^ I2CR_IEN, in i2c_imx_probe()
1238 i2c_imx, IMX_I2C_I2CR); in i2c_imx_probe()
1239 imx_i2c_write_reg(i2c_imx->hwdata->i2sr_clr_opcode, i2c_imx, IMX_I2C_I2SR); in i2c_imx_probe()
1242 ret = i2c_imx_init_recovery_info(i2c_imx, pdev); in i2c_imx_probe()
1248 ret = i2c_add_numbered_adapter(&i2c_imx->adapter); in i2c_imx_probe()
1255 dev_dbg(&i2c_imx->adapter.dev, "claimed irq %d\n", irq); in i2c_imx_probe()
1256 dev_dbg(&i2c_imx->adapter.dev, "device resources: %pR\n", res); in i2c_imx_probe()
1257 dev_dbg(&i2c_imx->adapter.dev, "adapter name: \"%s\"\n", in i2c_imx_probe()
1258 i2c_imx->adapter.name); in i2c_imx_probe()
1259 dev_info(&i2c_imx->adapter.dev, "IMX I2C adapter registered\n"); in i2c_imx_probe()
1262 i2c_imx_dma_request(i2c_imx, phy_addr); in i2c_imx_probe()
1267 clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); in i2c_imx_probe()
1268 free_irq(irq, i2c_imx); in i2c_imx_probe()
1274 clk_disable_unprepare(i2c_imx->clk); in i2c_imx_probe()
1280 struct imx_i2c_struct *i2c_imx = platform_get_drvdata(pdev); in i2c_imx_remove() local
1288 dev_dbg(&i2c_imx->adapter.dev, "adapter removed\n"); in i2c_imx_remove()
1289 i2c_del_adapter(&i2c_imx->adapter); in i2c_imx_remove()
1291 if (i2c_imx->dma) in i2c_imx_remove()
1292 i2c_imx_dma_free(i2c_imx); in i2c_imx_remove()
1295 imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IADR); in i2c_imx_remove()
1296 imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IFDR); in i2c_imx_remove()
1297 imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2CR); in i2c_imx_remove()
1298 imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR); in i2c_imx_remove()
1300 clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb); in i2c_imx_remove()
1303 free_irq(irq, i2c_imx); in i2c_imx_remove()
1304 clk_disable_unprepare(i2c_imx->clk); in i2c_imx_remove()
1314 struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev); in i2c_imx_runtime_suspend() local
1316 clk_disable(i2c_imx->clk); in i2c_imx_runtime_suspend()
1323 struct imx_i2c_struct *i2c_imx = dev_get_drvdata(dev); in i2c_imx_runtime_resume() local
1326 ret = clk_enable(i2c_imx->clk); in i2c_imx_runtime_resume()