#define pr_fmt(fmt) …
#include <linux/platform_device.h>
#include <linux/jiffies.h>
#include <linux/firmware.h>
#include <linux/delay.h>
#include <linux/wait.h>
#include <linux/gpio.h>
#include <linux/debugfs.h>
#include <linux/seq_file.h>
#include <linux/sched.h>
#include <linux/sysfs.h>
#include <linux/tty.h>
#include <linux/skbuff.h>
#include <linux/ti_wilink_st.h>
#include <linux/module.h>
#define MAX_ST_DEVICES …
static struct platform_device *st_kim_devices[MAX_ST_DEVICES];
static struct platform_device *st_get_plat_device(int id)
{ … }
static void validate_firmware_response(struct kim_data_s *kim_gdata)
{ … }
static inline int kim_check_data_len(struct kim_data_s *kim_gdata, int len)
{ … }
static void kim_int_recv(struct kim_data_s *kim_gdata, const u8 *ptr,
size_t count)
{ … }
static long read_local_version(struct kim_data_s *kim_gdata, char *bts_scr_name)
{ … }
static void skip_change_remote_baud(unsigned char **ptr, long *len)
{ … }
static long download_firmware(struct kim_data_s *kim_gdata)
{ … }
void st_kim_recv(void *disc_data, const u8 *data, size_t count)
{ … }
void st_kim_complete(void *kim_data)
{ … }
long st_kim_start(void *kim_data)
{ … }
long st_kim_stop(void *kim_data)
{ … }
static int version_show(struct seq_file *s, void *unused)
{ … }
static int list_show(struct seq_file *s, void *unused)
{ … }
static ssize_t show_install(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
#ifdef DEBUG
static ssize_t store_dev_name(struct device *dev,
struct device_attribute *attr, const char *buf, size_t count)
{
struct kim_data_s *kim_data = dev_get_drvdata(dev);
pr_debug("storing dev name >%s<", buf);
strscpy(kim_data->dev_name, buf, sizeof(kim_data->dev_name));
pr_debug("stored dev name >%s<", kim_data->dev_name);
return count;
}
static ssize_t store_baud_rate(struct device *dev,
struct device_attribute *attr, const char *buf, size_t count)
{
struct kim_data_s *kim_data = dev_get_drvdata(dev);
pr_debug("storing baud rate >%s<", buf);
sscanf(buf, "%ld", &kim_data->baud_rate);
pr_debug("stored baud rate >%ld<", kim_data->baud_rate);
return count;
}
#endif
static ssize_t show_dev_name(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t show_baud_rate(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t show_flow_cntrl(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static struct kobj_attribute ldisc_install = …;
static struct kobj_attribute uart_dev_name = …__ATTR(dev_name, 0644, (void *)show_dev_name, (void *)store_dev_name);
#else
__ATTR(dev_name, 0444, (void *)show_dev_name, NULL);
#endif
static struct kobj_attribute uart_baud_rate = …__ATTR(baud_rate, 0644, (void *)show_baud_rate, (void *)store_baud_rate);
#else
__ATTR(baud_rate, 0444, (void *)show_baud_rate, NULL);
#endif
static struct kobj_attribute uart_flow_cntrl = …;
static struct attribute *uim_attrs[] = …;
static const struct attribute_group uim_attr_grp = …;
void st_kim_ref(struct st_data_s **core_data, int id)
{ … }
DEFINE_SHOW_ATTRIBUTE(…);
DEFINE_SHOW_ATTRIBUTE(…);
static struct dentry *kim_debugfs_dir;
static int kim_probe(struct platform_device *pdev)
{ … }
static void kim_remove(struct platform_device *pdev)
{ … }
static int kim_suspend(struct platform_device *pdev, pm_message_t state)
{ … }
static int kim_resume(struct platform_device *pdev)
{ … }
static struct platform_driver kim_platform_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;