1/* 2 * Copyright (C) 2012 Renesas Solutions Corp. 3 * 4 * Kuninori Morimoto <morimoto.kuninori@renesas.com> 5 * 6 * This file is subject to the terms and conditions of the GNU General Public 7 * License. See the file "COPYING" in the main directory of this archive 8 * for more details. 9 */ 10#ifndef PM_RMOBILE_H 11#define PM_RMOBILE_H 12 13#include <linux/pm_domain.h> 14 15#define DEFAULT_DEV_LATENCY_NS 250000 16 17struct platform_device; 18 19struct rmobile_pm_domain { 20 struct generic_pm_domain genpd; 21 struct dev_power_governor *gov; 22 int (*suspend)(void); 23 void (*resume)(void); 24 void __iomem *base; 25 unsigned int bit_shift; 26 bool no_debug; 27}; 28 29static inline 30struct rmobile_pm_domain *to_rmobile_pd(struct generic_pm_domain *d) 31{ 32 return container_of(d, struct rmobile_pm_domain, genpd); 33} 34 35struct pm_domain_device { 36 const char *domain_name; 37 struct platform_device *pdev; 38}; 39 40#if defined(CONFIG_PM_RMOBILE) && defined(CONFIG_ARCH_SHMOBILE_LEGACY) 41extern void rmobile_init_domains(struct rmobile_pm_domain domains[], int num); 42extern void rmobile_add_device_to_domain_td(const char *domain_name, 43 struct platform_device *pdev, 44 struct gpd_timing_data *td); 45 46static inline void rmobile_add_device_to_domain(const char *domain_name, 47 struct platform_device *pdev) 48{ 49 rmobile_add_device_to_domain_td(domain_name, pdev, NULL); 50} 51 52extern void rmobile_add_devices_to_domains(struct pm_domain_device data[], 53 int size); 54#else 55 56#define rmobile_init_domains(domains, num) do { } while (0) 57#define rmobile_add_device_to_domain_td(name, pdev, td) do { } while (0) 58#define rmobile_add_device_to_domain(name, pdev) do { } while (0) 59 60static inline void rmobile_add_devices_to_domains(struct pm_domain_device d[], 61 int size) {} 62#endif /* CONFIG_PM_RMOBILE */ 63 64#endif /* PM_RMOBILE_H */ 65