> >>+#include <linux/clk.h> > >>+#include <linux/delay.h> > >>+#include <linux/i2c.h> > >>+#include <linux/io.h> > >>+#include <linux/interrupt.h> > >>+#include <linux/module.h> > >>+#include <linux/platform_device.h> > >>+#include <linux/pm_runtime.h> > > > >I think there should be at least of.h, too. > The of.h is already in i2c.h > include/linux/i2c.h:33:#include <linux/of.h> Please add it nonetheless, because you use e.g. of_property_read_u32() directly. That makes you independet of changes to i2c.h. > >>+ rate = i2c->s_clock; > >>+ sysclock = clk_get_rate(i2c->clk); > >>+ sclh = (sysclock / (rate * 2)) / 2 - 1; > >>+ writel_relaxed(sclh, i2c->regs + HIX5I2C_SCL_H); > >>+ scll = (sysclock / (rate * 2)) / 2 - 1; > > > >scll and sclh use the same formula? Have you measured the setup > >frequency with a scope? > Yes, it is confusing, will use the same vector scl instead. > The value is same means sclk high voltage and low voltage keep same time. OK.
Attachment:
signature.asc
Description: Digital signature