/*
 * ./kernel_modules/pse/pse-sysfs.h
 *
 * sysfs interface for the pse-class driver
 *
 * Author: Cradlepoint Technology, Inc.  <source@cradlepoint.com>
 *         Kyle Swenson <kswenson@cradlepoint.com>
 *
 * Copyright 2019 Cradlepoint Technology, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */
#ifndef __PSE_SYSFS_H__
#define __PSE_SYSFS_H__
extern const struct attribute_group *pse_port_dev_attr_groups[];
extern uint16_t pse_port_current_table[];
extern uint32_t pse_port_power_table[];

void pse_class_sysfs_close(struct class *class);
int pse_class_sysfs_init(struct class *class);
void pse_port_sysfs_close(struct pse_port_device *port);
int pse_port_sysfs_init(struct pse_port_device *port);


#endif
