serial.h (1073B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Generic serial GNSS receiver driver 4 * 5 * Copyright (C) 2018 Johan Hovold <johan@kernel.org> 6 */ 7 8#ifndef _LINUX_GNSS_SERIAL_H 9#define _LINUX_GNSS_SERIAL_H 10 11#include <asm/termbits.h> 12#include <linux/pm.h> 13 14struct gnss_serial { 15 struct serdev_device *serdev; 16 struct gnss_device *gdev; 17 speed_t speed; 18 const struct gnss_serial_ops *ops; 19 unsigned long drvdata[]; 20}; 21 22enum gnss_serial_pm_state { 23 GNSS_SERIAL_OFF, 24 GNSS_SERIAL_ACTIVE, 25 GNSS_SERIAL_STANDBY, 26}; 27 28struct gnss_serial_ops { 29 int (*set_power)(struct gnss_serial *gserial, 30 enum gnss_serial_pm_state state); 31}; 32 33extern const struct dev_pm_ops gnss_serial_pm_ops; 34 35struct gnss_serial *gnss_serial_allocate(struct serdev_device *gserial, 36 size_t data_size); 37void gnss_serial_free(struct gnss_serial *gserial); 38 39int gnss_serial_register(struct gnss_serial *gserial); 40void gnss_serial_deregister(struct gnss_serial *gserial); 41 42static inline void *gnss_serial_get_drvdata(struct gnss_serial *gserial) 43{ 44 return gserial->drvdata; 45} 46 47#endif /* _LINUX_GNSS_SERIAL_H */