예전에 잘 사용하든 DS1307 외부 RTC Chip이 요즘 나오는 Chip에서 에러가 발생하네요.

원인을 분석한 결과 아래의 내용 때문입니다. 

static int __devinit ds1307_probe(struct i2c_client *client, const struct i2c_device_id *id)

 710        tmp = ds1307->regs[DS1307_REG_SECS];
 711        tmp = bcd2bin(tmp & 0x7f);
 712        if (tmp > 60)
 713                goto exit_bad;
 714        tmp = bcd2bin(ds1307->regs[DS1307_REG_MIN] & 0x7f);
 715        if (tmp > 60)
 716                goto exit_bad;
 717
 718        tmp = bcd2bin(ds1307->regs[DS1307_REG_MDAY] & 0x3f);
 719        if (tmp == 0 || tmp > 31)
 720                goto exit_bad;
 721
 722        tmp = bcd2bin(ds1307->regs[DS1307_REG_MONTH] & 0x1f);
 723        if (tmp == 0 || tmp > 12)
 724                goto exit_bad;
 
 
 이 부분 ( 710 ~ 724 라인 ) 이 2.6.29 버젼 부터는 삭제되었습니다.

 즉, 요즘 나오는 RTC Chip 의 초기 상태값이 위의 에러문 중 하나에 걸려서 칩을 인식하지 못하는 문제가 발생하네요.
 
 혹시라고 2.6.29 버젼 이전 버젼에서 DS1307 외부 RTC Chip을 사용한다면 
 
위의 부분의 주석 처리해야 정상적으로 Chip을 인식할 수 있습니다.