18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Generic serial GNSS receiver driver 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2018 Johan Hovold <johan@kernel.org> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef _LINUX_GNSS_SERIAL_H 98c2ecf20Sopenharmony_ci#define _LINUX_GNSS_SERIAL_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <asm/termbits.h> 128c2ecf20Sopenharmony_ci#include <linux/pm.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistruct gnss_serial { 158c2ecf20Sopenharmony_ci struct serdev_device *serdev; 168c2ecf20Sopenharmony_ci struct gnss_device *gdev; 178c2ecf20Sopenharmony_ci speed_t speed; 188c2ecf20Sopenharmony_ci const struct gnss_serial_ops *ops; 198c2ecf20Sopenharmony_ci unsigned long drvdata[]; 208c2ecf20Sopenharmony_ci}; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cienum gnss_serial_pm_state { 238c2ecf20Sopenharmony_ci GNSS_SERIAL_OFF, 248c2ecf20Sopenharmony_ci GNSS_SERIAL_ACTIVE, 258c2ecf20Sopenharmony_ci GNSS_SERIAL_STANDBY, 268c2ecf20Sopenharmony_ci}; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_cistruct gnss_serial_ops { 298c2ecf20Sopenharmony_ci int (*set_power)(struct gnss_serial *gserial, 308c2ecf20Sopenharmony_ci enum gnss_serial_pm_state state); 318c2ecf20Sopenharmony_ci}; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ciextern const struct dev_pm_ops gnss_serial_pm_ops; 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_cistruct gnss_serial *gnss_serial_allocate(struct serdev_device *gserial, 368c2ecf20Sopenharmony_ci size_t data_size); 378c2ecf20Sopenharmony_civoid gnss_serial_free(struct gnss_serial *gserial); 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciint gnss_serial_register(struct gnss_serial *gserial); 408c2ecf20Sopenharmony_civoid gnss_serial_deregister(struct gnss_serial *gserial); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistatic inline void *gnss_serial_get_drvdata(struct gnss_serial *gserial) 438c2ecf20Sopenharmony_ci{ 448c2ecf20Sopenharmony_ci return gserial->drvdata; 458c2ecf20Sopenharmony_ci} 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci#endif /* _LINUX_GNSS_SERIAL_H */ 48