mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
ea2c09283b
Compilation with CONFIG_GENERIC_FRAMER disabled lead to the following
warnings:
framer.h:184:16: warning: no previous prototype for function 'framer_get' [-Wmissing-prototypes]
184 | struct framer *framer_get(struct device *dev, const char *con_id)
framer.h:184:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
184 | struct framer *framer_get(struct device *dev, const char *con_id)
framer.h:189:6: warning: no previous prototype for function 'framer_put' [-Wmissing-prototypes]
189 | void framer_put(struct device *dev, struct framer *framer)
framer.h:189:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
189 | void framer_put(struct device *dev, struct framer *framer)
Add missing 'static inline' qualifiers for these functions.
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202403241110.hfJqeJRu-lkp@intel.com/
Fixes: 82c944d05b
("net: wan: Add framer framework support")
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
205 lines
5.1 KiB
C
205 lines
5.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Generic framer header file
|
|
*
|
|
* Copyright 2023 CS GROUP France
|
|
*
|
|
* Author: Herve Codina <herve.codina@bootlin.com>
|
|
*/
|
|
|
|
#ifndef __DRIVERS_FRAMER_H
|
|
#define __DRIVERS_FRAMER_H
|
|
|
|
#include <linux/err.h>
|
|
#include <linux/mutex.h>
|
|
#include <linux/notifier.h>
|
|
#include <linux/of.h>
|
|
#include <linux/device.h>
|
|
#include <linux/workqueue.h>
|
|
|
|
/**
|
|
* enum framer_iface - Framer interface
|
|
* @FRAMER_IFACE_E1: E1 interface
|
|
* @FRAMER_IFACE_T1: T1 interface
|
|
*/
|
|
enum framer_iface {
|
|
FRAMER_IFACE_E1,
|
|
FRAMER_IFACE_T1,
|
|
};
|
|
|
|
/**
|
|
* enum framer_clock_type - Framer clock type
|
|
* @FRAMER_CLOCK_EXT: External clock
|
|
* @FRAMER_CLOCK_INT: Internal clock
|
|
*/
|
|
enum framer_clock_type {
|
|
FRAMER_CLOCK_EXT,
|
|
FRAMER_CLOCK_INT,
|
|
};
|
|
|
|
/**
|
|
* struct framer_config - Framer configuration
|
|
* @iface: Framer line interface
|
|
* @clock_type: Framer clock type
|
|
* @line_clock_rate: Framer line clock rate
|
|
*/
|
|
struct framer_config {
|
|
enum framer_iface iface;
|
|
enum framer_clock_type clock_type;
|
|
unsigned long line_clock_rate;
|
|
};
|
|
|
|
/**
|
|
* struct framer_status - Framer status
|
|
* @link_is_on: Framer link state. true, the link is on, false, the link is off.
|
|
*/
|
|
struct framer_status {
|
|
bool link_is_on;
|
|
};
|
|
|
|
/**
|
|
* enum framer_event - Event available for notification
|
|
* @FRAMER_EVENT_STATUS: Event notified on framer_status changes
|
|
*/
|
|
enum framer_event {
|
|
FRAMER_EVENT_STATUS,
|
|
};
|
|
|
|
/**
|
|
* struct framer - represents the framer device
|
|
* @dev: framer device
|
|
* @id: id of the framer device
|
|
* @ops: function pointers for performing framer operations
|
|
* @mutex: mutex to protect framer_ops
|
|
* @init_count: used to protect when the framer is used by multiple consumers
|
|
* @power_count: used to protect when the framer is used by multiple consumers
|
|
* @pwr: power regulator associated with the framer
|
|
* @notify_status_work: work structure used for status notifications
|
|
* @notifier_list: notifier list used for notifications
|
|
* @polling_work: delayed work structure used for the polling task
|
|
* @prev_status: previous read status used by the polling task to detect changes
|
|
*/
|
|
struct framer {
|
|
struct device dev;
|
|
int id;
|
|
const struct framer_ops *ops;
|
|
struct mutex mutex; /* Protect framer */
|
|
int init_count;
|
|
int power_count;
|
|
struct regulator *pwr;
|
|
struct work_struct notify_status_work;
|
|
struct blocking_notifier_head notifier_list;
|
|
struct delayed_work polling_work;
|
|
struct framer_status prev_status;
|
|
};
|
|
|
|
#if IS_ENABLED(CONFIG_GENERIC_FRAMER)
|
|
int framer_pm_runtime_get(struct framer *framer);
|
|
int framer_pm_runtime_get_sync(struct framer *framer);
|
|
int framer_pm_runtime_put(struct framer *framer);
|
|
int framer_pm_runtime_put_sync(struct framer *framer);
|
|
int framer_init(struct framer *framer);
|
|
int framer_exit(struct framer *framer);
|
|
int framer_power_on(struct framer *framer);
|
|
int framer_power_off(struct framer *framer);
|
|
int framer_get_status(struct framer *framer, struct framer_status *status);
|
|
int framer_get_config(struct framer *framer, struct framer_config *config);
|
|
int framer_set_config(struct framer *framer, const struct framer_config *config);
|
|
int framer_notifier_register(struct framer *framer, struct notifier_block *nb);
|
|
int framer_notifier_unregister(struct framer *framer, struct notifier_block *nb);
|
|
|
|
struct framer *framer_get(struct device *dev, const char *con_id);
|
|
void framer_put(struct device *dev, struct framer *framer);
|
|
|
|
struct framer *devm_framer_get(struct device *dev, const char *con_id);
|
|
struct framer *devm_framer_optional_get(struct device *dev, const char *con_id);
|
|
#else
|
|
static inline int framer_pm_runtime_get(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_pm_runtime_get_sync(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_pm_runtime_put(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_pm_runtime_put_sync(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_init(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_exit(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_power_on(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_power_off(struct framer *framer)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_get_status(struct framer *framer, struct framer_status *status)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_get_config(struct framer *framer, struct framer_config *config)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_set_config(struct framer *framer, const struct framer_config *config)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_notifier_register(struct framer *framer,
|
|
struct notifier_block *nb)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline int framer_notifier_unregister(struct framer *framer,
|
|
struct notifier_block *nb)
|
|
{
|
|
return -ENOSYS;
|
|
}
|
|
|
|
static inline struct framer *framer_get(struct device *dev, const char *con_id)
|
|
{
|
|
return ERR_PTR(-ENOSYS);
|
|
}
|
|
|
|
static inline void framer_put(struct device *dev, struct framer *framer)
|
|
{
|
|
}
|
|
|
|
static inline struct framer *devm_framer_get(struct device *dev, const char *con_id)
|
|
{
|
|
return ERR_PTR(-ENOSYS);
|
|
}
|
|
|
|
static inline struct framer *devm_framer_optional_get(struct device *dev, const char *con_id)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* __DRIVERS_FRAMER_H */
|