122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport#include <linux/debugfs.h> 25a0e3ad6af8660be21ca98a971cd00f331318c05Tejun Heo#include <linux/slab.h> 322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport#define BIG_BUFFER_SIZE (1024) 522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic char big_buffer[BIG_BUFFER_SIZE]; 722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstruct mbxfb_debugfs_data { 922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct dentry *dir; 1022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct dentry *sysconf; 1122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct dentry *clock; 1222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct dentry *display; 1322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct dentry *gsctl; 14128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat struct dentry *sdram; 15128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat struct dentry *misc; 1622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport}; 1722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 1822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic int open_file_generic(struct inode *inode, struct file *file) 1922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 2022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport file->private_data = inode->u.generic_ip; 2122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport return 0; 2222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 2322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 2422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic ssize_t write_file_dummy(struct file *file, const char __user *buf, 2522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport size_t count, loff_t *ppos) 2622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 2722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport return count; 2822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 2922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 3022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic ssize_t sysconf_read_file(struct file *file, char __user *userbuf, 3122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport size_t count, loff_t *ppos) 3222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 3322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport char * s = big_buffer; 3422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 35128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "SYSCFG = %08x\n", readl(SYSCFG)); 36128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "PFBASE = %08x\n", readl(PFBASE)); 37128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "PFCEIL = %08x\n", readl(PFCEIL)); 38128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "POLLFLAG = %08x\n", readl(POLLFLAG)); 39128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "SYSRST = %08x\n", readl(SYSRST)); 4022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 4122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport return simple_read_from_buffer(userbuf, count, ppos, 4222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport big_buffer, s-big_buffer); 4322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 4422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 4522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 4622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic ssize_t gsctl_read_file(struct file *file, char __user *userbuf, 4722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport size_t count, loff_t *ppos) 4822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 4922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport char * s = big_buffer; 5022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 51128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "GSCTRL = %08x\n", readl(GSCTRL)); 52128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VSCTRL = %08x\n", readl(VSCTRL)); 53128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "GBBASE = %08x\n", readl(GBBASE)); 54128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VBBASE = %08x\n", readl(VBBASE)); 55128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "GDRCTRL = %08x\n", readl(GDRCTRL)); 56128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VCMSK = %08x\n", readl(VCMSK)); 57128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "GSCADR = %08x\n", readl(GSCADR)); 58128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VSCADR = %08x\n", readl(VSCADR)); 59128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VUBASE = %08x\n", readl(VUBASE)); 60128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VVBASE = %08x\n", readl(VVBASE)); 61128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "GSADR = %08x\n", readl(GSADR)); 62128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VSADR = %08x\n", readl(VSADR)); 63128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "HCCTRL = %08x\n", readl(HCCTRL)); 64128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "HCSIZE = %08x\n", readl(HCSIZE)); 65128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "HCPOS = %08x\n", readl(HCPOS)); 66128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "HCBADR = %08x\n", readl(HCBADR)); 67128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "HCCKMSK = %08x\n", readl(HCCKMSK)); 68128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "GPLUT = %08x\n", readl(GPLUT)); 6922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 7022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport return simple_read_from_buffer(userbuf, count, ppos, 7122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport big_buffer, s-big_buffer); 7222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 7322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 7422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic ssize_t display_read_file(struct file *file, char __user *userbuf, 7522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport size_t count, loff_t *ppos) 7622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 7722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport char * s = big_buffer; 7822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 79128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DSCTRL = %08x\n", readl(DSCTRL)); 80128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DHT01 = %08x\n", readl(DHT01)); 81128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DHT02 = %08x\n", readl(DHT02)); 82128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DHT03 = %08x\n", readl(DHT03)); 83128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DVT01 = %08x\n", readl(DVT01)); 84128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DVT02 = %08x\n", readl(DVT02)); 85128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DVT03 = %08x\n", readl(DVT03)); 86128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DBCOL = %08x\n", readl(DBCOL)); 87128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "BGCOLOR = %08x\n", readl(BGCOLOR)); 88128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DINTRS = %08x\n", readl(DINTRS)); 89128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DINTRE = %08x\n", readl(DINTRE)); 90128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DINTRCNT = %08x\n", readl(DINTRCNT)); 91128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DSIG = %08x\n", readl(DSIG)); 92128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DMCTRL = %08x\n", readl(DMCTRL)); 93128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "CLIPCTRL = %08x\n", readl(CLIPCTRL)); 94128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "SPOCTRL = %08x\n", readl(SPOCTRL)); 95128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "SVCTRL = %08x\n", readl(SVCTRL)); 96128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DLSTS = %08x\n", readl(DLSTS)); 97128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DLLCTRL = %08x\n", readl(DLLCTRL)); 98128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DVLNUM = %08x\n", readl(DVLNUM)); 99128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DUCTRL = %08x\n", readl(DUCTRL)); 100128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DVECTRL = %08x\n", readl(DVECTRL)); 101128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DHDET = %08x\n", readl(DHDET)); 102128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DVDET = %08x\n", readl(DVDET)); 103128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DODMSK = %08x\n", readl(DODMSK)); 104128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "CSC01 = %08x\n", readl(CSC01)); 105128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "CSC02 = %08x\n", readl(CSC02)); 106128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "CSC03 = %08x\n", readl(CSC03)); 107128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "CSC04 = %08x\n", readl(CSC04)); 108128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "CSC05 = %08x\n", readl(CSC05)); 10922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 11022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport return simple_read_from_buffer(userbuf, count, ppos, 11122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport big_buffer, s-big_buffer); 11222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 11322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 11422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic ssize_t clock_read_file(struct file *file, char __user *userbuf, 11522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport size_t count, loff_t *ppos) 11622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 11722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport char * s = big_buffer; 11822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 119128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "SYSCLKSRC = %08x\n", readl(SYSCLKSRC)); 120128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "PIXCLKSRC = %08x\n", readl(PIXCLKSRC)); 121128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "CLKSLEEP = %08x\n", readl(CLKSLEEP)); 122128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "COREPLL = %08x\n", readl(COREPLL)); 123128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "DISPPLL = %08x\n", readl(DISPPLL)); 124128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "PLLSTAT = %08x\n", readl(PLLSTAT)); 125128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "VOVRCLK = %08x\n", readl(VOVRCLK)); 126128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "PIXCLK = %08x\n", readl(PIXCLK)); 127128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "MEMCLK = %08x\n", readl(MEMCLK)); 128128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "M24CLK = %08x\n", readl(M24CLK)); 129128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "MBXCLK = %08x\n", readl(MBXCLK)); 130128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "SDCLK = %08x\n", readl(SDCLK)); 131128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "PIXCLKDIV = %08x\n", readl(PIXCLKDIV)); 13222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 13322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport return simple_read_from_buffer(userbuf, count, ppos, 13422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport big_buffer, s-big_buffer); 13522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 13622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 137128806c3b3e263c579af12c061a9b04db3950016Raphael Assenatstatic ssize_t sdram_read_file(struct file *file, char __user *userbuf, 138128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat size_t count, loff_t *ppos) 139128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat{ 140128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat char * s = big_buffer; 141128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 142128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMRST = %08x\n", readl(LMRST)); 143128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMCFG = %08x\n", readl(LMCFG)); 144128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMPWR = %08x\n", readl(LMPWR)); 145128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMPWRSTAT = %08x\n", readl(LMPWRSTAT)); 146128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMCEMR = %08x\n", readl(LMCEMR)); 147128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMTYPE = %08x\n", readl(LMTYPE)); 148128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMTIM = %08x\n", readl(LMTIM)); 149128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMREFRESH = %08x\n", readl(LMREFRESH)); 150128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMPROTMIN = %08x\n", readl(LMPROTMIN)); 151128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMPROTMAX = %08x\n", readl(LMPROTMAX)); 152128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMPROTCFG = %08x\n", readl(LMPROTCFG)); 153128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LMPROTERR = %08x\n", readl(LMPROTERR)); 154128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 155128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat return simple_read_from_buffer(userbuf, count, ppos, 156128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat big_buffer, s-big_buffer); 157128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat} 158128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 159128806c3b3e263c579af12c061a9b04db3950016Raphael Assenatstatic ssize_t misc_read_file(struct file *file, char __user *userbuf, 160128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat size_t count, loff_t *ppos) 161128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat{ 162128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat char * s = big_buffer; 163128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 164128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "LCD_CONFIG = %08x\n", readl(LCD_CONFIG)); 165128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "ODFBPWR = %08x\n", readl(ODFBPWR)); 166128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "ODFBSTAT = %08x\n", readl(ODFBSTAT)); 167128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat s += sprintf(s, "ID = %08x\n", readl(ID)); 168128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 169128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat return simple_read_from_buffer(userbuf, count, ppos, 170128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat big_buffer, s-big_buffer); 171128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat} 172128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 173128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 17400977a59b951207d38380c75f03a36829950265cArjan van de Venstatic const struct file_operations sysconf_fops = { 17522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .read = sysconf_read_file, 17622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .write = write_file_dummy, 17722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .open = open_file_generic, 1786038f373a3dc1f1c26496e60b6c40b164716f07eArnd Bergmann .llseek = default_llseek, 17922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport}; 18022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 18100977a59b951207d38380c75f03a36829950265cArjan van de Venstatic const struct file_operations clock_fops = { 18222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .read = clock_read_file, 18322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .write = write_file_dummy, 18422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .open = open_file_generic, 1856038f373a3dc1f1c26496e60b6c40b164716f07eArnd Bergmann .llseek = default_llseek, 18622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport}; 18722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 18800977a59b951207d38380c75f03a36829950265cArjan van de Venstatic const struct file_operations display_fops = { 18922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .read = display_read_file, 19022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .write = write_file_dummy, 19122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .open = open_file_generic, 1926038f373a3dc1f1c26496e60b6c40b164716f07eArnd Bergmann .llseek = default_llseek, 19322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport}; 19422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 19500977a59b951207d38380c75f03a36829950265cArjan van de Venstatic const struct file_operations gsctl_fops = { 19622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .read = gsctl_read_file, 19722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .write = write_file_dummy, 19822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport .open = open_file_generic, 1996038f373a3dc1f1c26496e60b6c40b164716f07eArnd Bergmann .llseek = default_llseek, 20022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport}; 20122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 20200977a59b951207d38380c75f03a36829950265cArjan van de Venstatic const struct file_operations sdram_fops = { 203128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat .read = sdram_read_file, 204128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat .write = write_file_dummy, 205128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat .open = open_file_generic, 2066038f373a3dc1f1c26496e60b6c40b164716f07eArnd Bergmann .llseek = default_llseek, 207128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat}; 208128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat 20900977a59b951207d38380c75f03a36829950265cArjan van de Venstatic const struct file_operations misc_fops = { 210128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat .read = misc_read_file, 211128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat .write = write_file_dummy, 212128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat .open = open_file_generic, 2136038f373a3dc1f1c26496e60b6c40b164716f07eArnd Bergmann .llseek = default_llseek, 214128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat}; 21522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 21622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic void __devinit mbxfb_debugfs_init(struct fb_info *fbi) 21722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 21822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct mbxfb_info *mfbi = fbi->par; 21922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct mbxfb_debugfs_data *dbg; 22022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 22122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport dbg = kzalloc(sizeof(struct mbxfb_debugfs_data), GFP_KERNEL); 22222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport mfbi->debugfs_data = dbg; 22322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 22422caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport dbg->dir = debugfs_create_dir("mbxfb", NULL); 22522caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport dbg->sysconf = debugfs_create_file("sysconf", 0444, dbg->dir, 22622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport fbi, &sysconf_fops); 22722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport dbg->clock = debugfs_create_file("clock", 0444, dbg->dir, 22822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport fbi, &clock_fops); 22922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport dbg->display = debugfs_create_file("display", 0444, dbg->dir, 23022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport fbi, &display_fops); 23122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport dbg->gsctl = debugfs_create_file("gsctl", 0444, dbg->dir, 23222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport fbi, &gsctl_fops); 233128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat dbg->sdram = debugfs_create_file("sdram", 0444, dbg->dir, 234128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat fbi, &sdram_fops); 235128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat dbg->misc = debugfs_create_file("misc", 0444, dbg->dir, 236128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat fbi, &misc_fops); 23722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 23822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 23922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoportstatic void __devexit mbxfb_debugfs_remove(struct fb_info *fbi) 24022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport{ 24122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct mbxfb_info *mfbi = fbi->par; 24222caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport struct mbxfb_debugfs_data *dbg = mfbi->debugfs_data; 24322caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport 244128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat debugfs_remove(dbg->misc); 245128806c3b3e263c579af12c061a9b04db3950016Raphael Assenat debugfs_remove(dbg->sdram); 24622caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport debugfs_remove(dbg->gsctl); 24722caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport debugfs_remove(dbg->display); 24822caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport debugfs_remove(dbg->clock); 24922caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport debugfs_remove(dbg->sysconf); 25022caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport debugfs_remove(dbg->dir); 25122caf04297896e515c6d5cdfb8e08a79a523946cMike Rapoport} 252