Commit 3d7608e4c169af0361a4ebcb6294e7530b0e2c31

Authored by Ulrich Hecht
Committed by Simon Horman
1 parent c2c7375ba2

ARM: shmobile: bockw: remove legacy board file and config

Replaced by multi-platform.

Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
Acked-by: by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>

Showing 4 changed files with 0 additions and 764 deletions Side-by-side Diff

arch/arm/mach-shmobile/Kconfig
... ... @@ -115,17 +115,6 @@
115 115 select ARCH_WANT_OPTIONAL_GPIOLIB
116 116 select ARM_GIC
117 117  
118   -comment "Renesas ARM SoCs Board Type"
119   -
120   -config MACH_BOCKW
121   - bool "BOCK-W platform"
122   - depends on ARCH_R8A7778
123   - select ARCH_REQUIRE_GPIOLIB
124   - select REGULATOR_FIXED_VOLTAGE if REGULATOR
125   - select SND_SOC_AK4554 if SND_SIMPLE_CARD
126   - select SND_SOC_AK4642 if SND_SIMPLE_CARD && I2C
127   - select USE_OF
128   -
129 118 comment "Renesas ARM SoCs System Configuration"
130 119  
131 120 config CPU_HAS_INTEVT
arch/arm/mach-shmobile/Makefile
... ... @@ -49,11 +49,6 @@
49 49 obj-$(CONFIG_PM_RMOBILE) += pm-rmobile.o
50 50 obj-$(CONFIG_ARCH_RCAR_GEN2) += pm-rcar-gen2.o
51 51  
52   -# Board objects
53   -ifndef CONFIG_ARCH_SHMOBILE_MULTI
54   -obj-$(CONFIG_MACH_BOCKW) += board-bockw.o
55   -endif
56   -
57 52 # Framework support
58 53 obj-$(CONFIG_SMP) += $(smp-y)
arch/arm/mach-shmobile/Makefile.boot
1   -# per-board load address for uImage
2   -loadaddr-y :=
3   -loadaddr-$(CONFIG_MACH_BOCKW) += 0x60008000
4   -
5   -__ZRELADDR := $(sort $(loadaddr-y))
6   - zreladdr-y += $(__ZRELADDR)
7   -
8   -# Unsupported legacy stuff
9   -#
10   -#params_phys-y (Instead: Pass atags pointer in r2)
11   -#initrd_phys-y (Instead: Use compiled-in initramfs)
arch/arm/mach-shmobile/board-bockw.c
1   -/*
2   - * Bock-W board support
3   - *
4   - * Copyright (C) 2013-2014 Renesas Solutions Corp.
5   - * Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
6   - * Copyright (C) 2013-2014 Cogent Embedded, Inc.
7   - *
8   - * This program is free software; you can redistribute it and/or modify
9   - * it under the terms of the GNU General Public License as published by
10   - * the Free Software Foundation; version 2 of the License.
11   - *
12   - * This program is distributed in the hope that it will be useful,
13   - * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15   - * GNU General Public License for more details.
16   - */
17   -
18   -#include <linux/mfd/tmio.h>
19   -#include <linux/mmc/host.h>
20   -#include <linux/mmc/sh_mobile_sdhi.h>
21   -#include <linux/mmc/sh_mmcif.h>
22   -#include <linux/mtd/partitions.h>
23   -#include <linux/pinctrl/machine.h>
24   -#include <linux/platform_data/camera-rcar.h>
25   -#include <linux/platform_data/usb-rcar-phy.h>
26   -#include <linux/platform_device.h>
27   -#include <linux/regulator/fixed.h>
28   -#include <linux/regulator/machine.h>
29   -#include <linux/smsc911x.h>
30   -#include <linux/spi/spi.h>
31   -#include <linux/spi/flash.h>
32   -#include <linux/usb/renesas_usbhs.h>
33   -
34   -#include <media/soc_camera.h>
35   -#include <asm/mach/arch.h>
36   -#include <sound/rcar_snd.h>
37   -#include <sound/simple_card.h>
38   -
39   -#include "common.h"
40   -#include "irqs.h"
41   -#include "r8a7778.h"
42   -
43   -#define FPGA 0x18200000
44   -#define IRQ0MR 0x30
45   -#define COMCTLR 0x101c
46   -static void __iomem *fpga;
47   -
48   -/*
49   - * CN9(Upper side) SCIF/RCAN selection
50   - *
51   - * 1,4 3,6
52   - * SW40 SCIF RCAN
53   - * SW41 SCIF RCAN
54   - */
55   -
56   -/*
57   - * MMC (CN26) pin
58   - *
59   - * SW6 (D2) 3 pin
60   - * SW7 (D5) ON
61   - * SW8 (D3) 3 pin
62   - * SW10 (D4) 1 pin
63   - * SW12 (CLK) 1 pin
64   - * SW13 (D6) 3 pin
65   - * SW14 (CMD) ON
66   - * SW15 (D6) 1 pin
67   - * SW16 (D0) ON
68   - * SW17 (D1) ON
69   - * SW18 (D7) 3 pin
70   - * SW19 (MMC) 1 pin
71   - */
72   -
73   -/*
74   - * SSI settings
75   - *
76   - * SW45: 1-4 side (SSI5 out, ROUT/LOUT CN19 Mid)
77   - * SW46: 1101 (SSI6 Recorde)
78   - * SW47: 1110 (SSI5 Playback)
79   - * SW48: 11 (Recorde power)
80   - * SW49: 1 (SSI slave mode)
81   - * SW50: 1111 (SSI7, SSI8)
82   - * SW51: 1111 (SSI3, SSI4)
83   - * SW54: 1pin (ak4554 FPGA control)
84   - * SW55: 1 (CLKB is 24.5760MHz)
85   - * SW60: 1pin (ak4554 FPGA control)
86   - * SW61: 3pin (use X11 clock)
87   - * SW78: 3-6 (ak4642 connects I2C0)
88   - *
89   - * You can use sound as
90   - *
91   - * hw0: CN19: SSI56-AK4643
92   - * hw1: CN21: SSI3-AK4554(playback)
93   - * hw2: CN21: SSI4-AK4554(capture)
94   - * hw3: CN20: SSI7-AK4554(playback)
95   - * hw4: CN20: SSI8-AK4554(capture)
96   - *
97   - * this command is required when playback on hw0.
98   - *
99   - * # amixer set "LINEOUT Mixer DACL" on
100   - */
101   -
102   -/*
103   - * USB
104   - *
105   - * USB1 (CN29) can be Host/Function
106   - *
107   - * Host Func
108   - * SW98 1 2
109   - * SW99 1 3
110   - */
111   -
112   -/* Dummy supplies, where voltage doesn't matter */
113   -static struct regulator_consumer_supply dummy_supplies[] = {
114   - REGULATOR_SUPPLY("vddvario", "smsc911x"),
115   - REGULATOR_SUPPLY("vdd33a", "smsc911x"),
116   -};
117   -
118   -static struct regulator_consumer_supply fixed3v3_power_consumers[] = {
119   - REGULATOR_SUPPLY("vmmc", "sh_mmcif"),
120   - REGULATOR_SUPPLY("vqmmc", "sh_mmcif"),
121   -};
122   -
123   -static struct smsc911x_platform_config smsc911x_data __initdata = {
124   - .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
125   - .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
126   - .flags = SMSC911X_USE_32BIT,
127   - .phy_interface = PHY_INTERFACE_MODE_MII,
128   -};
129   -
130   -static struct resource smsc911x_resources[] __initdata = {
131   - DEFINE_RES_MEM(0x18300000, 0x1000),
132   - DEFINE_RES_IRQ(irq_pin(0)), /* IRQ 0 */
133   -};
134   -
135   -#if IS_ENABLED(CONFIG_USB_RENESAS_USBHS_UDC)
136   -/*
137   - * When USB1 is Func
138   - */
139   -static int usbhsf_get_id(struct platform_device *pdev)
140   -{
141   - return USBHS_GADGET;
142   -}
143   -
144   -#define SUSPMODE 0x102
145   -static int usbhsf_power_ctrl(struct platform_device *pdev,
146   - void __iomem *base, int enable)
147   -{
148   - enable = !!enable;
149   -
150   - r8a7778_usb_phy_power(enable);
151   -
152   - iowrite16(enable << 14, base + SUSPMODE);
153   -
154   - return 0;
155   -}
156   -
157   -static struct resource usbhsf_resources[] __initdata = {
158   - DEFINE_RES_MEM(0xffe60000, 0x110),
159   - DEFINE_RES_IRQ(gic_iid(0x4f)),
160   -};
161   -
162   -static struct renesas_usbhs_platform_info usbhs_info __initdata = {
163   - .platform_callback = {
164   - .get_id = usbhsf_get_id,
165   - .power_ctrl = usbhsf_power_ctrl,
166   - },
167   - .driver_param = {
168   - .buswait_bwait = 4,
169   - .d0_tx_id = HPBDMA_SLAVE_USBFUNC_TX,
170   - .d1_rx_id = HPBDMA_SLAVE_USBFUNC_RX,
171   - },
172   -};
173   -
174   -#define USB_PHY_SETTING {.port1_func = 1, .ovc_pin[1].active_high = 1,}
175   -#define USB1_DEVICE "renesas_usbhs"
176   -#define ADD_USB_FUNC_DEVICE_IF_POSSIBLE() \
177   - platform_device_register_resndata( \
178   - NULL, "renesas_usbhs", -1, \
179   - usbhsf_resources, \
180   - ARRAY_SIZE(usbhsf_resources), \
181   - &usbhs_info, sizeof(struct renesas_usbhs_platform_info))
182   -
183   -#else
184   -/*
185   - * When USB1 is Host
186   - */
187   -#define USB_PHY_SETTING { }
188   -#define USB1_DEVICE "ehci-platform"
189   -#define ADD_USB_FUNC_DEVICE_IF_POSSIBLE()
190   -
191   -#endif
192   -
193   -/* USB */
194   -static struct resource usb_phy_resources[] __initdata = {
195   - DEFINE_RES_MEM(0xffe70800, 0x100),
196   - DEFINE_RES_MEM(0xffe76000, 0x100),
197   -};
198   -
199   -static struct rcar_phy_platform_data usb_phy_platform_data __initdata =
200   - USB_PHY_SETTING;
201   -
202   -
203   -/* SDHI */
204   -static struct tmio_mmc_data sdhi0_info __initdata = {
205   - .chan_priv_tx = (void *)HPBDMA_SLAVE_SDHI0_TX,
206   - .chan_priv_rx = (void *)HPBDMA_SLAVE_SDHI0_RX,
207   - .capabilities = MMC_CAP_SD_HIGHSPEED,
208   - .ocr_mask = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34,
209   - .flags = TMIO_MMC_HAS_IDLE_WAIT,
210   -};
211   -
212   -static struct resource sdhi0_resources[] __initdata = {
213   - DEFINE_RES_MEM(0xFFE4C000, 0x100),
214   - DEFINE_RES_IRQ(gic_iid(0x77)),
215   -};
216   -
217   -/* Ether */
218   -static struct resource ether_resources[] __initdata = {
219   - DEFINE_RES_MEM(0xfde00000, 0x400),
220   - DEFINE_RES_IRQ(gic_iid(0x89)),
221   -};
222   -
223   -static struct sh_eth_plat_data ether_platform_data __initdata = {
224   - .phy = 0x01,
225   - .edmac_endian = EDMAC_LITTLE_ENDIAN,
226   - .phy_interface = PHY_INTERFACE_MODE_RMII,
227   - /*
228   - * Although the LINK signal is available on the board, it's connected to
229   - * the link/activity LED output of the PHY, thus the link disappears and
230   - * reappears after each packet. We'd be better off ignoring such signal
231   - * and getting the link state from the PHY indirectly.
232   - */
233   - .no_ether_link = 1,
234   -};
235   -
236   -static struct platform_device_info ether_info __initdata = {
237   - .name = "r8a777x-ether",
238   - .id = -1,
239   - .res = ether_resources,
240   - .num_res = ARRAY_SIZE(ether_resources),
241   - .data = &ether_platform_data,
242   - .size_data = sizeof(ether_platform_data),
243   - .dma_mask = DMA_BIT_MASK(32),
244   -};
245   -
246   -/* I2C */
247   -static struct i2c_board_info i2c0_devices[] = {
248   - {
249   - I2C_BOARD_INFO("rx8581", 0x51),
250   - }, {
251   - I2C_BOARD_INFO("ak4643", 0x12),
252   - }
253   -};
254   -
255   -/* HSPI*/
256   -static struct mtd_partition m25p80_spi_flash_partitions[] = {
257   - {
258   - .name = "data(spi)",
259   - .size = 0x0100000,
260   - .offset = 0,
261   - },
262   -};
263   -
264   -static struct flash_platform_data spi_flash_data = {
265   - .name = "m25p80",
266   - .type = "s25fl008k",
267   - .parts = m25p80_spi_flash_partitions,
268   - .nr_parts = ARRAY_SIZE(m25p80_spi_flash_partitions),
269   -};
270   -
271   -static struct spi_board_info spi_board_info[] __initdata = {
272   - {
273   - .modalias = "m25p80",
274   - .max_speed_hz = 104000000,
275   - .chip_select = 0,
276   - .bus_num = 0,
277   - .mode = SPI_MODE_0,
278   - .platform_data = &spi_flash_data,
279   - },
280   -};
281   -
282   -/* MMC */
283   -static struct resource mmc_resources[] __initdata = {
284   - DEFINE_RES_MEM(0xffe4e000, 0x100),
285   - DEFINE_RES_IRQ(gic_iid(0x5d)),
286   -};
287   -
288   -static struct sh_mmcif_plat_data sh_mmcif_plat __initdata = {
289   - .sup_pclk = 0,
290   - .caps = MMC_CAP_4_BIT_DATA |
291   - MMC_CAP_8_BIT_DATA |
292   - MMC_CAP_NEEDS_POLL,
293   -};
294   -
295   -/* In the default configuration both decoders reside on I2C bus 0 */
296   -#define BOCKW_CAMERA(idx) \
297   -static struct i2c_board_info camera##idx##_info = { \
298   - I2C_BOARD_INFO("ml86v7667", 0x41 + 2 * (idx)), \
299   -}; \
300   - \
301   -static struct soc_camera_link iclink##idx##_ml86v7667 __initdata = { \
302   - .bus_id = idx, \
303   - .i2c_adapter_id = 0, \
304   - .board_info = &camera##idx##_info, \
305   -}
306   -
307   -BOCKW_CAMERA(0);
308   -BOCKW_CAMERA(1);
309   -
310   -/* VIN */
311   -static struct rcar_vin_platform_data vin_platform_data __initdata = {
312   - .flags = RCAR_VIN_BT656,
313   -};
314   -
315   -#define R8A7778_VIN(idx) \
316   -static struct resource vin##idx##_resources[] __initdata = { \
317   - DEFINE_RES_MEM(0xffc50000 + 0x1000 * (idx), 0x1000), \
318   - DEFINE_RES_IRQ(gic_iid(0x5a)), \
319   -}; \
320   - \
321   -static struct platform_device_info vin##idx##_info __initdata = { \
322   - .name = "r8a7778-vin", \
323   - .id = idx, \
324   - .res = vin##idx##_resources, \
325   - .num_res = ARRAY_SIZE(vin##idx##_resources), \
326   - .dma_mask = DMA_BIT_MASK(32), \
327   - .data = &vin_platform_data, \
328   - .size_data = sizeof(vin_platform_data), \
329   -}
330   -R8A7778_VIN(0);
331   -R8A7778_VIN(1);
332   -
333   -/* Sound */
334   -static struct resource rsnd_resources[] __initdata = {
335   - [RSND_GEN1_SRU] = DEFINE_RES_MEM(0xffd90000, 0x1000),
336   - [RSND_GEN1_SSI] = DEFINE_RES_MEM(0xffd91000, 0x1240),
337   - [RSND_GEN1_ADG] = DEFINE_RES_MEM(0xfffe0000, 0x24),
338   -};
339   -
340   -static struct rsnd_ssi_platform_info rsnd_ssi[] = {
341   - RSND_SSI_UNUSED, /* SSI 0 */
342   - RSND_SSI_UNUSED, /* SSI 1 */
343   - RSND_SSI_UNUSED, /* SSI 2 */
344   - RSND_SSI(HPBDMA_SLAVE_HPBIF3_TX, gic_iid(0x85), 0),
345   - RSND_SSI(HPBDMA_SLAVE_HPBIF4_RX, gic_iid(0x85), RSND_SSI_CLK_PIN_SHARE),
346   - RSND_SSI(HPBDMA_SLAVE_HPBIF5_TX, gic_iid(0x86), 0),
347   - RSND_SSI(HPBDMA_SLAVE_HPBIF6_RX, gic_iid(0x86), 0),
348   - RSND_SSI(HPBDMA_SLAVE_HPBIF7_TX, gic_iid(0x86), 0),
349   - RSND_SSI(HPBDMA_SLAVE_HPBIF8_RX, gic_iid(0x86), RSND_SSI_CLK_PIN_SHARE),
350   -};
351   -
352   -static struct rsnd_src_platform_info rsnd_src[9] = {
353   - RSND_SRC_UNUSED, /* SRU 0 */
354   - RSND_SRC_UNUSED, /* SRU 1 */
355   - RSND_SRC_UNUSED, /* SRU 2 */
356   - RSND_SRC(0, 0),
357   - RSND_SRC(0, 0),
358   - RSND_SRC(0, 0),
359   - RSND_SRC(0, 0),
360   - RSND_SRC(0, 0),
361   - RSND_SRC(0, 0),
362   -};
363   -
364   -static struct rsnd_dai_platform_info rsnd_dai[] = {
365   - {
366   - .playback = { .ssi = &rsnd_ssi[5], .src = &rsnd_src[5] },
367   - .capture = { .ssi = &rsnd_ssi[6], .src = &rsnd_src[6] },
368   - }, {
369   - .playback = { .ssi = &rsnd_ssi[3], .src = &rsnd_src[3] },
370   - }, {
371   - .capture = { .ssi = &rsnd_ssi[4], .src = &rsnd_src[4] },
372   - }, {
373   - .playback = { .ssi = &rsnd_ssi[7], .src = &rsnd_src[7] },
374   - }, {
375   - .capture = { .ssi = &rsnd_ssi[8], .src = &rsnd_src[8] },
376   - },
377   -};
378   -
379   -enum {
380   - AK4554_34 = 0,
381   - AK4643_56,
382   - AK4554_78,
383   - SOUND_MAX,
384   -};
385   -
386   -static int rsnd_codec_power(int id, int enable)
387   -{
388   - static int sound_user[SOUND_MAX] = {0, 0, 0};
389   - int *usr = NULL;
390   - u32 bit;
391   -
392   - switch (id) {
393   - case 3:
394   - case 4:
395   - usr = sound_user + AK4554_34;
396   - bit = (1 << 10);
397   - break;
398   - case 5:
399   - case 6:
400   - usr = sound_user + AK4643_56;
401   - bit = (1 << 6);
402   - break;
403   - case 7:
404   - case 8:
405   - usr = sound_user + AK4554_78;
406   - bit = (1 << 7);
407   - break;
408   - }
409   -
410   - if (!usr)
411   - return -EIO;
412   -
413   - if (enable) {
414   - if (*usr == 0) {
415   - u32 val = ioread16(fpga + COMCTLR);
416   - val &= ~bit;
417   - iowrite16(val, fpga + COMCTLR);
418   - }
419   -
420   - (*usr)++;
421   - } else {
422   - if (*usr == 0)
423   - return 0;
424   -
425   - (*usr)--;
426   -
427   - if (*usr == 0) {
428   - u32 val = ioread16(fpga + COMCTLR);
429   - val |= bit;
430   - iowrite16(val, fpga + COMCTLR);
431   - }
432   - }
433   -
434   - return 0;
435   -}
436   -
437   -static int rsnd_start(int id)
438   -{
439   - return rsnd_codec_power(id, 1);
440   -}
441   -
442   -static int rsnd_stop(int id)
443   -{
444   - return rsnd_codec_power(id, 0);
445   -}
446   -
447   -static struct rcar_snd_info rsnd_info = {
448   - .flags = RSND_GEN1,
449   - .ssi_info = rsnd_ssi,
450   - .ssi_info_nr = ARRAY_SIZE(rsnd_ssi),
451   - .src_info = rsnd_src,
452   - .src_info_nr = ARRAY_SIZE(rsnd_src),
453   - .dai_info = rsnd_dai,
454   - .dai_info_nr = ARRAY_SIZE(rsnd_dai),
455   - .start = rsnd_start,
456   - .stop = rsnd_stop,
457   -};
458   -
459   -static struct asoc_simple_card_info rsnd_card_info[] = {
460   - /* SSI5, SSI6 */
461   - {
462   - .name = "AK4643",
463   - .card = "SSI56-AK4643",
464   - .codec = "ak4642-codec.0-0012",
465   - .platform = "rcar_sound",
466   - .daifmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBM_CFM,
467   - .cpu_dai = {
468   - .name = "rsnd-dai.0",
469   - },
470   - .codec_dai = {
471   - .name = "ak4642-hifi",
472   - .sysclk = 11289600,
473   - },
474   - },
475   - /* SSI3 */
476   - {
477   - .name = "AK4554",
478   - .card = "SSI3-AK4554(playback)",
479   - .codec = "ak4554-adc-dac.0",
480   - .platform = "rcar_sound",
481   - .daifmt = SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_RIGHT_J,
482   - .cpu_dai = {
483   - .name = "rsnd-dai.1",
484   - },
485   - .codec_dai = {
486   - .name = "ak4554-hifi",
487   - },
488   - },
489   - /* SSI4 */
490   - {
491   - .name = "AK4554",
492   - .card = "SSI4-AK4554(capture)",
493   - .codec = "ak4554-adc-dac.0",
494   - .platform = "rcar_sound",
495   - .daifmt = SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_LEFT_J,
496   - .cpu_dai = {
497   - .name = "rsnd-dai.2",
498   - },
499   - .codec_dai = {
500   - .name = "ak4554-hifi",
501   - },
502   - },
503   - /* SSI7 */
504   - {
505   - .name = "AK4554",
506   - .card = "SSI7-AK4554(playback)",
507   - .codec = "ak4554-adc-dac.1",
508   - .platform = "rcar_sound",
509   - .daifmt = SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_RIGHT_J,
510   - .cpu_dai = {
511   - .name = "rsnd-dai.3",
512   - },
513   - .codec_dai = {
514   - .name = "ak4554-hifi",
515   - },
516   - },
517   - /* SSI8 */
518   - {
519   - .name = "AK4554",
520   - .card = "SSI8-AK4554(capture)",
521   - .codec = "ak4554-adc-dac.1",
522   - .platform = "rcar_sound",
523   - .daifmt = SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_LEFT_J,
524   - .cpu_dai = {
525   - .name = "rsnd-dai.4",
526   - },
527   - .codec_dai = {
528   - .name = "ak4554-hifi",
529   - },
530   - }
531   -};
532   -
533   -static const struct pinctrl_map bockw_pinctrl_map[] = {
534   - /* AUDIO */
535   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
536   - "audio_clk_a", "audio_clk"),
537   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
538   - "audio_clk_b", "audio_clk"),
539   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
540   - "ssi34_ctrl", "ssi"),
541   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
542   - "ssi3_data", "ssi"),
543   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
544   - "ssi4_data", "ssi"),
545   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
546   - "ssi5_ctrl", "ssi"),
547   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
548   - "ssi5_data", "ssi"),
549   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
550   - "ssi6_ctrl", "ssi"),
551   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
552   - "ssi6_data", "ssi"),
553   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
554   - "ssi78_ctrl", "ssi"),
555   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
556   - "ssi7_data", "ssi"),
557   - PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7778",
558   - "ssi8_data", "ssi"),
559   - /* Ether */
560   - PIN_MAP_MUX_GROUP_DEFAULT("r8a777x-ether", "pfc-r8a7778",
561   - "ether_rmii", "ether"),
562   - /* HSPI0 */
563   - PIN_MAP_MUX_GROUP_DEFAULT("sh-hspi.0", "pfc-r8a7778",
564   - "hspi0_a", "hspi0"),
565   - /* MMC */
566   - PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif", "pfc-r8a7778",
567   - "mmc_data8", "mmc"),
568   - PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif", "pfc-r8a7778",
569   - "mmc_ctrl", "mmc"),
570   - /* SCIF0 */
571   - PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
572   - "scif0_data_a", "scif0"),
573   - PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
574   - "scif0_ctrl", "scif0"),
575   - /* USB */
576   - PIN_MAP_MUX_GROUP_DEFAULT("ehci-platform", "pfc-r8a7778",
577   - "usb0", "usb0"),
578   - PIN_MAP_MUX_GROUP_DEFAULT(USB1_DEVICE, "pfc-r8a7778",
579   - "usb1", "usb1"),
580   - /* SDHI0 */
581   - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
582   - "sdhi0_data4", "sdhi0"),
583   - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
584   - "sdhi0_ctrl", "sdhi0"),
585   - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
586   - "sdhi0_cd", "sdhi0"),
587   - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
588   - "sdhi0_wp", "sdhi0"),
589   - /* VIN0 */
590   - PIN_MAP_MUX_GROUP_DEFAULT("r8a7778-vin.0", "pfc-r8a7778",
591   - "vin0_clk", "vin0"),
592   - PIN_MAP_MUX_GROUP_DEFAULT("r8a7778-vin.0", "pfc-r8a7778",
593   - "vin0_data8", "vin0"),
594   - /* VIN1 */
595   - PIN_MAP_MUX_GROUP_DEFAULT("r8a7778-vin.1", "pfc-r8a7778",
596   - "vin1_clk", "vin1"),
597   - PIN_MAP_MUX_GROUP_DEFAULT("r8a7778-vin.1", "pfc-r8a7778",
598   - "vin1_data8", "vin1"),
599   -};
600   -
601   -#define PFC 0xfffc0000
602   -#define PUPR4 0x110
603   -static void __init bockw_init(void)
604   -{
605   - void __iomem *base;
606   - struct clk *clk;
607   - struct platform_device *pdev;
608   - int i;
609   -
610   - r8a7778_clock_init();
611   - r8a7778_init_irq_extpin(1);
612   - r8a7778_add_standard_devices();
613   -
614   - platform_device_register_full(&ether_info);
615   -
616   - platform_device_register_full(&vin0_info);
617   - /* VIN1 has a pin conflict with Ether */
618   - if (!IS_ENABLED(CONFIG_SH_ETH))
619   - platform_device_register_full(&vin1_info);
620   - platform_device_register_data(NULL, "soc-camera-pdrv", 0,
621   - &iclink0_ml86v7667,
622   - sizeof(iclink0_ml86v7667));
623   - platform_device_register_data(NULL, "soc-camera-pdrv", 1,
624   - &iclink1_ml86v7667,
625   - sizeof(iclink1_ml86v7667));
626   -
627   - i2c_register_board_info(0, i2c0_devices,
628   - ARRAY_SIZE(i2c0_devices));
629   - spi_register_board_info(spi_board_info,
630   - ARRAY_SIZE(spi_board_info));
631   - pinctrl_register_mappings(bockw_pinctrl_map,
632   - ARRAY_SIZE(bockw_pinctrl_map));
633   - r8a7778_pinmux_init();
634   -
635   - platform_device_register_resndata(
636   - NULL, "sh_mmcif", -1,
637   - mmc_resources, ARRAY_SIZE(mmc_resources),
638   - &sh_mmcif_plat, sizeof(struct sh_mmcif_plat_data));
639   -
640   - platform_device_register_resndata(
641   - NULL, "rcar_usb_phy", -1,
642   - usb_phy_resources,
643   - ARRAY_SIZE(usb_phy_resources),
644   - &usb_phy_platform_data,
645   - sizeof(struct rcar_phy_platform_data));
646   -
647   - regulator_register_fixed(0, dummy_supplies,
648   - ARRAY_SIZE(dummy_supplies));
649   - regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers,
650   - ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
651   -
652   - /* for SMSC */
653   - fpga = ioremap_nocache(FPGA, SZ_1M);
654   - if (fpga) {
655   - /*
656   - * CAUTION
657   - *
658   - * IRQ0/1 is cascaded interrupt from FPGA.
659   - * it should be cared in the future
660   - * Now, it is assuming IRQ0 was used only from SMSC.
661   - */
662   - u16 val = ioread16(fpga + IRQ0MR);
663   - val &= ~(1 << 4); /* enable SMSC911x */
664   - iowrite16(val, fpga + IRQ0MR);
665   -
666   - platform_device_register_resndata(
667   - NULL, "smsc911x", -1,
668   - smsc911x_resources, ARRAY_SIZE(smsc911x_resources),
669   - &smsc911x_data, sizeof(smsc911x_data));
670   - }
671   -
672   - /* for SDHI */
673   - base = ioremap_nocache(PFC, 0x200);
674   - if (base) {
675   - /*
676   - * FIXME
677   - *
678   - * SDHI CD/WP pin needs pull-up
679   - */
680   - iowrite32(ioread32(base + PUPR4) | (3 << 26), base + PUPR4);
681   - iounmap(base);
682   -
683   - platform_device_register_resndata(
684   - NULL, "sh_mobile_sdhi", 0,
685   - sdhi0_resources, ARRAY_SIZE(sdhi0_resources),
686   - &sdhi0_info, sizeof(struct tmio_mmc_data));
687   - }
688   -
689   - /* for Audio */
690   - rsnd_codec_power(5, 1); /* enable ak4642 */
691   -
692   - platform_device_register_simple(
693   - "ak4554-adc-dac", 0, NULL, 0);
694   -
695   - platform_device_register_simple(
696   - "ak4554-adc-dac", 1, NULL, 0);
697   -
698   - pdev = platform_device_register_resndata(
699   - NULL, "rcar_sound", -1,
700   - rsnd_resources, ARRAY_SIZE(rsnd_resources),
701   - &rsnd_info, sizeof(rsnd_info));
702   -
703   - clk = clk_get(&pdev->dev, "clk_b");
704   - clk_set_rate(clk, 24576000);
705   - clk_put(clk);
706   -
707   - for (i = 0; i < ARRAY_SIZE(rsnd_card_info); i++) {
708   - struct platform_device_info cardinfo = {
709   - .name = "asoc-simple-card",
710   - .id = i,
711   - .data = &rsnd_card_info[i],
712   - .size_data = sizeof(struct asoc_simple_card_info),
713   - .dma_mask = DMA_BIT_MASK(32),
714   - };
715   -
716   - platform_device_register_full(&cardinfo);
717   - }
718   -}
719   -
720   -static void __init bockw_init_late(void)
721   -{
722   - r8a7778_init_late();
723   - ADD_USB_FUNC_DEVICE_IF_POSSIBLE();
724   -}
725   -
726   -static const char *const bockw_boards_compat_dt[] __initconst = {
727   - "renesas,bockw",
728   - NULL,
729   -};
730   -
731   -DT_MACHINE_START(BOCKW_DT, "bockw")
732   - .init_early = shmobile_init_delay,
733   - .init_irq = r8a7778_init_irq_dt,
734   - .init_machine = bockw_init,
735   - .dt_compat = bockw_boards_compat_dt,
736   - .init_late = bockw_init_late,
737   -MACHINE_END