riic              107 drivers/i2c/busses/i2c-riic.c static inline void riic_clear_set_bit(struct riic_dev *riic, u8 clear, u8 set, u8 reg)
riic              109 drivers/i2c/busses/i2c-riic.c 	writeb((readb(riic->base + reg) & ~clear) | set, riic->base + reg);
riic              114 drivers/i2c/busses/i2c-riic.c 	struct riic_dev *riic = i2c_get_adapdata(adap);
riic              121 drivers/i2c/busses/i2c-riic.c 	if (readb(riic->base + RIIC_ICCR2) & ICCR2_BBSY) {
riic              122 drivers/i2c/busses/i2c-riic.c 		riic->err = -EBUSY;
riic              126 drivers/i2c/busses/i2c-riic.c 	reinit_completion(&riic->msg_done);
riic              127 drivers/i2c/busses/i2c-riic.c 	riic->err = 0;
riic              129 drivers/i2c/busses/i2c-riic.c 	writeb(0, riic->base + RIIC_ICSR2);
riic              132 drivers/i2c/busses/i2c-riic.c 		riic->bytes_left = RIIC_INIT_MSG;
riic              133 drivers/i2c/busses/i2c-riic.c 		riic->buf = msgs[i].buf;
riic              134 drivers/i2c/busses/i2c-riic.c 		riic->msg = &msgs[i];
riic              135 drivers/i2c/busses/i2c-riic.c 		riic->is_last = (i == num - 1);
riic              137 drivers/i2c/busses/i2c-riic.c 		writeb(ICIER_NAKIE | ICIER_TIE, riic->base + RIIC_ICIER);
riic              139 drivers/i2c/busses/i2c-riic.c 		writeb(start_bit, riic->base + RIIC_ICCR2);
riic              141 drivers/i2c/busses/i2c-riic.c 		time_left = wait_for_completion_timeout(&riic->msg_done, riic->adapter.timeout);
riic              143 drivers/i2c/busses/i2c-riic.c 			riic->err = -ETIMEDOUT;
riic              145 drivers/i2c/busses/i2c-riic.c 		if (riic->err)
riic              154 drivers/i2c/busses/i2c-riic.c 	return riic->err ?: num;
riic              159 drivers/i2c/busses/i2c-riic.c 	struct riic_dev *riic = data;
riic              162 drivers/i2c/busses/i2c-riic.c 	if (!riic->bytes_left)
riic              165 drivers/i2c/busses/i2c-riic.c 	if (riic->bytes_left == RIIC_INIT_MSG) {
riic              166 drivers/i2c/busses/i2c-riic.c 		if (riic->msg->flags & I2C_M_RD)
riic              168 drivers/i2c/busses/i2c-riic.c 			riic_clear_set_bit(riic, ICIER_TIE, ICIER_RIE, RIIC_ICIER);
riic              171 drivers/i2c/busses/i2c-riic.c 			riic->bytes_left = riic->msg->len;
riic              173 drivers/i2c/busses/i2c-riic.c 		val = i2c_8bit_addr_from_msg(riic->msg);
riic              175 drivers/i2c/busses/i2c-riic.c 		val = *riic->buf;
riic              176 drivers/i2c/busses/i2c-riic.c 		riic->buf++;
riic              177 drivers/i2c/busses/i2c-riic.c 		riic->bytes_left--;
riic              185 drivers/i2c/busses/i2c-riic.c 	if (riic->bytes_left == 0)
riic              186 drivers/i2c/busses/i2c-riic.c 		riic_clear_set_bit(riic, ICIER_TIE, ICIER_TEIE, RIIC_ICIER);
riic              193 drivers/i2c/busses/i2c-riic.c 	writeb(val, riic->base + RIIC_ICDRT);
riic              200 drivers/i2c/busses/i2c-riic.c 	struct riic_dev *riic = data;
riic              202 drivers/i2c/busses/i2c-riic.c 	if (readb(riic->base + RIIC_ICSR2) & ICSR2_NACKF) {
riic              204 drivers/i2c/busses/i2c-riic.c 		readb(riic->base + RIIC_ICDRR);	/* dummy read */
riic              205 drivers/i2c/busses/i2c-riic.c 		riic_clear_set_bit(riic, ICSR2_NACKF, 0, RIIC_ICSR2);
riic              206 drivers/i2c/busses/i2c-riic.c 		riic->err = -ENXIO;
riic              207 drivers/i2c/busses/i2c-riic.c 	} else if (riic->bytes_left) {
riic              211 drivers/i2c/busses/i2c-riic.c 	if (riic->is_last || riic->err) {
riic              212 drivers/i2c/busses/i2c-riic.c 		riic_clear_set_bit(riic, ICIER_TEIE, ICIER_SPIE, RIIC_ICIER);
riic              213 drivers/i2c/busses/i2c-riic.c 		writeb(ICCR2_SP, riic->base + RIIC_ICCR2);
riic              216 drivers/i2c/busses/i2c-riic.c 		riic_clear_set_bit(riic, ICIER_TEIE, 0, RIIC_ICIER);
riic              217 drivers/i2c/busses/i2c-riic.c 		complete(&riic->msg_done);
riic              225 drivers/i2c/busses/i2c-riic.c 	struct riic_dev *riic = data;
riic              227 drivers/i2c/busses/i2c-riic.c 	if (!riic->bytes_left)
riic              230 drivers/i2c/busses/i2c-riic.c 	if (riic->bytes_left == RIIC_INIT_MSG) {
riic              231 drivers/i2c/busses/i2c-riic.c 		riic->bytes_left = riic->msg->len;
riic              232 drivers/i2c/busses/i2c-riic.c 		readb(riic->base + RIIC_ICDRR);	/* dummy read */
riic              236 drivers/i2c/busses/i2c-riic.c 	if (riic->bytes_left == 1) {
riic              238 drivers/i2c/busses/i2c-riic.c 		if (riic->is_last) {
riic              239 drivers/i2c/busses/i2c-riic.c 			riic_clear_set_bit(riic, 0, ICIER_SPIE, RIIC_ICIER);
riic              240 drivers/i2c/busses/i2c-riic.c 			writeb(ICCR2_SP, riic->base + RIIC_ICCR2);
riic              243 drivers/i2c/busses/i2c-riic.c 		riic_clear_set_bit(riic, 0, ICMR3_ACKBT, RIIC_ICMR3);
riic              246 drivers/i2c/busses/i2c-riic.c 		riic_clear_set_bit(riic, ICMR3_ACKBT, 0, RIIC_ICMR3);
riic              250 drivers/i2c/busses/i2c-riic.c 	*riic->buf = readb(riic->base + RIIC_ICDRR);
riic              251 drivers/i2c/busses/i2c-riic.c 	riic->buf++;
riic              252 drivers/i2c/busses/i2c-riic.c 	riic->bytes_left--;
riic              259 drivers/i2c/busses/i2c-riic.c 	struct riic_dev *riic = data;
riic              262 drivers/i2c/busses/i2c-riic.c 	writeb(0, riic->base + RIIC_ICSR2);
riic              263 drivers/i2c/busses/i2c-riic.c 	readb(riic->base + RIIC_ICSR2);
riic              264 drivers/i2c/busses/i2c-riic.c 	writeb(0, riic->base + RIIC_ICIER);
riic              265 drivers/i2c/busses/i2c-riic.c 	readb(riic->base + RIIC_ICIER);
riic              267 drivers/i2c/busses/i2c-riic.c 	complete(&riic->msg_done);
riic              282 drivers/i2c/busses/i2c-riic.c static int riic_init_hw(struct riic_dev *riic, struct i2c_timings *t)
riic              288 drivers/i2c/busses/i2c-riic.c 	pm_runtime_get_sync(riic->adapter.dev.parent);
riic              291 drivers/i2c/busses/i2c-riic.c 		dev_err(&riic->adapter.dev,
riic              298 drivers/i2c/busses/i2c-riic.c 	rate = clk_get_rate(riic->clk);
riic              331 drivers/i2c/busses/i2c-riic.c 		dev_err(&riic->adapter.dev, "invalid speed (%lu). Too slow.\n",
riic              367 drivers/i2c/busses/i2c-riic.c 	writeb(ICCR1_IICRST | ICCR1_SOWP, riic->base + RIIC_ICCR1);
riic              368 drivers/i2c/busses/i2c-riic.c 	riic_clear_set_bit(riic, 0, ICCR1_ICE, RIIC_ICCR1);
riic              370 drivers/i2c/busses/i2c-riic.c 	writeb(ICMR1_CKS(cks), riic->base + RIIC_ICMR1);
riic              371 drivers/i2c/busses/i2c-riic.c 	writeb(brh | ICBR_RESERVED, riic->base + RIIC_ICBRH);
riic              372 drivers/i2c/busses/i2c-riic.c 	writeb(brl | ICBR_RESERVED, riic->base + RIIC_ICBRL);
riic              374 drivers/i2c/busses/i2c-riic.c 	writeb(0, riic->base + RIIC_ICSER);
riic              375 drivers/i2c/busses/i2c-riic.c 	writeb(ICMR3_ACKWP | ICMR3_RDRFS, riic->base + RIIC_ICMR3);
riic              377 drivers/i2c/busses/i2c-riic.c 	riic_clear_set_bit(riic, ICCR1_IICRST, 0, RIIC_ICCR1);
riic              380 drivers/i2c/busses/i2c-riic.c 	pm_runtime_put(riic->adapter.dev.parent);
riic              394 drivers/i2c/busses/i2c-riic.c 	struct riic_dev *riic;
riic              400 drivers/i2c/busses/i2c-riic.c 	riic = devm_kzalloc(&pdev->dev, sizeof(*riic), GFP_KERNEL);
riic              401 drivers/i2c/busses/i2c-riic.c 	if (!riic)
riic              405 drivers/i2c/busses/i2c-riic.c 	riic->base = devm_ioremap_resource(&pdev->dev, res);
riic              406 drivers/i2c/busses/i2c-riic.c 	if (IS_ERR(riic->base))
riic              407 drivers/i2c/busses/i2c-riic.c 		return PTR_ERR(riic->base);
riic              409 drivers/i2c/busses/i2c-riic.c 	riic->clk = devm_clk_get(&pdev->dev, NULL);
riic              410 drivers/i2c/busses/i2c-riic.c 	if (IS_ERR(riic->clk)) {
riic              412 drivers/i2c/busses/i2c-riic.c 		return PTR_ERR(riic->clk);
riic              421 drivers/i2c/busses/i2c-riic.c 					0, riic_irqs[i].name, riic);
riic              428 drivers/i2c/busses/i2c-riic.c 	adap = &riic->adapter;
riic              429 drivers/i2c/busses/i2c-riic.c 	i2c_set_adapdata(adap, riic);
riic              436 drivers/i2c/busses/i2c-riic.c 	init_completion(&riic->msg_done);
riic              442 drivers/i2c/busses/i2c-riic.c 	ret = riic_init_hw(riic, &i2c_t);
riic              450 drivers/i2c/busses/i2c-riic.c 	platform_set_drvdata(pdev, riic);
riic              463 drivers/i2c/busses/i2c-riic.c 	struct riic_dev *riic = platform_get_drvdata(pdev);
riic              466 drivers/i2c/busses/i2c-riic.c 	writeb(0, riic->base + RIIC_ICIER);
riic              468 drivers/i2c/busses/i2c-riic.c 	i2c_del_adapter(&riic->adapter);