# HG changeset patch # User Florian Pose # Date 1172761388 0 # Node ID a6ce861a167e7e5e5d6fa5b8e4664ffbeeaad050 # Parent b3b1f4ce590c69651054286a308c62f385799e07 ec_slave_write_eeprom now returns certain error codes. diff -r b3b1f4ce590c -r a6ce861a167e master/slave.c --- a/master/slave.c Thu Mar 01 14:52:17 2007 +0000 +++ b/master/slave.c Thu Mar 01 15:03:08 2007 +0000 @@ -791,20 +791,20 @@ if (slave->master->mode != EC_MASTER_MODE_IDLE) { EC_ERR("Writing EEPROMs only allowed in idle mode!\n"); - return -1; + return -EACCES; } if (slave->new_eeprom_data) { EC_ERR("Slave %i already has a pending EEPROM write operation!\n", slave->ring_position); - return -1; + return -EBUSY; } // coarse check of the data if (size % 2) { EC_ERR("EEPROM size is odd! Dropping.\n"); - return -1; + return -EINVAL; } data_words = (const uint16_t *) data; @@ -812,7 +812,7 @@ if (word_size < 0x0041) { EC_ERR("EEPROM data too short! Dropping.\n"); - return -1; + return -EINVAL; } next_header = data_words + 0x0040; @@ -822,7 +822,7 @@ cat_size = EC_READ_U16(next_header + 1); if ((next_header + cat_size + 2) - data_words >= word_size) { EC_ERR("EEPROM data seems to be corrupted! Dropping.\n"); - return -1; + return -EINVAL; } next_header += cat_size + 2; cat_type = EC_READ_U16(next_header); @@ -832,7 +832,7 @@ if (!(new_data = (uint16_t *) kmalloc(word_size * 2, GFP_KERNEL))) { EC_ERR("Unable to allocate memory for new EEPROM data!\n"); - return -1; + return -ENOMEM; } memcpy(new_data, data, size); @@ -841,7 +841,7 @@ EC_INFO("EEPROM writing scheduled for slave %i, %i words.\n", slave->ring_position, word_size); - return 0; + return size; } /*****************************************************************************/ @@ -928,8 +928,7 @@ return size; } else if (attr == &attr_eeprom) { - if (!ec_slave_write_eeprom(slave, buffer, size)) - return size; + return ec_slave_write_eeprom(slave, buffer, size); } return -EINVAL;