Skip to content

Commit 380dc20

Browse files
committed
Merge branch 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-3.x
* 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-3.x: ARM: mach-shmobile: sh7372 CMT3 and CMT4 clock support ARM: mach-shmobile: sh7372 MSIOF clock support ARM: mach-shmobile: clock-sh7372: fixup USB-DMAC1 settings ARM: mach-shmobile: clock-sh73a0: tidyup CKSCR main clock selecter ARM: mach-shmobile: Remove 3DG/SGX from sh7372 INTCS ARM: mach-shmobile: mackerel: Add USB-DMA ID mmc: sdhi, mmcif: zboot: Correct clock disable logic ARM: mach-shmobile: ag5evm: SDHI requires waiting for idle ARM: static should be at beginning of declaration ARM: mach-shmobile: Use CMT2 for timer on sh7372 ARM: mach-shmobile: sh7372: Add USB-DMAC support
2 parents c42a263 + a408bae commit 380dc20

File tree

9 files changed

+199
-30
lines changed

9 files changed

+199
-30
lines changed

arch/arm/boot/compressed/mmcif-sh7372.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ asmlinkage void mmc_loader(unsigned char *buf, unsigned long len)
8282

8383

8484
/* Disable clock to MMC hardware block */
85-
__raw_writel(__raw_readl(SMSTPCR3) & (1 << 12), SMSTPCR3);
85+
__raw_writel(__raw_readl(SMSTPCR3) | (1 << 12), SMSTPCR3);
8686

8787
mmc_update_progress(MMC_PROGRESS_DONE);
8888
}

arch/arm/boot/compressed/sdhi-sh7372.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ asmlinkage void mmc_loader(unsigned short *buf, unsigned long len)
8585
goto err;
8686

8787
/* Disable clock to SDHI1 hardware block */
88-
__raw_writel(__raw_readl(SMSTPCR3) & (1 << 13), SMSTPCR3);
88+
__raw_writel(__raw_readl(SMSTPCR3) | (1 << 13), SMSTPCR3);
8989

9090
mmc_update_progress(MMC_PROGRESS_DONE);
9191

arch/arm/mach-shmobile/board-ag5evm.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ static struct platform_device mipidsi0_device = {
341341
static struct sh_mobile_sdhi_info sdhi0_info = {
342342
.dma_slave_tx = SHDMA_SLAVE_SDHI0_TX,
343343
.dma_slave_rx = SHDMA_SLAVE_SDHI0_RX,
344+
.tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
344345
.tmio_caps = MMC_CAP_SD_HIGHSPEED,
345346
.tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29,
346347
};
@@ -382,7 +383,7 @@ void ag5evm_sdhi1_set_pwr(struct platform_device *pdev, int state)
382383
}
383384

384385
static struct sh_mobile_sdhi_info sh_sdhi1_info = {
385-
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE,
386+
.tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT,
386387
.tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ,
387388
.tmio_ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
388389
.set_pwr = ag5evm_sdhi1_set_pwr,

arch/arm/mach-shmobile/board-mackerel.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,8 @@ static struct usbhs_private usbhs0_private = {
641641
},
642642
.driver_param = {
643643
.buswait_bwait = 4,
644+
.d0_tx_id = SHDMA_SLAVE_USB0_TX,
645+
.d1_rx_id = SHDMA_SLAVE_USB0_RX,
644646
},
645647
},
646648
};
@@ -810,6 +812,8 @@ static struct usbhs_private usbhs1_private = {
810812
.buswait_bwait = 4,
811813
.pipe_type = usbhs1_pipe_cfg,
812814
.pipe_size = ARRAY_SIZE(usbhs1_pipe_cfg),
815+
.d0_tx_id = SHDMA_SLAVE_USB1_TX,
816+
.d1_rx_id = SHDMA_SLAVE_USB1_RX,
813817
},
814818
},
815819
};

arch/arm/mach-shmobile/clock-sh7372.c

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -503,23 +503,25 @@ static struct clk *late_main_clks[] = {
503503
&sh7372_fsidivb_clk,
504504
};
505505

