Commit f5c418bf authored by Andrey Filippov's avatar Andrey Filippov
Browse files

debugging

parent 24abbd9b
Loading
Loading
Loading
Loading
+39 −17
Original line number Original line Diff line number Diff line
@@ -35,7 +35,8 @@


#define CACHE_INIT                      1
#define CACHE_INIT                      1
#define CACHE_VOLAT                     2
#define CACHE_VOLAT                     2
#define LAST_REG                      255

#define LAST_REG                     0x33




#define AWE_SCR1                   0x07ff
#define AWE_SCR1                   0x07ff
@@ -140,9 +141,6 @@
#define AWE_PGSTAT_LDO3            0x1340
#define AWE_PGSTAT_LDO3            0x1340
#define AWE_PGSTAT_LDO4            0x1380
#define AWE_PGSTAT_LDO4            0x1380



#define LAST_REG                   255

struct ltc3589_cache_t {
struct ltc3589_cache_t {
	u8 flags;
	u8 flags;
	u8 data;
	u8 data;
@@ -638,9 +636,9 @@ static ssize_t mode_show (struct device *dev, struct device_attribute *attr, cha
	char * cp=buf;
	char * cp=buf;
	struct i2c_client *client = to_i2c_client(dev);
	struct i2c_client *client = to_i2c_client(dev);
	if (((rc=read_field(client,AWE_SCR1)))<0) return rc;
	if (((rc=read_field(client,AWE_SCR1)))<0) return rc;
	for (m=0;m<ARRAY_SIZE(modes);m++) if (strcmp(attr->attr.name,modes[m])) break;
	for (m=0;m<ARRAY_SIZE(modes);m++) if (strcmp(attr->attr.name,modes[m])==0) break;
	if (m>=ARRAY_SIZE(modes)) return -EINVAL;
	if (m>=ARRAY_SIZE(modes)) return -EINVAL;
	for (i=0;i<4;i+=2) if (((rc>>i) & 3) == m) {
	for (i=0;i<4;i++) if (((rc>>(2*i)) & 3) == m) {
		if (buf!=cp) buf+=sprintf(buf," ");
		if (buf!=cp) buf+=sprintf(buf," ");
		buf+=sprintf(buf,"%s",chn_names[i]);
		buf+=sprintf(buf,"%s",chn_names[i]);
	}
	}
@@ -654,7 +652,7 @@ static ssize_t mode_store(struct device *dev, struct device_attribute *attr, con
	int rc,mask,m,data;
	int rc,mask,m,data;
	u32 awe;
	u32 awe;
	struct i2c_client *client = to_i2c_client(dev);
	struct i2c_client *client = to_i2c_client(dev);
	for (m=0;m<ARRAY_SIZE(modes);m++) if (strcmp(attr->attr.name,modes[m])) break;
	for (m=0;m<ARRAY_SIZE(modes);m++) if (strcmp(attr->attr.name,modes[m])==0) break;
	if (m>=ARRAY_SIZE(modes)) return -EINVAL;
	if (m>=ARRAY_SIZE(modes)) return -EINVAL;
	mask=read_channel_mask(buf);
	mask=read_channel_mask(buf);
	mask=((mask & 1)? 3:0) | ((mask & 2)? 0xc:0) | ((mask & 4)? 0x30:0) | ((mask & 8)? 0x40:0);
	mask=((mask & 1)? 3:0) | ((mask & 2)? 0xc:0) | ((mask & 4)? 0x30:0) | ((mask & 8)? 0x40:0);
@@ -670,7 +668,7 @@ static ssize_t reference_select_show (struct device *dev, struct device_attribut
	char * cp=buf;
	char * cp=buf;
	struct i2c_client *client = to_i2c_client(dev);
	struct i2c_client *client = to_i2c_client(dev);
	if (((rc=read_field(client,AWE_VCCR)))<0) return rc;
	if (((rc=read_field(client,AWE_VCCR)))<0) return rc;
	for (m=0;m<ARRAY_SIZE(reference_sel);m++) if (strcmp(attr->attr.name,reference_sel[m])) break;
	for (m=0;m<ARRAY_SIZE(reference_sel);m++) if (strcmp(attr->attr.name,reference_sel[m])==0) break;
	if (m>=ARRAY_SIZE(reference_sel)) return -EINVAL;
	if (m>=ARRAY_SIZE(reference_sel)) return -EINVAL;
	for (i=0;i<4;i++) if (((rc>>(2*i+1)) & 1)==m){
	for (i=0;i<4;i++) if (((rc>>(2*i+1)) & 1)==m){
		chn=i;
		chn=i;
@@ -692,7 +690,7 @@ static ssize_t reference_select_store(struct device *dev, struct device_attribut
	int rc,mask,m,data;
	int rc,mask,m,data;
	u32 awe;
	u32 awe;
	struct i2c_client *client = to_i2c_client(dev);
	struct i2c_client *client = to_i2c_client(dev);
	for (m=0;m<ARRAY_SIZE(reference_sel);m++) if (strcmp(attr->attr.name,reference_sel[m])) break;
	for (m=0;m<ARRAY_SIZE(reference_sel);m++) if (strcmp(attr->attr.name,reference_sel[m])==0) break;
	if (m>=ARRAY_SIZE(reference_sel)) return -EINVAL;
	if (m>=ARRAY_SIZE(reference_sel)) return -EINVAL;
	mask=read_channel_mask(buf);
	mask=read_channel_mask(buf);
	mask=((mask & 1)? 2:0) | ((mask & 2)? 0x8:0) | ((mask & 4)? 0x20:0) | ((mask & 0x20)? 0x80:0);
	mask=((mask & 1)? 2:0) | ((mask & 2)? 0x8:0) | ((mask & 4)? 0x20:0) | ((mask & 0x20)? 0x80:0);
@@ -741,11 +739,23 @@ static ssize_t field_store(struct device *dev, struct device_attribute *attr, co
{
{
	int rc,i;
	int rc,i;
	int data;
	int data;
	u32 awe;
	struct i2c_client *client = to_i2c_client(dev);
	struct i2c_client *client = to_i2c_client(dev);
	for (i=0;i<ARRAY_SIZE(named_fields);i++) if (strcmp(attr->attr.name,named_fields[i].name)) break;
	for (i=0;i<ARRAY_SIZE(named_fields);i++) if (strcmp(attr->attr.name,named_fields[i].name==0)) {
	if (i>=ARRAY_SIZE(named_fields)) return -EINVAL;
		awe=named_fields[i].awe;
		dev_dbg(dev,"i=%d, field name=%s awe=0x%04x\n", i, named_fields[i].name, (int) awe);
		break;
	}
	if (i>=ARRAY_SIZE(named_fields)) {
		for (i=0;i<ARRAY_SIZE(status_fields);i++) if (strcmp(attr->attr.name,status_fields[i].name)==0) {
			awe=status_fields[i].awe;
			dev_dbg(dev,"i=%d, status field name=%s awe=0x%04x\n", i, status_fields[i].name, (int) awe);
			break;
		}
		if (i>=ARRAY_SIZE(status_fields)) return -EINVAL;
	}
    sscanf(buf, "%du", &data);
    sscanf(buf, "%du", &data);
	if (((rc=write_field (client, data, named_fields[i].awe)))<0) return rc;
	if (((rc=write_field (client, data, awe)))<0) return rc;
    return count;
    return count;
}
}


@@ -753,10 +763,22 @@ static ssize_t get_field_value (struct device *dev, const char* name, char *buf,
{
{
	int rc,i;
	int rc,i;
	char * cp=buf;
	char * cp=buf;
	u32 awe;
	struct i2c_client *client = to_i2c_client(dev);
	struct i2c_client *client = to_i2c_client(dev);
	for (i=0;i<ARRAY_SIZE(named_fields);i++) if (strcmp(name,named_fields[i].name)) break;
	for (i=0;i<ARRAY_SIZE(named_fields);i++) if (strcmp(name,named_fields[i].name)==0){
	if (i>=ARRAY_SIZE(named_fields)) return -EINVAL;
		awe=named_fields[i].awe;
	if (((rc=read_field(client,named_fields[i].awe)))<0) return rc;
		dev_dbg(dev,"i=%d, field name=%s awe=0x%04x\n", i, named_fields[i].name, (int) awe);
		break;
	}
	if (i>=ARRAY_SIZE(named_fields)) {
		for (i=0;i<ARRAY_SIZE(status_fields);i++) if (strcmp(name,status_fields[i].name)==0){
			awe=status_fields[i].awe;
			dev_dbg(dev,"i=%d, status field name=%s awe=0x%04x\n", i, status_fields[i].name, (int) awe);
			break;
		}
		if (i>=ARRAY_SIZE(status_fields)) return -EINVAL;
	}
	if (((rc=read_field(client,awe)))<0) return rc;
	buf+=sprintf(buf,"%d",rc);
	buf+=sprintf(buf,"%d",rc);
	if (newline) buf+=sprintf(buf,"\n");
	if (newline) buf+=sprintf(buf,"\n");
	return buf-cp;
	return buf-cp;
@@ -971,9 +993,9 @@ static void ltc3589_init_of(struct i2c_client *client)
    int init_type=0; /* 0 - none, 1 - always, 2 - if not running (TODO) */
    int init_type=0; /* 0 - none, 1 - always, 2 - if not running (TODO) */
	struct device_node *node = client->dev.of_node;
	struct device_node *node = client->dev.of_node;
	int len,i,n;
	int len,i,n;
	u16 page_reg;

	char buf[40];
	char buf[40];
	u64 freq[3];

	
	
	struct ltc3589_setup_data  {
	struct ltc3589_setup_data  {
		u8		page;
		u8		page;