* [PATCH 00/03] i2c: i2c-sh_mobile update for SH-Mobile ARM @ 2010-03-11 10:05 ` Magnus Damm 0 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:05 UTC (permalink / raw) To: linux-i2c Cc: linux-sh, nishimoto.hiroki, morimoto.kuninori, lethal, khali, Magnus Damm i2c: i2c-sh_mobile update for SH-Mobile ARM [PATCH 01/03] i2c: i2c-sh_mobile register access code break out [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM These patches add support for a newer version of the IIC block to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. Perhaps suitable for the SH tree? --- drivers/i2c/busses/Kconfig | 2 drivers/i2c/busses/i2c-sh_mobile.c | 121 ++++++++++++++++++++++++------------ 2 files changed, 85 insertions(+), 38 deletions(-) ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 00/03] i2c: i2c-sh_mobile update for SH-Mobile ARM @ 2010-03-11 10:05 ` Magnus Damm 0 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:05 UTC (permalink / raw) To: linux-i2c Cc: linux-sh, nishimoto.hiroki, morimoto.kuninori, lethal, khali, Magnus Damm i2c: i2c-sh_mobile update for SH-Mobile ARM [PATCH 01/03] i2c: i2c-sh_mobile register access code break out [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM These patches add support for a newer version of the IIC block to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. Perhaps suitable for the SH tree? --- drivers/i2c/busses/Kconfig | 2 drivers/i2c/busses/i2c-sh_mobile.c | 121 ++++++++++++++++++++++++------------ 2 files changed, 85 insertions(+), 38 deletions(-) ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH] ARM: mach-shmobile: sh7367 INTCS support @ 2010-03-11 6:52 ` Magnus Damm 2010-03-11 5:30 ` [PATCH] ARM: mach-shmobile: add INTCS macros Magnus Damm 0 siblings, 1 reply; 16+ messages in thread From: Magnus Damm @ 2010-03-11 6:52 UTC (permalink / raw) To: linux-sh From: Magnus Damm <damm@opensource.se> Add support for the sh7367 INTCS interrupt controller. INTCS is the interrupt controller for the sh7367 SuperH processor core. It is tied into the INTCA interrupt controller which interfaces to the ARM processor. INTCS support is implemented using a new INTC table together with a chained interrupt handler that ties into the already supported INTCA controller. Signed-off-by: Magnus Damm <damm@opensource.se> --- Depends on: "[PATCH] ARM: mach-shmobile: add INTCS macros" "[PATCH] sh: INTC ioremap support V2" arch/arm/mach-shmobile/intc-sh7367.c | 172 +++++++++++++++++++++++++++++++++- 1 file changed, 171 insertions(+), 1 deletion(-) --- 0012/arch/arm/mach-shmobile/intc-sh7367.c +++ work/arch/arm/mach-shmobile/intc-sh7367.c 2010-03-09 21:21:00.000000000 +0900 @@ -263,8 +263,178 @@ static struct intc_desc intca_desc __ini intca_sense_registers, intca_ack_registers), }; +enum { + UNUSED_INTCS = 0, + + INTCS, + + /* interrupt sources INTCS */ + VIO2_VEU0, VIO2_VEU1, VIO2_VEU2, VIO2_VEU3, + VIO3_VOU, + RTDMAC_1_DEI0, RTDMAC_1_DEI1, RTDMAC_1_DEI2, RTDMAC_1_DEI3, + VIO1_CEU, VIO1_BEU0, VIO1_BEU1, VIO1_BEU2, + VPU, + SGX530, + _2DDMAC_2DDM0, _2DDMAC_2DDM1, _2DDMAC_2DDM2, _2DDMAC_2DDM3, + IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2, + IPMMU_IPMMUB, IPMMU_IPMMUS, + RTDMAC_2_DEI4, RTDMAC_2_DEI5, RTDMAC_2_DADERR, + MSIOF, + IIC0_ALI0, IIC0_TACKI0, IIC0_WAITI0, IIC0_DTEI0, + TMU_TUNI0, TMU_TUNI1, TMU_TUNI2, + CMT, + TSIF, + IPMMUI, + MVI3, + ICB, + PEP, + ASA, + BEM, + VE2HO, + HQE, + JPEG, + LCDC, + + /* interrupt groups INTCS */ + _2DDMAC, RTDMAC_1, RTDMAC_2, VEU, BEU, IIC0, IPMMU, IIC2, +}; + +static struct intc_vect intcs_vectors[] = { + INTCS_VECT(VIO2_VEU0, 0x700), INTCS_VECT(VIO2_VEU1, 0x720), + INTCS_VECT(VIO2_VEU2, 0x740), INTCS_VECT(VIO2_VEU3, 0x760), + INTCS_VECT(VIO3_VOU, 0x780), + INTCS_VECT(RTDMAC_1_DEI0, 0x800), INTCS_VECT(RTDMAC_1_DEI1, 0x820), + INTCS_VECT(RTDMAC_1_DEI2, 0x840), INTCS_VECT(RTDMAC_1_DEI3, 0x860), + INTCS_VECT(VIO1_CEU, 0x880), INTCS_VECT(VIO1_BEU0, 0x8a0), + INTCS_VECT(VIO1_BEU1, 0x8c0), INTCS_VECT(VIO1_BEU2, 0x8e0), + INTCS_VECT(VPU, 0x980), + INTCS_VECT(SGX530, 0x9e0), + INTCS_VECT(_2DDMAC_2DDM0, 0xa00), INTCS_VECT(_2DDMAC_2DDM1, 0xa20), + INTCS_VECT(_2DDMAC_2DDM2, 0xa40), INTCS_VECT(_2DDMAC_2DDM3, 0xa60), + INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0), + INTCS_VECT(IIC2_WAITI2, 0xac0), INTCS_VECT(IIC2_DTEI2, 0xae0), + INTCS_VECT(IPMMU_IPMMUB, 0xb20), INTCS_VECT(IPMMU_IPMMUS, 0xb60), + INTCS_VECT(RTDMAC_2_DEI4, 0xb80), INTCS_VECT(RTDMAC_2_DEI5, 0xba0), + INTCS_VECT(RTDMAC_2_DADERR, 0xbc0), + INTCS_VECT(MSIOF, 0xd20), + INTCS_VECT(IIC0_ALI0, 0xe00), INTCS_VECT(IIC0_TACKI0, 0xe20), + INTCS_VECT(IIC0_WAITI0, 0xe40), INTCS_VECT(IIC0_DTEI0, 0xe60), + INTCS_VECT(TMU_TUNI0, 0xe80), INTCS_VECT(TMU_TUNI1, 0xea0), + INTCS_VECT(TMU_TUNI2, 0xec0), + INTCS_VECT(CMT, 0xf00), + INTCS_VECT(TSIF, 0xf20), + INTCS_VECT(IPMMUI, 0xf60), + INTCS_VECT(MVI3, 0x420), + INTCS_VECT(ICB, 0x480), + INTCS_VECT(PEP, 0x4a0), + INTCS_VECT(ASA, 0x4c0), + INTCS_VECT(BEM, 0x4e0), + INTCS_VECT(VE2HO, 0x520), + INTCS_VECT(HQE, 0x540), + INTCS_VECT(JPEG, 0x560), + INTCS_VECT(LCDC, 0x580), + + INTC_VECT(INTCS, 0xf80), +}; + +static struct intc_group intcs_groups[] __initdata = { + INTC_GROUP(_2DDMAC, _2DDMAC_2DDM0, _2DDMAC_2DDM1, + _2DDMAC_2DDM2, _2DDMAC_2DDM3), + INTC_GROUP(RTDMAC_1, RTDMAC_1_DEI0, RTDMAC_1_DEI1, + RTDMAC_1_DEI2, RTDMAC_1_DEI3), + INTC_GROUP(RTDMAC_2, RTDMAC_2_DEI4, RTDMAC_2_DEI5, RTDMAC_2_DADERR), + INTC_GROUP(VEU, VIO2_VEU0, VIO2_VEU1, VIO2_VEU2, VIO2_VEU3), + INTC_GROUP(BEU, VIO1_BEU0, VIO1_BEU1, VIO1_BEU2), + INTC_GROUP(IIC0, IIC0_ALI0, IIC0_TACKI0, IIC0_WAITI0, IIC0_DTEI0), + INTC_GROUP(IPMMU, IPMMU_IPMMUS, IPMMU_IPMMUB), + INTC_GROUP(IIC2, IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2), +}; + +static struct intc_mask_reg intcs_mask_registers[] = { + { 0xffd20184, 0xffd201c4, 8, /* IMR1SA / IMCR1SA */ + { VIO1_BEU2, VIO1_BEU1, VIO1_BEU0, VIO1_CEU, + VIO2_VEU3, VIO2_VEU2, VIO2_VEU1, VIO2_VEU0 } }, + { 0xffd20188, 0xffd201c8, 8, /* IMR2SA / IMCR2SA */ + { VIO3_VOU, 0, VE2HO, VPU, + 0, 0, 0, 0 } }, + { 0xffd2018c, 0xffd201cc, 8, /* IMR3SA / IMCR3SA */ + { _2DDMAC_2DDM3, _2DDMAC_2DDM2, _2DDMAC_2DDM1, _2DDMAC_2DDM0, + BEM, ASA, PEP, ICB } }, + { 0xffd20190, 0xffd201d0, 8, /* IMR4SA / IMCR4SA */ + { 0, 0, MVI3, 0, + JPEG, HQE, 0, LCDC } }, + { 0xffd20194, 0xffd201d4, 8, /* IMR5SA / IMCR5SA */ + { 0, RTDMAC_2_DADERR, RTDMAC_2_DEI5, RTDMAC_2_DEI4, + RTDMAC_1_DEI3, RTDMAC_1_DEI2, RTDMAC_1_DEI1, RTDMAC_1_DEI0 } }, + { 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */ + { 0, 0, MSIOF, 0, + SGX530, 0, 0, 0 } }, + { 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */ + { 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0, + 0, 0, 0, 0 } }, + { 0xffd201a4, 0xffd201e4, 8, /* IMR9SA / IMCR9SA */ + { 0, 0, 0, CMT, + IIC2_DTEI2, IIC2_WAITI2, IIC2_TACKI2, IIC2_ALI2 } }, + { 0xffd201a8, 0xffd201e8, 8, /* IMR10SA / IMCR10SA */ + { IPMMU_IPMMUS, 0, IPMMU_IPMMUB, 0, + 0, 0, 0, 0 } }, + { 0xffd201ac, 0xffd201ec, 8, /* IMR11SA / IMCR11SA */ + { IIC0_DTEI0, IIC0_WAITI0, IIC0_TACKI0, IIC0_ALI0, + 0, 0, IPMMUI, TSIF } }, + { 0xffd20104, 0, 16, /* INTAMASK */ + { 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, INTCS } }, +}; + +/* Priority is needed for INTCA to receive the INTCS interrupt */ +static struct intc_prio_reg intcs_prio_registers[] = { + { 0xffd20000, 0, 16, 4, /* IPRAS */ { 0, MVI3, _2DDMAC, ICB } }, + { 0xffd20004, 0, 16, 4, /* IPRBS */ { JPEG, LCDC, 0, 0 } }, + { 0xffd20008, 0, 16, 4, /* IPRCS */ { BBIF2, 0, 0, 0 } }, + { 0xffd20010, 0, 16, 4, /* IPRES */ { RTDMAC_1, VIO1_CEU, 0, VPU } }, + { 0xffd20014, 0, 16, 4, /* IPRFS */ { 0, RTDMAC_2, 0, CMT } }, + { 0xffd20018, 0, 16, 4, /* IPRGS */ { TMU_TUNI0, TMU_TUNI1, + TMU_TUNI2, 0 } }, + { 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, VIO3_VOU, VEU, BEU } }, + { 0xffd20020, 0, 16, 4, /* IPRIS */ { 0, MSIOF, TSIF, IIC0 } }, + { 0xffd20024, 0, 16, 4, /* IPRJS */ { 0, SGX530, 0, 0 } }, + { 0xffd20028, 0, 16, 4, /* IPRKS */ { BEM, ASA, IPMMUI, PEP } }, + { 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, VE2HO, HQE } }, + { 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } }, +}; + +static struct resource intcs_resources[] __initdata = { + [0] = { + .start = 0xffd20000, + .end = 0xffd2ffff, + .flags = IORESOURCE_MEM, + } +}; + +static struct intc_desc intcs_desc __initdata = { + .name = "sh7367-intcs", + .resource = intcs_resources, + .num_resources = ARRAY_SIZE(intcs_resources), + .hw = INTC_HW_DESC(intcs_vectors, intcs_groups, intcs_mask_registers, + intcs_prio_registers, NULL, NULL), +}; + +static void intcs_demux(unsigned int irq, struct irq_desc *desc) +{ + void __iomem *reg = (void *)get_irq_data(irq); + unsigned int evtcodeas = ioread32(reg); + + generic_handle_irq(intcs_evt2irq(evtcodeas)); +} + void __init sh7367_init_irq(void) { - /* INTCA */ + void __iomem *intevtsa = ioremap_nocache(0xffd20100, PAGE_SIZE); + register_intc_controller(&intca_desc); + register_intc_controller(&intcs_desc); + + /* demux using INTEVTSA */ + set_irq_data(evt2irq(0xf80), (void *)intevtsa); + set_irq_chained_handler(evt2irq(0xf80), intcs_demux); } ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH] ARM: mach-shmobile: add INTCS macros @ 2010-03-11 5:30 ` Magnus Damm 2010-04-07 7:32 ` Paul Mundt 0 siblings, 1 reply; 16+ messages in thread From: Magnus Damm @ 2010-03-11 5:30 UTC (permalink / raw) To: linux-sh From: Magnus Damm <damm@opensource.se> Add SH-Mobile ARM INTCS macros for the INTCS controller. Signed-off-by: Magnus Damm <damm@opensource.se> --- No special dependencies. arch/arm/mach-shmobile/include/mach/irqs.h | 6 ++++++ 1 file changed, 6 insertions(+) --- 0001/arch/arm/mach-shmobile/include/mach/irqs.h +++ work/arch/arm/mach-shmobile/include/mach/irqs.h 2010-03-09 21:13:19.000000000 +0900 @@ -4,7 +4,13 @@ #define NR_IRQS 512 #define NR_IRQS_LEGACY 8 +/* INTCA */ #define evt2irq(evt) (((evt) >> 5) - 16) #define irq2evt(irq) (((irq) + 16) << 5) +/* INTCS */ +#define INTCS_VECT_BASE 0x3400 +#define INTCS_VECT(n, vect) INTC_VECT((n), INTCS_VECT_BASE + (vect)) +#define intcs_evt2irq(evt) evt2irq(INTCS_VECT_BASE + (evt)) + #endif /* __ASM_MACH_IRQS_H */ ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] ARM: mach-shmobile: add INTCS macros 2010-03-11 5:30 ` [PATCH] ARM: mach-shmobile: add INTCS macros Magnus Damm @ 2010-04-07 7:32 ` Paul Mundt 0 siblings, 0 replies; 16+ messages in thread From: Paul Mundt @ 2010-04-07 7:32 UTC (permalink / raw) To: Magnus Damm Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-i2c-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, khali-PUYAD+kWke1g9hUCZPvPmw On Thu, Mar 11, 2010 at 02:30:30PM +0900, Magnus Damm wrote: > Add SH-Mobile ARM INTCS macros for the INTCS controller. On Thu, Mar 11, 2010 at 03:52:33PM +0900, Magnus Damm wrote: > Add support for the sh7367 INTCS interrupt controller. > > INTCS is the interrupt controller for the sh7367 SuperH > processor core. It is tied into the INTCA interrupt > controller which interfaces to the ARM processor. > > INTCS support is implemented using a new INTC table > together with a chained interrupt handler that ties > into the already supported INTCA controller. On Thu, Mar 11, 2010 at 07:05:26PM +0900, Magnus Damm wrote: > i2c: i2c-sh_mobile update for SH-Mobile ARM > > [PATCH 01/03] i2c: i2c-sh_mobile register access code break out > [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits > [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM > > These patches add support for a newer version of the IIC block > to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. > Applied, thanks. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] ARM: mach-shmobile: add INTCS macros @ 2010-04-07 7:32 ` Paul Mundt 0 siblings, 0 replies; 16+ messages in thread From: Paul Mundt @ 2010-04-07 7:32 UTC (permalink / raw) To: Magnus Damm Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA, linux-i2c-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, khali-PUYAD+kWke1g9hUCZPvPmw On Thu, Mar 11, 2010 at 02:30:30PM +0900, Magnus Damm wrote: > Add SH-Mobile ARM INTCS macros for the INTCS controller. On Thu, Mar 11, 2010 at 03:52:33PM +0900, Magnus Damm wrote: > Add support for the sh7367 INTCS interrupt controller. > > INTCS is the interrupt controller for the sh7367 SuperH > processor core. It is tied into the INTCA interrupt > controller which interfaces to the ARM processor. > > INTCS support is implemented using a new INTC table > together with a chained interrupt handler that ties > into the already supported INTCA controller. On Thu, Mar 11, 2010 at 07:05:26PM +0900, Magnus Damm wrote: > i2c: i2c-sh_mobile update for SH-Mobile ARM > > [PATCH 01/03] i2c: i2c-sh_mobile register access code break out > [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits > [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM > > These patches add support for a newer version of the IIC block > to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. > Applied, thanks. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 01/03] i2c: i2c-sh_mobile register access code break out 2010-03-11 10:05 ` Magnus Damm @ 2010-03-11 10:05 ` Magnus Damm -1 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:05 UTC (permalink / raw) To: linux-i2c Cc: linux-sh, nishimoto.hiroki, khali, lethal, morimoto.kuninori, Magnus Damm From: Magnus Damm <damm@opensource.se> Break out register access functions in the i2c-sh_mobile driver. This update should not change any driver logic. Signed-off-by: Magnus Damm <damm@opensource.se> --- drivers/i2c/busses/i2c-sh_mobile.c | 90 +++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 37 deletions(-) --- 0001/drivers/i2c/busses/i2c-sh_mobile.c +++ work/drivers/i2c/busses/i2c-sh_mobile.c 2010-03-11 15:16:09.000000000 +0900 @@ -131,12 +131,12 @@ struct sh_mobile_i2c_data { #define NORMAL_SPEED 100000 /* FAST_SPEED 400000 */ /* Register offsets */ -#define ICDR(pd) (pd->reg + 0x00) -#define ICCR(pd) (pd->reg + 0x04) -#define ICSR(pd) (pd->reg + 0x08) -#define ICIC(pd) (pd->reg + 0x0c) -#define ICCL(pd) (pd->reg + 0x10) -#define ICCH(pd) (pd->reg + 0x14) +#define ICDR 0x00 +#define ICCR 0x04 +#define ICSR 0x08 +#define ICIC 0x0c +#define ICCL 0x10 +#define ICCH 0x14 /* Register bits */ #define ICCR_ICE 0x80 @@ -159,6 +159,22 @@ struct sh_mobile_i2c_data { #define ICIC_WAITE 0x02 #define ICIC_DTEE 0x01 +static void iic_wr(struct sh_mobile_i2c_data *pd, int offs, unsigned char data) +{ + iowrite8(data, pd->reg + offs); +} + +static unsigned char iic_rd(struct sh_mobile_i2c_data *pd, int offs) +{ + return ioread8(pd->reg + offs); +} + +static void iic_set_clr(struct sh_mobile_i2c_data *pd, int offs, + unsigned char set, unsigned char clr) +{ + iic_wr(pd, offs, (iic_rd(pd, offs) | set) & ~clr); +} + static void activate_ch(struct sh_mobile_i2c_data *pd) { unsigned long i2c_clk; @@ -196,24 +212,24 @@ static void activate_ch(struct sh_mobile pd->icch = (u_int8_t)(num/denom); /* Enable channel and configure rx ack */ - iowrite8(ioread8(ICCR(pd)) | ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, ICCR_ICE, 0); /* Mask all interrupts */ - iowrite8(0, ICIC(pd)); + iic_wr(pd, ICIC, 0); /* Set the clock */ - iowrite8(pd->iccl, ICCL(pd)); - iowrite8(pd->icch, ICCH(pd)); + iic_wr(pd, ICCL, pd->iccl); + iic_wr(pd, ICCH, pd->icch); } static void deactivate_ch(struct sh_mobile_i2c_data *pd) { /* Clear/disable interrupts */ - iowrite8(0, ICSR(pd)); - iowrite8(0, ICIC(pd)); + iic_wr(pd, ICSR, 0); + iic_wr(pd, ICIC, 0); /* Disable channel */ - iowrite8(ioread8(ICCR(pd)) & ~ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, 0, ICCR_ICE); /* Disable clock and mark device as idle */ clk_disable(pd->clk); @@ -232,35 +248,35 @@ static unsigned char i2c_op(struct sh_mo switch (op) { case OP_START: /* issue start and trigger DTE interrupt */ - iowrite8(0x94, ICCR(pd)); + iic_wr(pd, ICCR, 0x94); break; case OP_TX_FIRST: /* disable DTE interrupt and write data */ - iowrite8(ICIC_WAITE | ICIC_ALE | ICIC_TACKE, ICIC(pd)); - iowrite8(data, ICDR(pd)); + iic_wr(pd, ICIC, ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + iic_wr(pd, ICDR, data); break; case OP_TX: /* write data */ - iowrite8(data, ICDR(pd)); + iic_wr(pd, ICDR, data); break; case OP_TX_STOP: /* write data and issue a stop afterwards */ - iowrite8(data, ICDR(pd)); - iowrite8(0x90, ICCR(pd)); + iic_wr(pd, ICDR, data); + iic_wr(pd, ICCR, 0x90); break; case OP_TX_TO_RX: /* select read mode */ - iowrite8(0x81, ICCR(pd)); + iic_wr(pd, ICCR, 0x81); break; case OP_RX: /* just read data */ - ret = ioread8(ICDR(pd)); + ret = iic_rd(pd, ICDR); break; case OP_RX_STOP: /* enable DTE interrupt, issue stop */ - iowrite8(ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE, - ICIC(pd)); - iowrite8(0xc0, ICCR(pd)); + iic_wr(pd, ICIC, + ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + iic_wr(pd, ICCR, 0xc0); break; case OP_RX_STOP_DATA: /* enable DTE interrupt, read data, issue stop */ - iowrite8(ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE, - ICIC(pd)); - ret = ioread8(ICDR(pd)); - iowrite8(0xc0, ICCR(pd)); + iic_wr(pd, ICIC, + ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + ret = iic_rd(pd, ICDR); + iic_wr(pd, ICCR, 0xc0); break; } @@ -366,7 +382,7 @@ static irqreturn_t sh_mobile_i2c_isr(int unsigned char sr; int wakeup; - sr = ioread8(ICSR(pd)); + sr = iic_rd(pd, ICSR); pd->sr |= sr; /* remember state */ dev_dbg(pd->dev, "i2c_isr 0x%02x 0x%02x %s %d %d!\n", sr, pd->sr, @@ -375,7 +391,7 @@ static irqreturn_t sh_mobile_i2c_isr(int if (sr & (ICSR_AL | ICSR_TACK)) { /* don't interrupt transaction - continue to issue stop */ - iowrite8(sr & ~(ICSR_AL | ICSR_TACK), ICSR(pd)); + iic_wr(pd, ICSR, sr & ~(ICSR_AL | ICSR_TACK)); wakeup = 0; } else if (pd->msg->flags & I2C_M_RD) wakeup = sh_mobile_i2c_isr_rx(pd); @@ -383,7 +399,7 @@ static irqreturn_t sh_mobile_i2c_isr(int wakeup = sh_mobile_i2c_isr_tx(pd); if (sr & ICSR_WAIT) /* TODO: add delay here to support slow acks */ - iowrite8(sr & ~ICSR_WAIT, ICSR(pd)); + iic_wr(pd, ICSR, sr & ~ICSR_WAIT); if (wakeup) { pd->sr |= SW_DONE; @@ -401,21 +417,21 @@ static int start_ch(struct sh_mobile_i2c } /* Initialize channel registers */ - iowrite8(ioread8(ICCR(pd)) & ~ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, 0, ICCR_ICE); /* Enable channel and configure rx ack */ - iowrite8(ioread8(ICCR(pd)) | ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, ICCR_ICE, 0); /* Set the clock */ - iowrite8(pd->iccl, ICCL(pd)); - iowrite8(pd->icch, ICCH(pd)); + iic_wr(pd, ICCL, pd->iccl); + iic_wr(pd, ICCH, pd->icch); pd->msg = usr_msg; pd->pos = -1; pd->sr = 0; /* Enable all interrupts to begin with */ - iowrite8(ICIC_WAITE | ICIC_ALE | ICIC_TACKE | ICIC_DTEE, ICIC(pd)); + iic_wr(pd, ICIC, ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); return 0; } @@ -450,7 +466,7 @@ static int sh_mobile_i2c_xfer(struct i2c retry_count = 1000; again: - val = ioread8(ICSR(pd)); + val = iic_rd(pd, ICSR); dev_dbg(pd->dev, "val 0x%02x pd->sr 0x%02x\n", val, pd->sr); ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 01/03] i2c: i2c-sh_mobile register access code break out @ 2010-03-11 10:05 ` Magnus Damm 0 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:05 UTC (permalink / raw) To: linux-i2c Cc: linux-sh, nishimoto.hiroki, khali, lethal, morimoto.kuninori, Magnus Damm From: Magnus Damm <damm@opensource.se> Break out register access functions in the i2c-sh_mobile driver. This update should not change any driver logic. Signed-off-by: Magnus Damm <damm@opensource.se> --- drivers/i2c/busses/i2c-sh_mobile.c | 90 +++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 37 deletions(-) --- 0001/drivers/i2c/busses/i2c-sh_mobile.c +++ work/drivers/i2c/busses/i2c-sh_mobile.c 2010-03-11 15:16:09.000000000 +0900 @@ -131,12 +131,12 @@ struct sh_mobile_i2c_data { #define NORMAL_SPEED 100000 /* FAST_SPEED 400000 */ /* Register offsets */ -#define ICDR(pd) (pd->reg + 0x00) -#define ICCR(pd) (pd->reg + 0x04) -#define ICSR(pd) (pd->reg + 0x08) -#define ICIC(pd) (pd->reg + 0x0c) -#define ICCL(pd) (pd->reg + 0x10) -#define ICCH(pd) (pd->reg + 0x14) +#define ICDR 0x00 +#define ICCR 0x04 +#define ICSR 0x08 +#define ICIC 0x0c +#define ICCL 0x10 +#define ICCH 0x14 /* Register bits */ #define ICCR_ICE 0x80 @@ -159,6 +159,22 @@ struct sh_mobile_i2c_data { #define ICIC_WAITE 0x02 #define ICIC_DTEE 0x01 +static void iic_wr(struct sh_mobile_i2c_data *pd, int offs, unsigned char data) +{ + iowrite8(data, pd->reg + offs); +} + +static unsigned char iic_rd(struct sh_mobile_i2c_data *pd, int offs) +{ + return ioread8(pd->reg + offs); +} + +static void iic_set_clr(struct sh_mobile_i2c_data *pd, int offs, + unsigned char set, unsigned char clr) +{ + iic_wr(pd, offs, (iic_rd(pd, offs) | set) & ~clr); +} + static void activate_ch(struct sh_mobile_i2c_data *pd) { unsigned long i2c_clk; @@ -196,24 +212,24 @@ static void activate_ch(struct sh_mobile pd->icch = (u_int8_t)(num/denom); /* Enable channel and configure rx ack */ - iowrite8(ioread8(ICCR(pd)) | ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, ICCR_ICE, 0); /* Mask all interrupts */ - iowrite8(0, ICIC(pd)); + iic_wr(pd, ICIC, 0); /* Set the clock */ - iowrite8(pd->iccl, ICCL(pd)); - iowrite8(pd->icch, ICCH(pd)); + iic_wr(pd, ICCL, pd->iccl); + iic_wr(pd, ICCH, pd->icch); } static void deactivate_ch(struct sh_mobile_i2c_data *pd) { /* Clear/disable interrupts */ - iowrite8(0, ICSR(pd)); - iowrite8(0, ICIC(pd)); + iic_wr(pd, ICSR, 0); + iic_wr(pd, ICIC, 0); /* Disable channel */ - iowrite8(ioread8(ICCR(pd)) & ~ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, 0, ICCR_ICE); /* Disable clock and mark device as idle */ clk_disable(pd->clk); @@ -232,35 +248,35 @@ static unsigned char i2c_op(struct sh_mo switch (op) { case OP_START: /* issue start and trigger DTE interrupt */ - iowrite8(0x94, ICCR(pd)); + iic_wr(pd, ICCR, 0x94); break; case OP_TX_FIRST: /* disable DTE interrupt and write data */ - iowrite8(ICIC_WAITE | ICIC_ALE | ICIC_TACKE, ICIC(pd)); - iowrite8(data, ICDR(pd)); + iic_wr(pd, ICIC, ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + iic_wr(pd, ICDR, data); break; case OP_TX: /* write data */ - iowrite8(data, ICDR(pd)); + iic_wr(pd, ICDR, data); break; case OP_TX_STOP: /* write data and issue a stop afterwards */ - iowrite8(data, ICDR(pd)); - iowrite8(0x90, ICCR(pd)); + iic_wr(pd, ICDR, data); + iic_wr(pd, ICCR, 0x90); break; case OP_TX_TO_RX: /* select read mode */ - iowrite8(0x81, ICCR(pd)); + iic_wr(pd, ICCR, 0x81); break; case OP_RX: /* just read data */ - ret = ioread8(ICDR(pd)); + ret = iic_rd(pd, ICDR); break; case OP_RX_STOP: /* enable DTE interrupt, issue stop */ - iowrite8(ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE, - ICIC(pd)); - iowrite8(0xc0, ICCR(pd)); + iic_wr(pd, ICIC, + ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + iic_wr(pd, ICCR, 0xc0); break; case OP_RX_STOP_DATA: /* enable DTE interrupt, read data, issue stop */ - iowrite8(ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE, - ICIC(pd)); - ret = ioread8(ICDR(pd)); - iowrite8(0xc0, ICCR(pd)); + iic_wr(pd, ICIC, + ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); + ret = iic_rd(pd, ICDR); + iic_wr(pd, ICCR, 0xc0); break; } @@ -366,7 +382,7 @@ static irqreturn_t sh_mobile_i2c_isr(int unsigned char sr; int wakeup; - sr = ioread8(ICSR(pd)); + sr = iic_rd(pd, ICSR); pd->sr |= sr; /* remember state */ dev_dbg(pd->dev, "i2c_isr 0x%02x 0x%02x %s %d %d!\n", sr, pd->sr, @@ -375,7 +391,7 @@ static irqreturn_t sh_mobile_i2c_isr(int if (sr & (ICSR_AL | ICSR_TACK)) { /* don't interrupt transaction - continue to issue stop */ - iowrite8(sr & ~(ICSR_AL | ICSR_TACK), ICSR(pd)); + iic_wr(pd, ICSR, sr & ~(ICSR_AL | ICSR_TACK)); wakeup = 0; } else if (pd->msg->flags & I2C_M_RD) wakeup = sh_mobile_i2c_isr_rx(pd); @@ -383,7 +399,7 @@ static irqreturn_t sh_mobile_i2c_isr(int wakeup = sh_mobile_i2c_isr_tx(pd); if (sr & ICSR_WAIT) /* TODO: add delay here to support slow acks */ - iowrite8(sr & ~ICSR_WAIT, ICSR(pd)); + iic_wr(pd, ICSR, sr & ~ICSR_WAIT); if (wakeup) { pd->sr |= SW_DONE; @@ -401,21 +417,21 @@ static int start_ch(struct sh_mobile_i2c } /* Initialize channel registers */ - iowrite8(ioread8(ICCR(pd)) & ~ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, 0, ICCR_ICE); /* Enable channel and configure rx ack */ - iowrite8(ioread8(ICCR(pd)) | ICCR_ICE, ICCR(pd)); + iic_set_clr(pd, ICCR, ICCR_ICE, 0); /* Set the clock */ - iowrite8(pd->iccl, ICCL(pd)); - iowrite8(pd->icch, ICCH(pd)); + iic_wr(pd, ICCL, pd->iccl); + iic_wr(pd, ICCH, pd->icch); pd->msg = usr_msg; pd->pos = -1; pd->sr = 0; /* Enable all interrupts to begin with */ - iowrite8(ICIC_WAITE | ICIC_ALE | ICIC_TACKE | ICIC_DTEE, ICIC(pd)); + iic_wr(pd, ICIC, ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE); return 0; } @@ -450,7 +466,7 @@ static int sh_mobile_i2c_xfer(struct i2c retry_count = 1000; again: - val = ioread8(ICSR(pd)); + val = iic_rd(pd, ICSR); dev_dbg(pd->dev, "val 0x%02x pd->sr 0x%02x\n", val, pd->sr); ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits 2010-03-11 10:05 ` Magnus Damm @ 2010-03-11 10:06 ` Magnus Damm -1 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:06 UTC (permalink / raw) To: linux-i2c-u79uwXL29TY76Z2rM5mHXA Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, lethal-M7jkjyW5wf5g9hUCZPvPmw, khali-PUYAD+kWke1g9hUCZPvPmw, Magnus Damm From: Magnus Damm <damm-yzvPICuk2ACczHhG9Qg4qA@public.gmane.org> Add support for a new version of the IIC block found in the SH-Mobile ARM line of processors. Prototype patch written by Nishimoto-san. Tested on sh7377 and sh7372. Signed-off-by: NISHIMOTO Hiroki <nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Magnus Damm <damm-yzvPICuk2ACczHhG9Qg4qA@public.gmane.org> --- drivers/i2c/busses/i2c-sh_mobile.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) --- 0026/drivers/i2c/busses/i2c-sh_mobile.c +++ work/drivers/i2c/busses/i2c-sh_mobile.c 2010-03-11 15:33:09.000000000 +0900 @@ -118,8 +118,10 @@ struct sh_mobile_i2c_data { struct i2c_adapter adap; struct clk *clk; + u_int8_t icic; u_int8_t iccl; u_int8_t icch; + u_int8_t flags; spinlock_t lock; wait_queue_head_t wait; @@ -128,6 +130,8 @@ struct sh_mobile_i2c_data { int sr; }; +#define IIC_FLAG_HAS_ICIC67 (1 << 0) + #define NORMAL_SPEED 100000 /* FAST_SPEED 400000 */ /* Register offsets */ @@ -154,6 +158,8 @@ struct sh_mobile_i2c_data { #define ICSR_WAIT 0x02 #define ICSR_DTE 0x01 +#define ICIC_ICCLB8 0x80 +#define ICIC_ICCHB8 0x40 #define ICIC_ALE 0x08 #define ICIC_TACKE 0x04 #define ICIC_WAITE 0x02 @@ -161,6 +167,9 @@ struct sh_mobile_i2c_data { static void iic_wr(struct sh_mobile_i2c_data *pd, int offs, unsigned char data) { + if (offs == ICIC) + data |= pd->icic; + iowrite8(data, pd->reg + offs); } @@ -202,6 +211,14 @@ static void activate_ch(struct sh_mobile else pd->iccl = (u_int8_t)(num/denom); + /* one more bit of ICCL in ICIC */ + if (pd->flags & IIC_FLAG_HAS_ICIC67) { + if ((num/denom) > 0xff) + pd->icic |= ICIC_ICCLB8; + else + pd->icic &= ~ICIC_ICCLB8; + } + /* Calculate the value for icch. From the data sheet: icch = (p clock / transfer rate) * (H / (L + H)) */ num = i2c_clk * 4; @@ -211,6 +228,14 @@ static void activate_ch(struct sh_mobile else pd->icch = (u_int8_t)(num/denom); + /* one more bit of ICCH in ICIC */ + if (pd->flags & IIC_FLAG_HAS_ICIC67) { + if ((num/denom) > 0xff) + pd->icic |= ICIC_ICCHB8; + else + pd->icic &= ~ICIC_ICCHB8; + } + /* Enable channel and configure rx ack */ iic_set_clr(pd, ICCR, ICCR_ICE, 0); @@ -591,6 +616,12 @@ static int sh_mobile_i2c_probe(struct pl goto err_irq; } + /* The IIC blocks on SH-Mobile ARM processors + * come with two new bits in ICIC. + */ + if (size > 0x17) + pd->flags |= IIC_FLAG_HAS_ICIC67; + /* Enable Runtime PM for this device. * * Also tell the Runtime PM core to ignore children ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits @ 2010-03-11 10:06 ` Magnus Damm 0 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:06 UTC (permalink / raw) To: linux-i2c-u79uwXL29TY76Z2rM5mHXA Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, lethal-M7jkjyW5wf5g9hUCZPvPmw, khali-PUYAD+kWke1g9hUCZPvPmw, Magnus Damm From: Magnus Damm <damm@opensource.se> Add support for a new version of the IIC block found in the SH-Mobile ARM line of processors. Prototype patch written by Nishimoto-san. Tested on sh7377 and sh7372. Signed-off-by: NISHIMOTO Hiroki <nishimoto.hiroki@renesas.com> Signed-off-by: Magnus Damm <damm@opensource.se> --- drivers/i2c/busses/i2c-sh_mobile.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) --- 0026/drivers/i2c/busses/i2c-sh_mobile.c +++ work/drivers/i2c/busses/i2c-sh_mobile.c 2010-03-11 15:33:09.000000000 +0900 @@ -118,8 +118,10 @@ struct sh_mobile_i2c_data { struct i2c_adapter adap; struct clk *clk; + u_int8_t icic; u_int8_t iccl; u_int8_t icch; + u_int8_t flags; spinlock_t lock; wait_queue_head_t wait; @@ -128,6 +130,8 @@ struct sh_mobile_i2c_data { int sr; }; +#define IIC_FLAG_HAS_ICIC67 (1 << 0) + #define NORMAL_SPEED 100000 /* FAST_SPEED 400000 */ /* Register offsets */ @@ -154,6 +158,8 @@ struct sh_mobile_i2c_data { #define ICSR_WAIT 0x02 #define ICSR_DTE 0x01 +#define ICIC_ICCLB8 0x80 +#define ICIC_ICCHB8 0x40 #define ICIC_ALE 0x08 #define ICIC_TACKE 0x04 #define ICIC_WAITE 0x02 @@ -161,6 +167,9 @@ struct sh_mobile_i2c_data { static void iic_wr(struct sh_mobile_i2c_data *pd, int offs, unsigned char data) { + if (offs = ICIC) + data |= pd->icic; + iowrite8(data, pd->reg + offs); } @@ -202,6 +211,14 @@ static void activate_ch(struct sh_mobile else pd->iccl = (u_int8_t)(num/denom); + /* one more bit of ICCL in ICIC */ + if (pd->flags & IIC_FLAG_HAS_ICIC67) { + if ((num/denom) > 0xff) + pd->icic |= ICIC_ICCLB8; + else + pd->icic &= ~ICIC_ICCLB8; + } + /* Calculate the value for icch. From the data sheet: icch = (p clock / transfer rate) * (H / (L + H)) */ num = i2c_clk * 4; @@ -211,6 +228,14 @@ static void activate_ch(struct sh_mobile else pd->icch = (u_int8_t)(num/denom); + /* one more bit of ICCH in ICIC */ + if (pd->flags & IIC_FLAG_HAS_ICIC67) { + if ((num/denom) > 0xff) + pd->icic |= ICIC_ICCHB8; + else + pd->icic &= ~ICIC_ICCHB8; + } + /* Enable channel and configure rx ack */ iic_set_clr(pd, ICCR, ICCR_ICE, 0); @@ -591,6 +616,12 @@ static int sh_mobile_i2c_probe(struct pl goto err_irq; } + /* The IIC blocks on SH-Mobile ARM processors + * come with two new bits in ICIC. + */ + if (size > 0x17) + pd->flags |= IIC_FLAG_HAS_ICIC67; + /* Enable Runtime PM for this device. * * Also tell the Runtime PM core to ignore children ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM 2010-03-11 10:05 ` Magnus Damm @ 2010-03-11 10:06 ` Magnus Damm -1 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:06 UTC (permalink / raw) To: linux-i2c-u79uwXL29TY76Z2rM5mHXA Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, khali-PUYAD+kWke1g9hUCZPvPmw, lethal-M7jkjyW5wf5g9hUCZPvPmw, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, Magnus Damm From: Magnus Damm <damm-yzvPICuk2ACczHhG9Qg4qA@public.gmane.org> Update the Kconfig entry for the i2c-sh_mobile driver to enable build on SH-Mobile ARM platforms Signed-off-by: Kuninori Morimoto <morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Magnus Damm <damm-yzvPICuk2ACczHhG9Qg4qA@public.gmane.org> --- drivers/i2c/busses/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- 0001/drivers/i2c/busses/Kconfig +++ work/drivers/i2c/busses/Kconfig 2010-03-11 18:41:50.000000000 +0900 @@ -520,7 +520,7 @@ config I2C_SH7760 config I2C_SH_MOBILE tristate "SuperH Mobile I2C Controller" - depends on SUPERH + depends on SUPERH || ARCH_SHMOBILE help If you say yes to this option, support will be included for the built-in I2C interface on the Renesas SH-Mobile processor. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM @ 2010-03-11 10:06 ` Magnus Damm 0 siblings, 0 replies; 16+ messages in thread From: Magnus Damm @ 2010-03-11 10:06 UTC (permalink / raw) To: linux-i2c-u79uwXL29TY76Z2rM5mHXA Cc: linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, khali-PUYAD+kWke1g9hUCZPvPmw, lethal-M7jkjyW5wf5g9hUCZPvPmw, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, Magnus Damm From: Magnus Damm <damm@opensource.se> Update the Kconfig entry for the i2c-sh_mobile driver to enable build on SH-Mobile ARM platforms Signed-off-by: Kuninori Morimoto <morimoto.kuninori@renesas.com> Signed-off-by: Magnus Damm <damm@opensource.se> --- drivers/i2c/busses/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- 0001/drivers/i2c/busses/Kconfig +++ work/drivers/i2c/busses/Kconfig 2010-03-11 18:41:50.000000000 +0900 @@ -520,7 +520,7 @@ config I2C_SH7760 config I2C_SH_MOBILE tristate "SuperH Mobile I2C Controller" - depends on SUPERH + depends on SUPERH || ARCH_SHMOBILE help If you say yes to this option, support will be included for the built-in I2C interface on the Renesas SH-Mobile processor. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 00/03] i2c: i2c-sh_mobile update for SH-Mobile ARM 2010-03-11 10:05 ` Magnus Damm @ 2010-03-15 6:30 ` Ben Dooks -1 siblings, 0 replies; 16+ messages in thread From: Ben Dooks @ 2010-03-15 6:30 UTC (permalink / raw) To: Magnus Damm Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, lethal-M7jkjyW5wf5g9hUCZPvPmw, khali-PUYAD+kWke1g9hUCZPvPmw On Thu, Mar 11, 2010 at 07:05:26PM +0900, Magnus Damm wrote: > i2c: i2c-sh_mobile update for SH-Mobile ARM > > [PATCH 01/03] i2c: i2c-sh_mobile register access code break out > [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits > [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM > > These patches add support for a newer version of the IIC block > to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. > > Perhaps suitable for the SH tree? I'll add these to i2c-next once I restart it in a few days time. -- Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/) 'a smiley only costs 4 bytes' ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 00/03] i2c: i2c-sh_mobile update for SH-Mobile ARM @ 2010-03-15 6:30 ` Ben Dooks 0 siblings, 0 replies; 16+ messages in thread From: Ben Dooks @ 2010-03-15 6:30 UTC (permalink / raw) To: Magnus Damm Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, lethal-M7jkjyW5wf5g9hUCZPvPmw, khali-PUYAD+kWke1g9hUCZPvPmw On Thu, Mar 11, 2010 at 07:05:26PM +0900, Magnus Damm wrote: > i2c: i2c-sh_mobile update for SH-Mobile ARM > > [PATCH 01/03] i2c: i2c-sh_mobile register access code break out > [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits > [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM > > These patches add support for a newer version of the IIC block > to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. > > Perhaps suitable for the SH tree? I'll add these to i2c-next once I restart it in a few days time. -- Ben (ben@fluff.org, http://www.fluff.org/) 'a smiley only costs 4 bytes' ^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <20100315063005.GA21181-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>]
* Re: [PATCH 00/03] i2c: i2c-sh_mobile update for SH-Mobile ARM [not found] ` <20100315063005.GA21181-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org> @ 2010-04-06 15:48 ` Paul Mundt 0 siblings, 0 replies; 16+ messages in thread From: Paul Mundt @ 2010-04-06 15:48 UTC (permalink / raw) To: Ben Dooks Cc: Magnus Damm, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, khali-PUYAD+kWke1g9hUCZPvPmw On Mon, Mar 15, 2010 at 06:30:05AM +0000, Ben Dooks wrote: > On Thu, Mar 11, 2010 at 07:05:26PM +0900, Magnus Damm wrote: > > i2c: i2c-sh_mobile update for SH-Mobile ARM > > > > [PATCH 01/03] i2c: i2c-sh_mobile register access code break out > > [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits > > [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM > > > > These patches add support for a newer version of the IIC block > > to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. > > > > Perhaps suitable for the SH tree? > > I'll add these to i2c-next once I restart it in a few days > time. > I still don't see these in -next, so I suppose I'll just roll these in to the genesis tree, especially since we have outstanding patches that depend on these. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 00/03] i2c: i2c-sh_mobile update for SH-Mobile ARM @ 2010-04-06 15:48 ` Paul Mundt 0 siblings, 0 replies; 16+ messages in thread From: Paul Mundt @ 2010-04-06 15:48 UTC (permalink / raw) To: Ben Dooks Cc: Magnus Damm, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-sh-u79uwXL29TY76Z2rM5mHXA, nishimoto.hiroki-zM6kxYcvzFBBDgjK7y7TUQ, morimoto.kuninori-zM6kxYcvzFBBDgjK7y7TUQ, khali-PUYAD+kWke1g9hUCZPvPmw On Mon, Mar 15, 2010 at 06:30:05AM +0000, Ben Dooks wrote: > On Thu, Mar 11, 2010 at 07:05:26PM +0900, Magnus Damm wrote: > > i2c: i2c-sh_mobile update for SH-Mobile ARM > > > > [PATCH 01/03] i2c: i2c-sh_mobile register access code break out > > [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits > > [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM > > > > These patches add support for a newer version of the IIC block > > to the i2c-sh_mobile and enables the driver on SH-Mobile ARM. > > > > Perhaps suitable for the SH tree? > > I'll add these to i2c-next once I restart it in a few days > time. > I still don't see these in -next, so I suppose I'll just roll these in to the genesis tree, especially since we have outstanding patches that depend on these. ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2010-04-07 7:32 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-11 10:05 [PATCH 00/03] i2c: i2c-sh_mobile update for SH-Mobile ARM Magnus Damm
2010-03-11 10:05 ` Magnus Damm
2010-03-11 6:52 ` [PATCH] ARM: mach-shmobile: sh7367 INTCS support Magnus Damm
2010-03-11 5:30 ` [PATCH] ARM: mach-shmobile: add INTCS macros Magnus Damm
2010-04-07 7:32 ` Paul Mundt
2010-04-07 7:32 ` Paul Mundt
2010-03-11 10:05 ` [PATCH 01/03] i2c: i2c-sh_mobile register access code break out Magnus Damm
2010-03-11 10:05 ` Magnus Damm
2010-03-11 10:06 ` [PATCH 02/03] i2c: i2c-sh_mobile support for new ICIC bits Magnus Damm
2010-03-11 10:06 ` Magnus Damm
2010-03-11 10:06 ` [PATCH 03/03] i2c: i2c-sh_mobile kconfig update for SH-Mobile ARM Magnus Damm
2010-03-11 10:06 ` Magnus Damm
2010-03-15 6:30 ` [PATCH 00/03] i2c: i2c-sh_mobile " Ben Dooks
2010-03-15 6:30 ` Ben Dooks
[not found] ` <20100315063005.GA21181-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>
2010-04-06 15:48 ` Paul Mundt
2010-04-06 15:48 ` Paul Mundt
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.