506-
enum { MSTP001,
506+
enum { MSTP001, MSTP000,
507507
MSTP131, MSTP130,
508508
MSTP129, MSTP128, MSTP127, MSTP126, MSTP125,
509509
MSTP118, MSTP117, MSTP116, MSTP113,
510510
MSTP106, MSTP101, MSTP100,
511511
MSTP223,
512-
MSTP218, MSTP217, MSTP216,
513-
MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
514-
MSTP329, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312,
515-
MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP406, MSTP403,
512+
MSTP218, MSTP217, MSTP216, MSTP214, MSTP208, MSTP207,
513+
MSTP206, MSTP205, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
514+
MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312,
515+
MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP407, MSTP406,
516+
MSTP405, MSTP404, MSTP403, MSTP400,
516517
MSTP_NR };
517518

518519
#define MSTP(_parent, _reg, _bit, _flags) \
519520
SH_CLK_MSTP32(_parent, _reg, _bit, _flags)
520521

521522
static struct clk mstp_clks[MSTP_NR] = {
522523
[MSTP001] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 1, 0), /* IIC2 */
524+
[MSTP000] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 0, 0), /* MSIOF0 */
523525
[MSTP131] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 31, 0), /* VEU3 */
524526
[MSTP130] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 30, 0), /* VEU2 */
525527
[MSTP129] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 29, 0), /* VEU1 */
@@ -538,14 +540,16 @@ static struct clk mstp_clks[MSTP_NR] = {
538540
[MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */
539541
[MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */
540542
[MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */
543+
[MSTP214] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 14, 0), /* USBDMAC */
544+
[MSTP208] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 8, 0), /* MSIOF1 */
541545
[MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */
542546
[MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */
547+
[MSTP205] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 5, 0), /* MSIOF2 */
543548
[MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */
544549
[MSTP203] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 3, 0), /* SCIFA1 */
545550
[MSTP202] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 2, 0), /* SCIFA2 */
546551
[MSTP201] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 1, 0), /* SCIFA3 */
547552
[MSTP200] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 0, 0), /* SCIFA4 */
548-
[MSTP329] = MSTP(&r_clk, SMSTPCR3, 29, 0), /* CMT10 */
549553
[MSTP328] = MSTP(&div6_clks[DIV6_SPU], SMSTPCR3, 28, 0), /* FSI2 */
550554
[MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */
551555
[MSTP322] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 22, 0), /* USB0 */
@@ -557,8 +561,12 @@ static struct clk mstp_clks[MSTP_NR] = {
557561
[MSTP413] = MSTP(&pllc1_div2_clk, SMSTPCR4, 13, 0), /* HDMI */
558562
[MSTP411] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 11, 0), /* IIC3 */
559563
[MSTP410] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 10, 0), /* IIC4 */
564+
[MSTP407] = MSTP(&div4_clks[DIV4_HP], SMSTPCR4, 7, 0), /* USB-DMAC1 */
560565
[MSTP406] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 6, 0), /* USB1 */
566+
[MSTP405] = MSTP(&r_clk, SMSTPCR4, 5, 0), /* CMT4 */
567+
[MSTP404] = MSTP(&r_clk, SMSTPCR4, 4, 0), /* CMT3 */
561568
[MSTP403] = MSTP(&r_clk, SMSTPCR4, 3, 0), /* KEYSC */
569+
[MSTP400] = MSTP(&r_clk, SMSTPCR4, 0, 0), /* CMT2 */
562570
};
563571

