1.インタフェースの注目unreg_slave
1.1このインタフェースは、それがどこにあるのと呼ばれていますか?
ドライバ/ I2C / I2C-コアslave.c中で
int型i2c_slave_unregister(構造体i2c_client *クライアント)
{
int型のRET;
もし(!クライアント- >アダプタ- >アルゴ> unreg_slave){ dev_err( &クライアント- > DEV、" %sの:アダプター\ nでサポートされていない" 、__func__); 戻る - EOPNOTSUPPを。 } i2c_lock_bus(クライアント - > アダプタ、I2C_LOCK_ROOT_ADAPTER)。 RET =クライアント- >アダプタ- >アルゴ> unreg_slave(クライアント)。 i2c_unlock_bus(クライアント - > アダプタ、I2C_LOCK_ROOT_ADAPTER)。 もし(RET == 0 ) クライアント - > slave_cb = NULL; 他 dev_err(&クライアント- > DEV、" %sの:アダプター返されるエラーは%d \ nを" 、__func__、RET)。 リターン RET;
}
1.2 i2c_slave_unregisterので、それが呼び出されている場合?
これは、中のドライバ/ I2C / I2Cスレーブ・eeprom.cに呼ばれています
静的 INT i2c_slave_eeprom_remove(構造体 i2c_client * クライアント) { 構造体 EEPROM_DATA * EEPROM = i2c_get_clientdata(クライアント)。 i2c_slave_unregister(クライアント)。 sysfs_remove_bin_file( &クライアント- > dev.kobj、&eeprom-> ビン); リターン 0 ; }