|
@@ -127,3 +127,106 @@ static struct resource thermal_resources[] = {
|
|
};
|
|
};
|
|
|
|
|
|
static struct platform_device thermal_device = {
|
|
static struct platform_device thermal_device = {
|
|
|
|
+ .name = "rcar_thermal",
|
|
|
|
+ .resource = thermal_resources,
|
|
|
|
+ .num_resources = ARRAY_SIZE(thermal_resources),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* HSPI */
|
|
|
|
+static struct resource hspi_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = 0xFFFC7000,
|
|
|
|
+ .end = 0xFFFC7018 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device hspi_device = {
|
|
|
|
+ .name = "sh-hspi",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .resource = hspi_resources,
|
|
|
|
+ .num_resources = ARRAY_SIZE(hspi_resources),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* USB PHY */
|
|
|
|
+static struct resource usb_phy_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = 0xffe70000,
|
|
|
|
+ .end = 0xffe70900 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = 0xfff70000,
|
|
|
|
+ .end = 0xfff70900 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device usb_phy_device = {
|
|
|
|
+ .name = "rcar_usb_phy",
|
|
|
|
+ .resource = usb_phy_resources,
|
|
|
|
+ .num_resources = ARRAY_SIZE(usb_phy_resources),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device *marzen_devices[] __initdata = {
|
|
|
|
+ ð_device,
|
|
|
|
+ &sdhi0_device,
|
|
|
|
+ &thermal_device,
|
|
|
|
+ &hspi_device,
|
|
|
|
+ &usb_phy_device,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* USB */
|
|
|
|
+static struct usb_phy *phy;
|
|
|
|
+static int usb_power_on(struct platform_device *pdev)
|
|
|
|
+{
|
|
|
|
+ if (!phy)
|
|
|
|
+ return -EIO;
|
|
|
|
+
|
|
|
|
+ pm_runtime_enable(&pdev->dev);
|
|
|
|
+ pm_runtime_get_sync(&pdev->dev);
|
|
|
|
+
|
|
|
|
+ usb_phy_init(phy);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void usb_power_off(struct platform_device *pdev)
|
|
|
|
+{
|
|
|
|
+ if (!phy)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ usb_phy_shutdown(phy);
|
|
|
|
+
|
|
|
|
+ pm_runtime_put_sync(&pdev->dev);
|
|
|
|
+ pm_runtime_disable(&pdev->dev);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct usb_ehci_pdata ehcix_pdata = {
|
|
|
|
+ .power_on = usb_power_on,
|
|
|
|
+ .power_off = usb_power_off,
|
|
|
|
+ .power_suspend = usb_power_off,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource ehci0_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = 0xffe70000,
|
|
|
|
+ .end = 0xffe70400 - 1,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = gic_spi(44),
|
|
|
|
+ .flags = IORESOURCE_IRQ,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device ehci0_device = {
|
|
|
|
+ .name = "ehci-platform",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .dev = {
|
|
|
|
+ .dma_mask = &ehci0_device.dev.coherent_dma_mask,
|
|
|
|
+ .coherent_dma_mask = 0xffffffff,
|
|
|
|
+ .platform_data = &ehcix_pdata,
|
|
|
|
+ },
|
|
|
|
+ .num_resources = ARRAY_SIZE(ehci0_resources),
|
|
|
|
+ .resource = ehci0_resources,
|