564572
static struct clk_lookup lookups[] = {
@@ -609,6 +617,7 @@ static struct clk_lookup lookups[] = {
609617

610618
/* MSTP32 clocks */
611619
CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* IIC2 */
620+
CLKDEV_DEV_ID("spi_sh_msiof.0", &mstp_clks[MSTP000]), /* MSIOF0 */
612621
CLKDEV_DEV_ID("uio_pdrv_genirq.4", &mstp_clks[MSTP131]), /* VEU3 */
613622
CLKDEV_DEV_ID("uio_pdrv_genirq.3", &mstp_clks[MSTP130]), /* VEU2 */
614623
CLKDEV_DEV_ID("uio_pdrv_genirq.2", &mstp_clks[MSTP129]), /* VEU1 */
@@ -629,14 +638,16 @@ static struct clk_lookup lookups[] = {
629638
CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */
630639
CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */
631640
CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */
641+
CLKDEV_DEV_ID("sh-dma-engine.3", &mstp_clks[MSTP214]), /* USB-DMAC0 */
642+
CLKDEV_DEV_ID("spi_sh_msiof.1", &mstp_clks[MSTP208]), /* MSIOF1 */
632643
CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */
633644
CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */
645+
CLKDEV_DEV_ID("spi_sh_msiof.2", &mstp_clks[MSTP205]), /* MSIOF2 */
634646
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */
635647
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */
636648
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP202]), /* SCIFA2 */
637649
CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP201]), /* SCIFA3 */
638650
CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP200]), /* SCIFA4 */
639-
CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]), /* CMT10 */
640651
CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]), /* FSI2 */
641652
CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* IIC1 */
642653
CLKDEV_DEV_ID("r8a66597_hcd.0", &mstp_clks[MSTP322]), /* USB0 */
@@ -650,10 +661,14 @@ static struct clk_lookup lookups[] = {
650661
CLKDEV_DEV_ID("sh-mobile-hdmi", &mstp_clks[MSTP413]), /* HDMI */
651662
CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* IIC3 */
652663
CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* IIC4 */
664+
CLKDEV_DEV_ID("sh-dma-engine.4", &mstp_clks[MSTP407]), /* USB-DMAC1 */
653665
CLKDEV_DEV_ID("r8a66597_hcd.1", &mstp_clks[MSTP406]), /* USB1 */
654666
CLKDEV_DEV_ID("r8a66597_udc.1", &mstp_clks[MSTP406]), /* USB1 */
655667
CLKDEV_DEV_ID("renesas_usbhs.1", &mstp_clks[MSTP406]), /* USB1 */
668+
CLKDEV_DEV_ID("sh_cmt.4", &mstp_clks[MSTP405]), /* CMT4 */
669+
CLKDEV_DEV_ID("sh_cmt.3", &mstp_clks[MSTP404]), /* CMT3 */
656670
CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */
671+
CLKDEV_DEV_ID("sh_cmt.2", &mstp_clks[MSTP400]), /* CMT2 */
657672

658673
CLKDEV_ICK_ID("hdmi", "sh_mobile_lcdc_fb.1",
659674
&div6_reparent_clks[DIV6_HDMI]),

arch/arm/mach-shmobile/clock-sh73a0.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ void __init sh73a0_clock_init(void)
365365
__raw_writel(0x108, SD2CKCR);
366366

367367
/* detect main clock parent */
368-
switch ((__raw_readl(CKSCR) >> 24) & 0x03) {
368+
switch ((__raw_readl(CKSCR) >> 28) & 0x03) {
369369
case 0:
370370
main_clk.parent = &sh73a0_extal1_clk;
371371
break;

arch/arm/mach-shmobile/include/mach/sh7372.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,10 @@ enum {
459459
SHDMA_SLAVE_SDHI2_TX,
460460
SHDMA_SLAVE_MMCIF_RX,
461461
SHDMA_SLAVE_MMCIF_TX,
462+
SHDMA_SLAVE_USB0_TX,
463+
SHDMA_SLAVE_USB0_RX,
464+
SHDMA_SLAVE_USB1_TX,
465+
SHDMA_SLAVE_USB1_RX,
462466
};
463467

464468
extern struct clk sh7372_extal1_clk;

arch/arm/mach-shmobile/intc-sh7372.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ enum {
379379
/* BBIF2 */
380380
VPU,
381381
TSIF1,
382-
_3DG_SGX530,
382+
/* 3DG */
383383
_2DDMAC,
384384
IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2,
385385
IPMMU_IPMMUR, IPMMU_IPMMUR2,
@@ -436,7 +436,7 @@ static struct intc_vect intcs_vectors[] = {
436436
/* BBIF2 */
437437
INTCS_VECT(VPU, 0x980),
438438
INTCS_VECT(TSIF1, 0x9a0),
439-
INTCS_VECT(_3DG_SGX530, 0x9e0),
439+
/* 3DG */
440440
INTCS_VECT(_2DDMAC, 0xa00),
441441
INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0),
442442
INTCS_VECT(IIC2_WAITI2, 0xac0), INTCS_VECT(IIC2_DTEI2, 0xae0),
@@ -521,7 +521,7 @@ static struct intc_mask_reg intcs_mask_registers[] = {
521521
RTDMAC_1_DEI3, RTDMAC_1_DEI2, RTDMAC_1_DEI1, RTDMAC_1_DEI0 } },
522522
{ 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */
523523
{ 0, 0, MSIOF, 0,
524-
_3DG_SGX530, 0, 0, 0 } },
524+
0, 0, 0, 0 } },
525525
{ 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */
526526
{ 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0,
527527
0, 0, 0, 0 } },
@@ -561,7 +561,6 @@ static struct intc_prio_reg intcs_prio_registers[] = {
561561
TMU_TUNI2, TSIF1 } },
562562
{ 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, 0, VEU, BEU } },
563563
{ 0xffd20020, 0, 16, 4, /* IPRIS */ { 0, MSIOF, TSIF0, IIC0 } },
564-
{ 0xffd20024, 0, 16, 4, /* IPRJS */ { 0, _3DG_SGX530, 0, 0 } },
565564
{ 0xffd20028, 0, 16, 4, /* IPRKS */ { 0, 0, LMB, 0 } },
566565
{ 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, 0, 0 } },
567566
{ 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } },

0 commit comments

Comments
 (0)