* [PATCH V2 0/2] Add device tree support of i2c Atmel driver @ 2014-08-04 8:31 Raphaël Poggi 2014-08-04 8:31 ` [PATCH V2 1/2] i2c: at91: add support of device tree Raphaël Poggi ` (2 more replies) 0 siblings, 3 replies; 18+ messages in thread From: Raphaël Poggi @ 2014-08-04 8:31 UTC (permalink / raw) To: barebox Change since v1: * Squash the commit [1] which adds the sam9x5 config. This patcheset adds the device tree support for i2c Atmel driver and the corresping clocks for the at91sam9g45 device. Raphaël Poggi (2) : (1) i2c: at91: add support of device tree (2) at91sam9g45: clock: add i2c clocks arch/arm/mach-at91/at91sam9g45.c | 4 +++ drivers/i2c/busses/i2c-at91.c | 66 +++++++++++++++++++++++++++++++++----- 2 files changed, 62 insertions(+), 8 deletions(-) [1]: http://lists.infradead.org/pipermail/barebox/2014-August/020493.html _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH V2 1/2] i2c: at91: add support of device tree 2014-08-04 8:31 [PATCH V2 0/2] Add device tree support of i2c Atmel driver Raphaël Poggi @ 2014-08-04 8:31 ` Raphaël Poggi 2014-08-04 9:14 ` Bo Shen 2014-08-04 8:31 ` [PATCH V2 2/2] at91sam9g45: clock: add i2c clocks Raphaël Poggi 2014-08-04 9:11 ` [PATCH V2 0/2] Add device tree support of i2c Atmel driver Bo Shen 2 siblings, 1 reply; 18+ messages in thread From: Raphaël Poggi @ 2014-08-04 8:31 UTC (permalink / raw) To: barebox; +Cc: Raphaël Poggi Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> --- drivers/i2c/busses/i2c-at91.c | 66 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 8 deletions(-) diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c index 399f6a9..944a8b3 100644 --- a/drivers/i2c/busses/i2c-at91.c +++ b/drivers/i2c/busses/i2c-at91.c @@ -346,6 +346,12 @@ static struct at91_twi_pdata at91sam9g10_config = { .has_unre_flag = false, }; +static struct at91_twi_pdata at91sam9x5_config = { + .clk_max_div = 7, + .clk_offset = 4, + .has_unre_flag = false, +}; + static struct platform_device_id at91_twi_devtypes[] = { { .name = "i2c-at91rm9200", @@ -367,20 +373,63 @@ static struct platform_device_id at91_twi_devtypes[] = { } }; +static struct of_device_id at91_twi_dt_ids[] = { + { + .compatible = "atmel,at91rm9200-i2c", + .data = (unsigned long) &at91rm9200_config, + } , { + .compatible = "atmel,at91sam9260-i2c", + .data = (unsigned long) &at91sam9260_config, + } , { + .compatible = "atmel,at91sam9261-i2c", + .data = (unsigned long) &at91sam9261_config, + } , { + .compatible = "atmel,at91sam9g20-i2c", + .data = (unsigned long) &at91sam9g20_config, + } , { + .compatible = "atmel,at91sam9g10-i2c", + .data = (unsigned long) &at91sam9g10_config, + }, { + .compatible = "atmel,at91sam9x5-i2c", + .data = (unsigned long) &at91sam9x5_config, + }, { + /* sentinel */ + } +}; + +static struct at91_twi_pdata *at91_twi_get_driver_data(struct device_d *dev) +{ + struct at91_twi_pdata *i2c_data = NULL; + int rc; + + if (dev->device_node) { + const struct of_device_id *match; + match = of_match_node(at91_twi_dt_ids, dev->device_node); + if (!match) + i2c_data = NULL; + else + i2c_data = (struct at91_twi_pdata *)match->data; + } + else { + rc = dev_get_drvdata(dev, (unsigned long *)&i2c_data); + if (rc) + i2c_data = NULL; + } + + return i2c_data; +} + static int at91_twi_probe(struct device_d *dev) { struct at91_twi_dev *i2c_at91; - struct at91_twi_pdata *i2c_data; - int rc; + int rc = 0; u32 bus_clk_rate; i2c_at91 = xzalloc(sizeof(struct at91_twi_dev)); - rc = dev_get_drvdata(dev, (unsigned long *)&i2c_data); - if (rc) - goto out_free; - - i2c_at91->pdata = i2c_data; + i2c_at91->pdata = at91_twi_get_driver_data(dev); + if (!i2c_at91->pdata) + goto out_free; i2c_at91->base = dev_request_mem_region(dev, 0); if (!i2c_at91->base) { @@ -389,7 +438,7 @@ static int at91_twi_probe(struct device_d *dev) goto out_free; } - i2c_at91->clk = clk_get(dev, "twi_clk"); + i2c_at91->clk = clk_get(dev, NULL); if (IS_ERR(i2c_at91->clk)) { dev_err(dev, "no clock defined\n"); rc = -ENODEV; @@ -429,6 +478,7 @@ static struct driver_d at91_twi_driver = { .name = "at91-twi", .probe = at91_twi_probe, .id_table = at91_twi_devtypes, + .of_compatible = DRV_OF_COMPAT(at91_twi_dt_ids), }; device_platform_driver(at91_twi_driver); -- 1.7.9.5 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 1/2] i2c: at91: add support of device tree 2014-08-04 8:31 ` [PATCH V2 1/2] i2c: at91: add support of device tree Raphaël Poggi @ 2014-08-04 9:14 ` Bo Shen 2014-08-04 9:42 ` Raphaël Poggi 0 siblings, 1 reply; 18+ messages in thread From: Bo Shen @ 2014-08-04 9:14 UTC (permalink / raw) To: Raphaël Poggi, barebox Hi Raphaël Poggi, On 08/04/2014 04:31 PM, Raphaël Poggi wrote: > Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> > --- > drivers/i2c/busses/i2c-at91.c | 66 ++++++++++++++++++++++++++++++++++++----- > 1 file changed, 58 insertions(+), 8 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c > index 399f6a9..944a8b3 100644 > --- a/drivers/i2c/busses/i2c-at91.c > +++ b/drivers/i2c/busses/i2c-at91.c > @@ -346,6 +346,12 @@ static struct at91_twi_pdata at91sam9g10_config = { > .has_unre_flag = false, > }; > > +static struct at91_twi_pdata at91sam9x5_config = { > + .clk_max_div = 7, > + .clk_offset = 4, > + .has_unre_flag = false, > +}; > + Can you add this also for non device tree? > static struct platform_device_id at91_twi_devtypes[] = { > { > .name = "i2c-at91rm9200", > @@ -367,20 +373,63 @@ static struct platform_device_id at91_twi_devtypes[] = { > } > }; > > +static struct of_device_id at91_twi_dt_ids[] = { > + { > + .compatible = "atmel,at91rm9200-i2c", > + .data = (unsigned long) &at91rm9200_config, > + } , { > + .compatible = "atmel,at91sam9260-i2c", > + .data = (unsigned long) &at91sam9260_config, > + } , { > + .compatible = "atmel,at91sam9261-i2c", > + .data = (unsigned long) &at91sam9261_config, > + } , { > + .compatible = "atmel,at91sam9g20-i2c", > + .data = (unsigned long) &at91sam9g20_config, > + } , { > + .compatible = "atmel,at91sam9g10-i2c", > + .data = (unsigned long) &at91sam9g10_config, > + }, { > + .compatible = "atmel,at91sam9x5-i2c", > + .data = (unsigned long) &at91sam9x5_config, > + }, { > + /* sentinel */ > + } > +}; > + > +static struct at91_twi_pdata *at91_twi_get_driver_data(struct device_d *dev) > +{ > + struct at91_twi_pdata *i2c_data = NULL; > + int rc; > + > + if (dev->device_node) { > + const struct of_device_id *match; > + match = of_match_node(at91_twi_dt_ids, dev->device_node); > + if (!match) > + i2c_data = NULL; > + else > + i2c_data = (struct at91_twi_pdata *)match->data; > + } > + else { Maybe better if: } else { > + rc = dev_get_drvdata(dev, (unsigned long *)&i2c_data); > + if (rc) > + i2c_data = NULL; > + } > + > + return i2c_data; > +} > + > static int at91_twi_probe(struct device_d *dev) > { > struct at91_twi_dev *i2c_at91; > - struct at91_twi_pdata *i2c_data; > - int rc; > + int rc = 0; > u32 bus_clk_rate; > > i2c_at91 = xzalloc(sizeof(struct at91_twi_dev)); > > - rc = dev_get_drvdata(dev, (unsigned long *)&i2c_data); > - if (rc) > - goto out_free; > - > - i2c_at91->pdata = i2c_data; > + i2c_at91->pdata = at91_twi_get_driver_data(dev); > + if (!i2c_at91->pdata) > + goto out_free; Maybe add error information will be better. Btw, do you use "tab" for alignment? > i2c_at91->base = dev_request_mem_region(dev, 0); > if (!i2c_at91->base) { > @@ -389,7 +438,7 @@ static int at91_twi_probe(struct device_d *dev) > goto out_free; > } > > - i2c_at91->clk = clk_get(dev, "twi_clk"); > + i2c_at91->clk = clk_get(dev, NULL); > if (IS_ERR(i2c_at91->clk)) { > dev_err(dev, "no clock defined\n"); > rc = -ENODEV; > @@ -429,6 +478,7 @@ static struct driver_d at91_twi_driver = { > .name = "at91-twi", > .probe = at91_twi_probe, > .id_table = at91_twi_devtypes, > + .of_compatible = DRV_OF_COMPAT(at91_twi_dt_ids), > }; > device_platform_driver(at91_twi_driver); > > Best Regards, Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 1/2] i2c: at91: add support of device tree 2014-08-04 9:14 ` Bo Shen @ 2014-08-04 9:42 ` Raphaël Poggi 2014-08-04 9:50 ` Bo Shen 0 siblings, 1 reply; 18+ messages in thread From: Raphaël Poggi @ 2014-08-04 9:42 UTC (permalink / raw) To: Bo Shen, barebox > Hi Raphaël Poggi, > > On 08/04/2014 04:31 PM, Raphaël Poggi wrote: > >Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> > >--- > > drivers/i2c/busses/i2c-at91.c | 66 ++++++++++++++++++++++++++++++++++++----- > > 1 file changed, 58 insertions(+), 8 deletions(-) > > > >diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c > >index 399f6a9..944a8b3 100644 > >--- a/drivers/i2c/busses/i2c-at91.c > >+++ b/drivers/i2c/busses/i2c-at91.c > >@@ -346,6 +346,12 @@ static struct at91_twi_pdata at91sam9g10_config = { > > .has_unre_flag = false, > > }; > > > >+static struct at91_twi_pdata at91sam9x5_config = { > >+ .clk_max_div = 7, > >+ .clk_offset = 4, > >+ .has_unre_flag = false, > >+}; > >+ > > Can you add this also for non device tree? Ok no problem. > > > static struct platform_device_id at91_twi_devtypes[] = { > > { > > .name = "i2c-at91rm9200", > >@@ -367,20 +373,63 @@ static struct platform_device_id at91_twi_devtypes[] = { > > } > > }; > > > >+static struct of_device_id at91_twi_dt_ids[] = { > >+ { > >+ .compatible = "atmel,at91rm9200-i2c", > >+ .data = (unsigned long) &at91rm9200_config, > >+ } , { > >+ .compatible = "atmel,at91sam9260-i2c", > >+ .data = (unsigned long) &at91sam9260_config, > >+ } , { > >+ .compatible = "atmel,at91sam9261-i2c", > >+ .data = (unsigned long) &at91sam9261_config, > >+ } , { > >+ .compatible = "atmel,at91sam9g20-i2c", > >+ .data = (unsigned long) &at91sam9g20_config, > >+ } , { > >+ .compatible = "atmel,at91sam9g10-i2c", > >+ .data = (unsigned long) &at91sam9g10_config, > >+ }, { > >+ .compatible = "atmel,at91sam9x5-i2c", > >+ .data = (unsigned long) &at91sam9x5_config, > >+ }, { > >+ /* sentinel */ > >+ } > >+}; > >+ > >+static struct at91_twi_pdata *at91_twi_get_driver_data(struct device_d *dev) > >+{ > >+ struct at91_twi_pdata *i2c_data = NULL; > >+ int rc; > >+ > >+ if (dev->device_node) { > >+ const struct of_device_id *match; > >+ match = of_match_node(at91_twi_dt_ids, dev->device_node); > >+ if (!match) > >+ i2c_data = NULL; > >+ else > >+ i2c_data = (struct at91_twi_pdata *)match->data; > >+ } > >+ else { > > Maybe better if: } else { Ok > > >+ rc = dev_get_drvdata(dev, (unsigned long *)&i2c_data); > >+ if (rc) > >+ i2c_data = NULL; > >+ } > >+ > >+ return i2c_data; > >+} > >+ > > static int at91_twi_probe(struct device_d *dev) > > { > > struct at91_twi_dev *i2c_at91; > >- struct at91_twi_pdata *i2c_data; > >- int rc; > >+ int rc = 0; > > u32 bus_clk_rate; > > > > i2c_at91 = xzalloc(sizeof(struct at91_twi_dev)); > > > >- rc = dev_get_drvdata(dev, (unsigned long *)&i2c_data); > >- if (rc) > >- goto out_free; > >- > >- i2c_at91->pdata = i2c_data; > >+ i2c_at91->pdata = at91_twi_get_driver_data(dev); > >+ if (!i2c_at91->pdata) > >+ goto out_free; > > Maybe add error information will be better. Yes, you're right. > > Btw, do you use "tab" for alignment? Yes, but maybe my vim config is wrong ? (set tabstop=4, set shiftwidth=4, set softtabstop=4) > > > i2c_at91->base = dev_request_mem_region(dev, 0); > > if (!i2c_at91->base) { > >@@ -389,7 +438,7 @@ static int at91_twi_probe(struct device_d *dev) > > goto out_free; > > } > > > >- i2c_at91->clk = clk_get(dev, "twi_clk"); > >+ i2c_at91->clk = clk_get(dev, NULL); > > if (IS_ERR(i2c_at91->clk)) { > > dev_err(dev, "no clock defined\n"); > > rc = -ENODEV; > >@@ -429,6 +478,7 @@ static struct driver_d at91_twi_driver = { > > .name = "at91-twi", > > .probe = at91_twi_probe, > > .id_table = at91_twi_devtypes, > >+ .of_compatible = DRV_OF_COMPAT(at91_twi_dt_ids), > > }; > > device_platform_driver(at91_twi_driver); > > > > > > Best Regards, > Bo Shen > Thanks for you review, Raphaël Poggi _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 1/2] i2c: at91: add support of device tree 2014-08-04 9:42 ` Raphaël Poggi @ 2014-08-04 9:50 ` Bo Shen 0 siblings, 0 replies; 18+ messages in thread From: Bo Shen @ 2014-08-04 9:50 UTC (permalink / raw) To: Raphaël Poggi; +Cc: barebox Hi Raphaël Poggi, On 08/04/2014 05:42 PM, Raphaël Poggi wrote: >> > >> >Btw, do you use "tab" for alignment? > Yes, but maybe my vim config is wrong ? (set tabstop=4, set shiftwidth=4, set softtabstop=4) In general, the tabstop = 8. Best Regards, Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH V2 2/2] at91sam9g45: clock: add i2c clocks 2014-08-04 8:31 [PATCH V2 0/2] Add device tree support of i2c Atmel driver Raphaël Poggi 2014-08-04 8:31 ` [PATCH V2 1/2] i2c: at91: add support of device tree Raphaël Poggi @ 2014-08-04 8:31 ` Raphaël Poggi 2014-08-04 9:17 ` Bo Shen 2014-08-04 9:11 ` [PATCH V2 0/2] Add device tree support of i2c Atmel driver Bo Shen 2 siblings, 1 reply; 18+ messages in thread From: Raphaël Poggi @ 2014-08-04 8:31 UTC (permalink / raw) To: barebox; +Cc: Raphaël Poggi Add the device tree and non device tree at91 i2c clocks. Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> --- arch/arm/mach-at91/at91sam9g45.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index f6031f0..d0f950c 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c @@ -192,6 +192,10 @@ static struct clk_lookup periph_clocks_lookups[] = { CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci1", &mmc1_clk), CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi0", &spi0_clk), CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi1", &spi1_clk), + CLKDEV_CON_DEV_ID(NULL, "at91-twi0", &twi0_clk), + CLKDEV_CON_DEV_ID(NULL, "at91-twi1", &twi1_clk), + CLKDEV_CON_DEV_ID(NULL, "fff84000.i2c", &twi0_clk), + CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk), CLKDEV_DEV_ID("at91rm9200-gpio0", &pioA_clk), CLKDEV_DEV_ID("at91rm9200-gpio1", &pioB_clk), CLKDEV_DEV_ID("at91rm9200-gpio2", &pioC_clk), -- 1.7.9.5 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 2/2] at91sam9g45: clock: add i2c clocks 2014-08-04 8:31 ` [PATCH V2 2/2] at91sam9g45: clock: add i2c clocks Raphaël Poggi @ 2014-08-04 9:17 ` Bo Shen 2014-08-04 9:28 ` Raphaël Poggi 0 siblings, 1 reply; 18+ messages in thread From: Bo Shen @ 2014-08-04 9:17 UTC (permalink / raw) To: Raphaël Poggi, barebox Hi Raphaël Poggi, On 08/04/2014 04:31 PM, Raphaël Poggi wrote: > Add the device tree and non device tree at91 i2c clocks. > > Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> > --- > arch/arm/mach-at91/at91sam9g45.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c > index f6031f0..d0f950c 100644 > --- a/arch/arm/mach-at91/at91sam9g45.c > +++ b/arch/arm/mach-at91/at91sam9g45.c > @@ -192,6 +192,10 @@ static struct clk_lookup periph_clocks_lookups[] = { > CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci1", &mmc1_clk), > CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi0", &spi0_clk), > CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi1", &spi1_clk), > + CLKDEV_CON_DEV_ID(NULL, "at91-twi0", &twi0_clk), s/CLKDEV_CON_DEV_ID/CLKDEV_DEV_ID (also for the following). the DEV_ID should be presented in the id_table in the driver. > + CLKDEV_CON_DEV_ID(NULL, "at91-twi1", &twi1_clk), > + CLKDEV_CON_DEV_ID(NULL, "fff84000.i2c", &twi0_clk), > + CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk), > CLKDEV_DEV_ID("at91rm9200-gpio0", &pioA_clk), > CLKDEV_DEV_ID("at91rm9200-gpio1", &pioB_clk), > CLKDEV_DEV_ID("at91rm9200-gpio2", &pioC_clk), > Best Regards, Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 2/2] at91sam9g45: clock: add i2c clocks 2014-08-04 9:17 ` Bo Shen @ 2014-08-04 9:28 ` Raphaël Poggi 0 siblings, 0 replies; 18+ messages in thread From: Raphaël Poggi @ 2014-08-04 9:28 UTC (permalink / raw) To: Bo Shen; +Cc: barebox Hi, I have used CLKDEV_CON_DEV_ID because it is like that in Linux, but ok I will replace it by CLKDEV_DEV_ID. Btw, can you explain me why in Linux it's CLKDEV_CON_DEV_ID ? (just by curiosity) Thanks, Raphaël Poggi 2014-08-04 11:17 GMT+02:00 Bo Shen <voice.shen@atmel.com>: > Hi Raphaël Poggi, > > > On 08/04/2014 04:31 PM, Raphaël Poggi wrote: >> >> Add the device tree and non device tree at91 i2c clocks. >> >> Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> >> --- >> arch/arm/mach-at91/at91sam9g45.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/arch/arm/mach-at91/at91sam9g45.c >> b/arch/arm/mach-at91/at91sam9g45.c >> index f6031f0..d0f950c 100644 >> --- a/arch/arm/mach-at91/at91sam9g45.c >> +++ b/arch/arm/mach-at91/at91sam9g45.c >> @@ -192,6 +192,10 @@ static struct clk_lookup periph_clocks_lookups[] = { >> CLKDEV_CON_DEV_ID("mci_clk", "atmel_mci1", &mmc1_clk), >> CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi0", &spi0_clk), >> CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi1", &spi1_clk), >> + CLKDEV_CON_DEV_ID(NULL, "at91-twi0", &twi0_clk), > > > s/CLKDEV_CON_DEV_ID/CLKDEV_DEV_ID (also for the following). > > the DEV_ID should be presented in the id_table in the driver. > > >> + CLKDEV_CON_DEV_ID(NULL, "at91-twi1", &twi1_clk), >> + CLKDEV_CON_DEV_ID(NULL, "fff84000.i2c", &twi0_clk), >> + CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk), >> CLKDEV_DEV_ID("at91rm9200-gpio0", &pioA_clk), >> CLKDEV_DEV_ID("at91rm9200-gpio1", &pioB_clk), >> CLKDEV_DEV_ID("at91rm9200-gpio2", &pioC_clk), >> > > Best Regards, > Bo Shen > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-04 8:31 [PATCH V2 0/2] Add device tree support of i2c Atmel driver Raphaël Poggi 2014-08-04 8:31 ` [PATCH V2 1/2] i2c: at91: add support of device tree Raphaël Poggi 2014-08-04 8:31 ` [PATCH V2 2/2] at91sam9g45: clock: add i2c clocks Raphaël Poggi @ 2014-08-04 9:11 ` Bo Shen 2014-08-04 9:22 ` Raphaël Poggi 2 siblings, 1 reply; 18+ messages in thread From: Bo Shen @ 2014-08-04 9:11 UTC (permalink / raw) To: Raphaël Poggi, barebox Hi Raphaël Poggi, I try to manage to make the i2c driver work, however, failed for non device tree. I am still checking it. However, some comments for the patches. Best Regards, Bo Shen On 08/04/2014 04:31 PM, Raphaël Poggi wrote: > Change since v1: > * Squash the commit [1] which adds the sam9x5 config. > > This patcheset adds the device tree support for i2c Atmel driver and the corresping clocks > for the at91sam9g45 device. > > Raphaël Poggi (2) : > (1) i2c: at91: add support of device tree > (2) at91sam9g45: clock: add i2c clocks > > arch/arm/mach-at91/at91sam9g45.c | 4 +++ > drivers/i2c/busses/i2c-at91.c | 66 +++++++++++++++++++++++++++++++++----- > 2 files changed, 62 insertions(+), 8 deletions(-) > > [1]: http://lists.infradead.org/pipermail/barebox/2014-August/020493.html Best Regards, Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-04 9:11 ` [PATCH V2 0/2] Add device tree support of i2c Atmel driver Bo Shen @ 2014-08-04 9:22 ` Raphaël Poggi 2014-08-04 9:29 ` Bo Shen 0 siblings, 1 reply; 18+ messages in thread From: Raphaël Poggi @ 2014-08-04 9:22 UTC (permalink / raw) To: Bo Shen; +Cc: barebox Hi, I have tested it on a custom board which use a sam9m10 and it worked... Tell me more when we have found something suspicious. Thanks for your test. Raphaël Poggi 2014-08-04 11:11 GMT+02:00 Bo Shen <voice.shen@atmel.com>: > Hi Raphaël Poggi, > I try to manage to make the i2c driver work, however, failed for non > device tree. > I am still checking it. However, some comments for the patches. > > Best Regards, > Bo Shen > > > On 08/04/2014 04:31 PM, Raphaël Poggi wrote: >> >> Change since v1: >> * Squash the commit [1] which adds the sam9x5 config. >> >> This patcheset adds the device tree support for i2c Atmel driver and the >> corresping clocks >> for the at91sam9g45 device. >> >> Raphaël Poggi (2) : >> (1) i2c: at91: add support of device tree >> (2) at91sam9g45: clock: add i2c clocks >> >> arch/arm/mach-at91/at91sam9g45.c | 4 +++ >> drivers/i2c/busses/i2c-at91.c | 66 >> +++++++++++++++++++++++++++++++++----- >> 2 files changed, 62 insertions(+), 8 deletions(-) >> >> [1]: http://lists.infradead.org/pipermail/barebox/2014-August/020493.html > > > Best Regards, > Bo Shen > > > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-04 9:22 ` Raphaël Poggi @ 2014-08-04 9:29 ` Bo Shen 2014-08-05 6:55 ` Bo Shen 0 siblings, 1 reply; 18+ messages in thread From: Bo Shen @ 2014-08-04 9:29 UTC (permalink / raw) To: Raphaël Poggi; +Cc: barebox Hi Raphaël Poggi, On 08/04/2014 05:22 PM, Raphaël Poggi wrote: > Hi, > > I have tested it on a custom board which use a sam9m10 and it > worked... Tell me more when we have found something suspicious. I tested on sama5d3xek with qt1070 connect to i2c, and the i2c host register successfully, however can not access qt1070, if I use i2c-gpio driver, it works well. I am still working on it, if any news, I will let you know. Best Regards, Bo Shen > Thanks for your test. > > Raphaël Poggi > > 2014-08-04 11:11 GMT+02:00 Bo Shen <voice.shen@atmel.com>: >> Hi Raphaël Poggi, >> I try to manage to make the i2c driver work, however, failed for non >> device tree. >> I am still checking it. However, some comments for the patches. >> >> Best Regards, >> Bo Shen >> >> >> On 08/04/2014 04:31 PM, Raphaël Poggi wrote: >>> >>> Change since v1: >>> * Squash the commit [1] which adds the sam9x5 config. >>> >>> This patcheset adds the device tree support for i2c Atmel driver and the >>> corresping clocks >>> for the at91sam9g45 device. >>> >>> Raphaël Poggi (2) : >>> (1) i2c: at91: add support of device tree >>> (2) at91sam9g45: clock: add i2c clocks >>> >>> arch/arm/mach-at91/at91sam9g45.c | 4 +++ >>> drivers/i2c/busses/i2c-at91.c | 66 >>> +++++++++++++++++++++++++++++++++----- >>> 2 files changed, 62 insertions(+), 8 deletions(-) >>> >>> [1]: http://lists.infradead.org/pipermail/barebox/2014-August/020493.html >> >> >> Best Regards, >> Bo Shen >> >> >> >> _______________________________________________ >> barebox mailing list >> barebox@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/barebox > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox > _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-04 9:29 ` Bo Shen @ 2014-08-05 6:55 ` Bo Shen 2014-08-05 8:32 ` Raphaël Poggi 0 siblings, 1 reply; 18+ messages in thread From: Bo Shen @ 2014-08-05 6:55 UTC (permalink / raw) To: Raphaël Poggi; +Cc: barebox [-- Attachment #1: Type: text/plain, Size: 765 bytes --] Hi Raphaël Poggi, On 08/04/2014 05:29 PM, Bo Shen wrote: > Hi Raphaël Poggi, > > On 08/04/2014 05:22 PM, Raphaël Poggi wrote: >> Hi, >> >> I have tested it on a custom board which use a sam9m10 and it >> worked... Tell me more when we have found something suspicious. > > I tested on sama5d3xek with qt1070 connect to i2c, and the i2c host > register successfully, however can not access qt1070, if I use i2c-gpio > driver, it works well. > > I am still working on it, if any news, I will let you know. I have re-write the interrupt function as the enclosed patch. Then, the i2c host driver works properly. Can you help test it also on your board? Thanks. > Best Regards, > Bo Shen > >> Thanks for your test. >> >> Raphaël Poggi >> Best Regards, Bo Shen [-- Attachment #2: 0001-I2C-at91-fix-the-method-for-interrupt.patch --] [-- Type: text/x-patch, Size: 2146 bytes --] From 1dd3da701f15d360b5432c9d2eb6e5ca1e5368ad Mon Sep 17 00:00:00 2001 From: Bo Shen <voice.shen@atmel.com> Date: Tue, 5 Aug 2014 14:41:31 +0800 Subject: [PATCH] I2C: at91: fix the method for interrupt As the i2c-at91 driver won't work in the interrupt mode, so need to poll the interrupts. Signed-off-by: Bo Shen <voice.shen@atmel.com> --- drivers/i2c/busses/i2c-at91.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c index 944a8b3..8e3afe6 100644 --- a/drivers/i2c/busses/i2c-at91.c +++ b/drivers/i2c/busses/i2c-at91.c @@ -174,24 +174,32 @@ static void at91_twi_read_next_byte(struct at91_twi_dev *dev) static int at91_twi_wait_completion(struct at91_twi_dev *dev) { uint64_t start = get_time_ns(); - unsigned int status = at91_twi_read(dev, AT91_TWI_SR); - unsigned int irqstatus = at91_twi_read(dev, AT91_TWI_IMR); + unsigned int status; + unsigned int irqstatus; + + do { + status = at91_twi_read(dev, AT91_TWI_SR); + irqstatus = at91_twi_read(dev, AT91_TWI_IMR); + + if (!(status & irqstatus)) { + if(is_timeout(start, AT91_I2C_TIMEOUT)) { + dev_warn(&dev->adapter.dev, "timeout waiting for bus ready\n"); + return -ETIMEDOUT; + } else { + continue; + } + } - if (irqstatus & AT91_TWI_RXRDY) - at91_twi_read_next_byte(dev); - else if (irqstatus & AT91_TWI_TXRDY) - at91_twi_write_next_byte(dev); - else - dev_warn(&dev->adapter.dev, "neither rx and tx are ready\n"); + if (irqstatus & AT91_TWI_RXRDY) + at91_twi_read_next_byte(dev); + else if (irqstatus & AT91_TWI_TXRDY) + at91_twi_write_next_byte(dev); + else + dev_warn(&dev->adapter.dev, "neither rx and tx are ready\n"); - dev->transfer_status |= status; + dev->transfer_status |= status; - while(!(at91_twi_read(dev, AT91_TWI_SR) & AT91_TWI_TXCOMP)) { - if(is_timeout(start, AT91_I2C_TIMEOUT)) { - dev_warn(&dev->adapter.dev, "timeout waiting for bus ready\n"); - return -ETIMEDOUT; - } - } + } while (!(at91_twi_read(dev, AT91_TWI_SR) & AT91_TWI_TXCOMP)); at91_disable_twi_interrupts(dev); -- 1.8.5.2 [-- Attachment #3: Type: text/plain, Size: 149 bytes --] _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-05 6:55 ` Bo Shen @ 2014-08-05 8:32 ` Raphaël Poggi 2014-08-05 20:05 ` Raphaël Poggi 0 siblings, 1 reply; 18+ messages in thread From: Raphaël Poggi @ 2014-08-05 8:32 UTC (permalink / raw) To: Bo Shen; +Cc: barebox Hello, The patch works fine for me. Thanks for your review/help. Best Regards, Raphaël Poggi 2014-08-05 8:55 GMT+02:00 Bo Shen <voice.shen@atmel.com>: > Hi Raphaël Poggi, > > > On 08/04/2014 05:29 PM, Bo Shen wrote: >> >> Hi Raphaël Poggi, >> >> On 08/04/2014 05:22 PM, Raphaël Poggi wrote: >>> >>> Hi, >>> >>> I have tested it on a custom board which use a sam9m10 and it >>> worked... Tell me more when we have found something suspicious. >> >> >> I tested on sama5d3xek with qt1070 connect to i2c, and the i2c host >> register successfully, however can not access qt1070, if I use i2c-gpio >> driver, it works well. >> >> I am still working on it, if any news, I will let you know. > > > I have re-write the interrupt function as the enclosed patch. Then, the i2c > host driver works properly. > > Can you help test it also on your board? > > Thanks. > > >> Best Regards, >> Bo Shen >> >>> Thanks for your test. >>> >>> Raphaël Poggi >>> > > Best Regards, > Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-05 8:32 ` Raphaël Poggi @ 2014-08-05 20:05 ` Raphaël Poggi 2014-08-06 1:06 ` Bo Shen 0 siblings, 1 reply; 18+ messages in thread From: Raphaël Poggi @ 2014-08-05 20:05 UTC (permalink / raw) To: Bo Shen; +Cc: barebox I am ready to send a v3. Are you going to send your fix or you want me to squash it in v3 ? Best Regards, Raphaël Poggi 2014-08-05 10:32 GMT+02:00 Raphaël Poggi <raphio98@gmail.com>: > Hello, > > The patch works fine for me. Thanks for your review/help. > > Best Regards, > Raphaël Poggi > > 2014-08-05 8:55 GMT+02:00 Bo Shen <voice.shen@atmel.com>: >> Hi Raphaël Poggi, >> >> >> On 08/04/2014 05:29 PM, Bo Shen wrote: >>> >>> Hi Raphaël Poggi, >>> >>> On 08/04/2014 05:22 PM, Raphaël Poggi wrote: >>>> >>>> Hi, >>>> >>>> I have tested it on a custom board which use a sam9m10 and it >>>> worked... Tell me more when we have found something suspicious. >>> >>> >>> I tested on sama5d3xek with qt1070 connect to i2c, and the i2c host >>> register successfully, however can not access qt1070, if I use i2c-gpio >>> driver, it works well. >>> >>> I am still working on it, if any news, I will let you know. >> >> >> I have re-write the interrupt function as the enclosed patch. Then, the i2c >> host driver works properly. >> >> Can you help test it also on your board? >> >> Thanks. >> >> >>> Best Regards, >>> Bo Shen >>> >>>> Thanks for your test. >>>> >>>> Raphaël Poggi >>>> >> >> Best Regards, >> Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-05 20:05 ` Raphaël Poggi @ 2014-08-06 1:06 ` Bo Shen 2014-08-06 7:16 ` Raphaël Poggi 0 siblings, 1 reply; 18+ messages in thread From: Bo Shen @ 2014-08-06 1:06 UTC (permalink / raw) To: Raphaël Poggi; +Cc: barebox Hi Raphaël Poggi, On 08/06/2014 04:05 AM, Raphaël Poggi wrote: > I am ready to send a v3. Are you going to send your fix or you want me > to squash it in v3 ? Please send it together with your patch. Thanks. > Best Regards, > Raphaël Poggi Best Regards, Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-06 1:06 ` Bo Shen @ 2014-08-06 7:16 ` Raphaël Poggi 2014-08-06 7:33 ` Bo Shen 0 siblings, 1 reply; 18+ messages in thread From: Raphaël Poggi @ 2014-08-06 7:16 UTC (permalink / raw) To: Bo Shen; +Cc: barebox Ok, about the "signed-off", do I have to let your name ? or my name + your name ? Sorry if my question seems stupid, but i'm new to open source development. 2014-08-06 3:06 GMT+02:00 Bo Shen <voice.shen@atmel.com>: > Hi Raphaël Poggi, > > > On 08/06/2014 04:05 AM, Raphaël Poggi wrote: >> >> I am ready to send a v3. Are you going to send your fix or you want me >> to squash it in v3 ? > > > Please send it together with your patch. > Thanks. > >> Best Regards, >> Raphaël Poggi > > > Best Regards, > Bo Shen > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-06 7:16 ` Raphaël Poggi @ 2014-08-06 7:33 ` Bo Shen 2014-08-06 7:40 ` Raphaël Poggi 0 siblings, 1 reply; 18+ messages in thread From: Bo Shen @ 2014-08-06 7:33 UTC (permalink / raw) To: Raphaël Poggi; +Cc: barebox Hi Raphaël Poggi, On 08/06/2014 03:16 PM, Raphaël Poggi wrote: > Ok, about the "signed-off", do I have to let your name ? or my name + > your name ? Sorry if my question seems stupid, but i'm new to open > source development. I think, you can first "git am" my patch, and then apply your patch and generate the series and send it, then there won't have "signed-off" issue. (In general, keep my "signed-off" and add your "signed-off" if you prefer). Best Regards, Bo Shen _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH V2 0/2] Add device tree support of i2c Atmel driver 2014-08-06 7:33 ` Bo Shen @ 2014-08-06 7:40 ` Raphaël Poggi 0 siblings, 0 replies; 18+ messages in thread From: Raphaël Poggi @ 2014-08-06 7:40 UTC (permalink / raw) To: Bo Shen; +Cc: barebox All right, thanks. Raphaël Poggi 2014-08-06 9:33 GMT+02:00 Bo Shen <voice.shen@atmel.com>: > Hi Raphaël Poggi, > > > On 08/06/2014 03:16 PM, Raphaël Poggi wrote: >> >> Ok, about the "signed-off", do I have to let your name ? or my name + >> your name ? Sorry if my question seems stupid, but i'm new to open >> source development. > > > I think, you can first "git am" my patch, and then apply your patch and > generate the series and send it, then there won't have "signed-off" issue. > (In general, keep my "signed-off" and add your "signed-off" if you prefer). > > > Best Regards, > Bo Shen > > > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2014-08-06 7:41 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-08-04 8:31 [PATCH V2 0/2] Add device tree support of i2c Atmel driver Raphaël Poggi 2014-08-04 8:31 ` [PATCH V2 1/2] i2c: at91: add support of device tree Raphaël Poggi 2014-08-04 9:14 ` Bo Shen 2014-08-04 9:42 ` Raphaël Poggi 2014-08-04 9:50 ` Bo Shen 2014-08-04 8:31 ` [PATCH V2 2/2] at91sam9g45: clock: add i2c clocks Raphaël Poggi 2014-08-04 9:17 ` Bo Shen 2014-08-04 9:28 ` Raphaël Poggi 2014-08-04 9:11 ` [PATCH V2 0/2] Add device tree support of i2c Atmel driver Bo Shen 2014-08-04 9:22 ` Raphaël Poggi 2014-08-04 9:29 ` Bo Shen 2014-08-05 6:55 ` Bo Shen 2014-08-05 8:32 ` Raphaël Poggi 2014-08-05 20:05 ` Raphaël Poggi 2014-08-06 1:06 ` Bo Shen 2014-08-06 7:16 ` Raphaël Poggi 2014-08-06 7:33 ` Bo Shen 2014-08-06 7:40 ` Raphaël Poggi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox