|
|
@@ -44,19 +44,43 @@ struct ssegment_dev
|
|
|
|
|
|
static struct ssegment_dev *dev = NULL;
|
|
|
|
|
|
+
|
|
|
+unsigned int readl_cust(unsigned int addr)
|
|
|
+{
|
|
|
+ void __iomem *reg_base;
|
|
|
+ reg_base = ioremap(addr, 0x1000);
|
|
|
+ return readl(reg_base);
|
|
|
+}
|
|
|
+
|
|
|
+int writel_cust(unsigned int addr, unsigned int val)
|
|
|
+{
|
|
|
+ void __iomem *reg_base;
|
|
|
+ reg_base = ioremap(addr, 0x1000);
|
|
|
+ writel(val, reg_base);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static void delay_work_func(struct work_struct *work)
|
|
|
{
|
|
|
+ int ret = 0;
|
|
|
+ unsigned int val = 0;
|
|
|
if(dev->size != 0)
|
|
|
{
|
|
|
// 写数据
|
|
|
outb(dev->buffer[0], PORT_80);
|
|
|
if((dev->buffer[1] & 0x02))
|
|
|
{
|
|
|
+ val = readl_cust(SSEGMENT_POINT);
|
|
|
+ val = val | 0x01;
|
|
|
+ ret = writel_cust(SSEGMENT_POINT, val);
|
|
|
// 显示小数点 待提供接口
|
|
|
// 待实现
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ val = readl_cust(SSEGMENT_POINT);
|
|
|
+ val = val & 0xFFFFFFFE;
|
|
|
+ ret = writel_cust(SSEGMENT_POINT, val);
|
|
|
// 不显示小数点
|
|
|
}
|
|
|
|