18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Renesas Technology Europe RSK+ Support. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2008 Paul Mundt 68c2ecf20Sopenharmony_ci * Copyright (C) 2008 Peter Griffin <pgriffin@mpc-data.co.uk> 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci#include <linux/init.h> 98c2ecf20Sopenharmony_ci#include <linux/types.h> 108c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 118c2ecf20Sopenharmony_ci#include <linux/interrupt.h> 128c2ecf20Sopenharmony_ci#include <linux/mtd/mtd.h> 138c2ecf20Sopenharmony_ci#include <linux/mtd/partitions.h> 148c2ecf20Sopenharmony_ci#include <linux/mtd/physmap.h> 158c2ecf20Sopenharmony_ci#include <linux/mtd/map.h> 168c2ecf20Sopenharmony_ci#include <linux/regulator/fixed.h> 178c2ecf20Sopenharmony_ci#include <linux/regulator/machine.h> 188c2ecf20Sopenharmony_ci#include <asm/machvec.h> 198c2ecf20Sopenharmony_ci#include <asm/io.h> 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/* Dummy supplies, where voltage doesn't matter */ 228c2ecf20Sopenharmony_cistatic struct regulator_consumer_supply dummy_supplies[] = { 238c2ecf20Sopenharmony_ci REGULATOR_SUPPLY("vddvario", "smsc911x"), 248c2ecf20Sopenharmony_ci REGULATOR_SUPPLY("vdd33a", "smsc911x"), 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic struct mtd_partition rsk_partitions[] = { 288c2ecf20Sopenharmony_ci { 298c2ecf20Sopenharmony_ci .name = "Bootloader", 308c2ecf20Sopenharmony_ci .offset = 0x00000000, 318c2ecf20Sopenharmony_ci .size = 0x00040000, 328c2ecf20Sopenharmony_ci .mask_flags = MTD_WRITEABLE, 338c2ecf20Sopenharmony_ci }, { 348c2ecf20Sopenharmony_ci .name = "Kernel", 358c2ecf20Sopenharmony_ci .offset = MTDPART_OFS_NXTBLK, 368c2ecf20Sopenharmony_ci .size = 0x001c0000, 378c2ecf20Sopenharmony_ci }, { 388c2ecf20Sopenharmony_ci .name = "Flash_FS", 398c2ecf20Sopenharmony_ci .offset = MTDPART_OFS_NXTBLK, 408c2ecf20Sopenharmony_ci .size = MTDPART_SIZ_FULL, 418c2ecf20Sopenharmony_ci } 428c2ecf20Sopenharmony_ci}; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_cistatic struct physmap_flash_data flash_data = { 458c2ecf20Sopenharmony_ci .parts = rsk_partitions, 468c2ecf20Sopenharmony_ci .nr_parts = ARRAY_SIZE(rsk_partitions), 478c2ecf20Sopenharmony_ci .width = 2, 488c2ecf20Sopenharmony_ci}; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_cistatic struct resource flash_resource = { 518c2ecf20Sopenharmony_ci .start = 0x20000000, 528c2ecf20Sopenharmony_ci .end = 0x20400000, 538c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 548c2ecf20Sopenharmony_ci}; 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_cistatic struct platform_device flash_device = { 578c2ecf20Sopenharmony_ci .name = "physmap-flash", 588c2ecf20Sopenharmony_ci .id = -1, 598c2ecf20Sopenharmony_ci .resource = &flash_resource, 608c2ecf20Sopenharmony_ci .num_resources = 1, 618c2ecf20Sopenharmony_ci .dev = { 628c2ecf20Sopenharmony_ci .platform_data = &flash_data, 638c2ecf20Sopenharmony_ci }, 648c2ecf20Sopenharmony_ci}; 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_cistatic struct platform_device *rsk_devices[] __initdata = { 678c2ecf20Sopenharmony_ci &flash_device, 688c2ecf20Sopenharmony_ci}; 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_cistatic int __init rsk_devices_setup(void) 718c2ecf20Sopenharmony_ci{ 728c2ecf20Sopenharmony_ci regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci return platform_add_devices(rsk_devices, 758c2ecf20Sopenharmony_ci ARRAY_SIZE(rsk_devices)); 768c2ecf20Sopenharmony_ci} 778c2ecf20Sopenharmony_cidevice_initcall(rsk_devices_setup); 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci/* 808c2ecf20Sopenharmony_ci * The Machine Vector 818c2ecf20Sopenharmony_ci */ 828c2ecf20Sopenharmony_cistatic struct sh_machine_vector mv_rsk __initmv = { 838c2ecf20Sopenharmony_ci .mv_name = "RSK+", 848c2ecf20Sopenharmony_ci}; 85