Subject: Re: 48 kHz does not work on snapper(4) on NetBSD 3.1
To: None <port-macppc@netbsd.org>
From: Marco Trillo <marcotrillo@gmail.com>
List: port-macppc
Date: 12/07/2006 21:44:46
------=_Part_65686_24672065.1165524286845
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

On 12/7/06, Marco Trillo <marcotrillo@gmail.com> wrote:
> Well, I finally got it working!
> The Mac OS X I2S controller uses by default a MCLK-to-samplerate ratio
> of 64 which gets a more accurate result.

Oops! Wrong diagnostic. That was not the reason why the 48000 rate didn't work.
In fact, the previous patch didn't work (how could I think that it
worked? perhaps I need more sleep? :-S )

The real reason why the 48000 rate (and in fact any other rate that
wasn't 44100) didn't work was that after changing it, we should first
stop the current running clock and restart it to get the new clock.
Otherwise all the snapper_set_rate() stuff wouldn't do anything. I
guess 44100 just happens to be the default rate for the device.
In fact, you could even try 8000 and it still would use 44100.

I got the new and real fix from the most recent versions of the
snapper.c and i2s.c drivers from Tsubai Masanari, which are both
available at [1].

The attached patch agains 3.1 now really gets 48 kHz and 8 kHz working
[yes, I have now double-checked that it works :-) ].

Like I said before, I will do an updated diff against -current and
send it with send-pr .

[1] http://cvsweb.ki.nu/mef/macppc/sys/arch/macppc/dev/

-- 
     Thanks
     -Marco

------=_Part_65686_24672065.1165524286845
Content-Type: text/plain; name=snapper.c.diff.txt; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="snapper.c.diff.txt"

LS0tIHNuYXBwZXIuYy5vcmlnCTIwMDYtMTItMDcgMjE6Mjk6MDIuMDAwMDAwMDAwICswMTAwCisr
KyBzbmFwcGVyLmMJMjAwNi0xMi0wNyAyMToyNDozNC4wMDAwMDAwMDAgKzAxMDAKQEAgLTEsOCAr
MSw5IEBACiAvKgkkTmV0QlNEOiBzbmFwcGVyLmMsdiAxLjUgMjAwNS8wMS8yNSAxOTowNToyMiBi
cmlnZ3MgRXhwICQJKi8KIC8qCUlkOiBzbmFwcGVyLmMsdiAxLjExIDIwMDIvMTAvMzEgMTc6NDI6
MTMgdHN1YmFpIEV4cAkqLworLyogICAgICBJZDogaTJzLmMsdiAxLjEyIDIwMDUvMDEvMTUgMTQ6
MzI6MzUgdHN1YmFpIEV4cCAgICAgICAgICovCiAKIC8qLQotICogQ29weXJpZ2h0IChjKSAyMDAy
IFRzdWJhaSBNYXNhbmFyaS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDIsMjAwMyBUc3ViYWkgTWFzYW5hcmkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xODMsNiArMTg0LDE3IEBACiAjZGVmaW5lIEky
U19GUkFNRU1BVENICTB4NTAKICNkZWZpbmUgSTJTX1dPUkRTSVpFCTB4NjAKIAorLyogSTJTX0lO
VCByZWdpc3RlciBkZWZpbml0aW9ucyAqLworI2RlZmluZSBJMlNfSU5UX0NMS1NUT1BQRU5EIDB4
MDEwMDAwMDAgIC8qIGNsb2NrLXN0b3AgaW50ZXJydXB0IHBlbmRpbmcgKi8KKworLyogRkNSKDB4
M2MpIGJpdHMgKi8KKyNkZWZpbmUgSTJTMENMS0VOCTB4MTAwMAorI2RlZmluZSBJMlMwRU4JCTB4
MjAwMAorI2RlZmluZSBJMlMxQ0xLRU4JMHgwODAwMDAKKyNkZWZpbmUgSTJTMUVOCQkweDEwMDAw
MAorCisjZGVmaW5lIEZDUjNDX0JJVE1BU0sgIlwwMjBcMjVJMlMxRU5cMjRJMlMxQ0xLRU5cMTZJ
MlMwRU5cMTVJMlMwQ0xLRU4iCisKIC8qIFRBUzMwMDQgcmVnaXN0ZXJzICovCiAjZGVmaW5lIERF
UV9NQ1IxCTB4MDEJLyogTWFpbiBjb250cm9sIHJlZ2lzdGVyIDEgKDFieXRlKSAqLwogI2RlZmlu
ZSBERVFfRFJDCQkweDAyCS8qIER5bmFtaWMgcmFuZ2UgY29tcHJlc3Npb24gKDZieXRlcz8pICov
CkBAIC04NjUsOTEgKzg3NywxMTQgQEAKICNkZWZpbmUgIFNFUklBTF9EQVYJMHgwMDA0MDAwMAog
I2RlZmluZSAgU0VSSUFMX1NJTElDT04JMHgwMDA1MDAwMAogCi0vLyByYXRlID0gZnMgPSBMUkNM
SwotLy8gU0NMSyA9IDY0KkxSQ0xLIChJMlMpCi0vLyBNQ0xLID0gMjU2ZnMgKHR5cC4gLS0gY2hh
bmdlYWJsZSkKLQotLy8gTUNMSyA9IGNsa3NyYyAvIG1kaXYKLS8vIFNDTEsgPSBNQ0xLIC8gc2Rp
dgotLy8gcmF0ZSA9IFNDTEsgLyA2NCAgICAoID0gTFJDTEsgPSBmcykKKy8qCisgKiByYXRlID0g
ZnMgPSBMUkNMSworICogU0NMSyA9IDY0KkxSQ0xLIChJMlMpCisgKiBNQ0xLID0gMjU2ZnMgKHR5
cC4gLS0gY2hhbmdlYWJsZSkKKyAqCisgKiBNQ0xLID0gY2xrc3JjIC8gbWRpdgorICogU0NMSyA9
IE1DTEsgLyBzZGl2CisgKiByYXRlID0gU0NMSyAvIDY0ICAgICggPSBMUkNMSyA9IGZzKQorICov
CiAKIGludAotc25hcHBlcl9zZXRfcmF0ZShzdHJ1Y3Qgc25hcHBlcl9zb2Z0YyAqc2MsIHVfaW50
IHJhdGUpCitzbmFwcGVyX3NldF9yYXRlKHN0cnVjdCBzbmFwcGVyX3NvZnRjICpzYywgdV9pbnQg
X3JhdGUpCiB7Ci0JdV9pbnQgcmVnOwotCWludCBNQ0xLOwotCWludCBjbGtzcmMsIG1kaXYsIHNk
aXY7Ci0JaW50IG1jbGtfZnM7Ci0KLQlyZWcgPSAwOwotCXN3aXRjaCAocmF0ZSkgewotCWNhc2Ug
ODAwMDoKLQkJY2xrc3JjID0gMTg0MzIwMDA7CQkvKiAxOE1IeiAqLwotCQlyZWcgPSBDTEtTUkNf
MThNSHo7Ci0JCW1jbGtfZnMgPSAyNTY7Ci0JCWJyZWFrOwotCi0JY2FzZSA0NDEwMDoKLQkJY2xr
c3JjID0gNDUxNTg0MDA7CQkvKiA0NU1IeiAqLwotCQlyZWcgPSBDTEtTUkNfNDVNSHo7Ci0JCW1j
bGtfZnMgPSAyNTY7Ci0JCWJyZWFrOwotCi0JY2FzZSA0ODAwMDoKLQkJY2xrc3JjID0gNDkxNTIw
MDA7CQkvKiA0OU1IeiAqLwotCQlyZWcgPSBDTEtTUkNfNDlNSHo7Ci0JCW1jbGtfZnMgPSAyNTY7
Ci0JCWJyZWFrOwotCi0JZGVmYXVsdDoKLQkJcmV0dXJuIEVJTlZBTDsKLQl9Ci0KLQlNQ0xLID0g
cmF0ZSAqIG1jbGtfZnM7Ci0JbWRpdiA9IGNsa3NyYyAvIE1DTEs7CQkJLy8gNAotCXNkaXYgPSBt
Y2xrX2ZzIC8gNjQ7CQkJLy8gNAotCi0Jc3dpdGNoIChtZGl2KSB7Ci0JY2FzZSAxOgotCQlyZWcg
fD0gTUNMS19ESVYxOwotCQlicmVhazsKLQljYXNlIDM6Ci0JCXJlZyB8PSBNQ0xLX0RJVjM7Ci0J
CWJyZWFrOwotCWNhc2UgNToKLQkJcmVnIHw9IE1DTEtfRElWNTsKLQkJYnJlYWs7Ci0JZGVmYXVs
dDoKLQkJcmVnIHw9ICgobWRpdiAvIDIgLSAxKSA8PCAyNCkgJiAweDFmMDAwMDAwOwotCQlicmVh
azsKLQl9Ci0KLQlzd2l0Y2ggKHNkaXYpIHsKLQljYXNlIDE6Ci0JCXJlZyB8PSBTQ0xLX0RJVjE7
Ci0JCWJyZWFrOwotCWNhc2UgMzoKLQkJcmVnIHw9IFNDTEtfRElWMzsKLQkJYnJlYWs7Ci0JZGVm
YXVsdDoKLQkJcmVnIHw9ICgoc2RpdiAvIDIgLSAxKSA8PCAyMCkgJiAweDAwZjAwMDAwOwotCQli
cmVhazsKLQl9Ci0KLQlyZWcgfD0gU0NMS19NQVNURVI7CS8qIFhYWCBtYXN0ZXIgbW9kZSAqLwot
Ci0JcmVnIHw9IFNFUklBTF82NHg7CisgICAgICAgIGludCByYXRlID0gX3JhdGU7CisgICAgICAg
IHVfaW50IHJlZyA9IDAsIHg7CisgICAgICAgIGludCBNQ0xLOworICAgICAgICBpbnQgY2xrc3Jj
LCBtZGl2LCBzZGl2OworICAgICAgICBpbnQgbWNsa19mczsKKyAgICAgICAgaW50IHRpbW87CisK
KyAgICAgICAgc3dpdGNoIChyYXRlKSB7CisgICAgICAgIGNhc2UgODAwMDoKKyAgICAgICAgICAg
ICAgICBjbGtzcmMgPSAxODQzMjAwMDsgICAgICAgICAgICAgICAgLyogMThNSHogKi8KKyAgICAg
ICAgICAgICAgICByZWcgPSBDTEtTUkNfMThNSHo7CisgICAgICAgICAgICAgICAgbWNsa19mcyA9
IDI1NjsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDQ0MTAwOgorICAg
ICAgICAgICAgICAgIGNsa3NyYyA9IDQ1MTU4NDAwOyAgICAgICAgICAgICAgICAvKiA0NU1IeiAq
LworICAgICAgICAgICAgICAgIHJlZyA9IENMS1NSQ180NU1IejsKKyAgICAgICAgICAgICAgICBt
Y2xrX2ZzID0gMjU2OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgNDgw
MDA6CisgICAgICAgICAgICAgICAgY2xrc3JjID0gNDkxNTIwMDA7ICAgICAgICAgICAgICAgIC8q
IDQ5TUh6ICovCisgICAgICAgICAgICAgICAgcmVnID0gQ0xLU1JDXzQ5TUh6OworICAgICAgICAg
ICAgICAgIG1jbGtfZnMgPSAyNTY7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ZGVmYXVsdDoKKwkJRFBSSU5URigic25hcHBlcl9zZXRfcmF0ZTogaW52YWxpZCByYXRlICVkXG4i
LCByYXRlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUlOVkFMOworICAgICAgICB9CisKKyAg
ICAgICAgTUNMSyA9IHJhdGUgKiBtY2xrX2ZzOworICAgICAgICBtZGl2ID0gY2xrc3JjIC8gTUNM
SzsgLyogNCAqLworICAgICAgICBzZGl2ID0gbWNsa19mcyAvIDY0OyAvKiA0ICovCisKKyAgICAg
ICAgc3dpdGNoIChtZGl2KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICByZWcg
fD0gTUNMS19ESVYxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6Cisg
ICAgICAgICAgICAgICAgcmVnIHw9IE1DTEtfRElWMzsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgIHJlZyB8PSBNQ0xLX0RJVjU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVn
IHw9ICgobWRpdiAvIDIgLSAxKSA8PCAyNCkgJiAweDFmMDAwMDAwOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzZGl2KSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgICAgICByZWcgfD0gU0NMS19ESVYxOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgcmVnIHw9IFNDTEtfRElW
MzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICByZWcgfD0gKChzZGl2IC8gMiAtIDEpIDw8IDIwKSAmIDB4MDBmMDAwMDA7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZWcgfD0gU0NMS19NQVNURVI7
ICAgICAgICAvKiBYWFggbWFzdGVyIG1vZGUgKi8KKworICAgICAgICByZWcgfD0gU0VSSUFMXzY0
eDsKKworICAgICAgICB4ID0gaW4zMnJiKHNjLT5zY19yZWcgKyBJMlNfRk9STUFUKTsKKyAgICAg
ICAgaWYgKHggPT0gcmVnKQorICAgICAgICAgICAgICAgIHJldHVybiAwOyAgICAgICAgLyogTm8g
Y2hhbmdlOyBkbyBub3RoaW5nLiAqLworCisgICAgICAgIC8qIHN0ZXJlbyBpbnB1dCBhbmQgb3V0
cHV0ICovCisgICAgICAgIG91dDMycmIoc2MtPnNjX3JlZyArIEkyU19XT1JEU0laRSwgMHgwMjAw
MDIwMCk7CisKKyAgICAgICAgLyogQ2xlYXIgQ0xLU1RPUFBFTkQuICovCisgICAgICAgIG91dDMy
cmIoc2MtPnNjX3JlZyArIEkyU19JTlQsIEkyU19JTlRfQ0xLU1RPUFBFTkQpOworCisgICAgICAg
IHggPSBpbjMycmIoMHg4MDAwMDAzYyk7ICAgICAgICAgICAgICAgIC8qIEZDUiAqLworICAgICAg
ICB4ICY9IH5JMlMwQ0xLRU47ICAgICAgICAgICAgICAgIC8qIFhYWCBJMlMwICovCisgICAgICAg
IG91dDMycmIoMHg4MDAwMDAzYywgeCk7CisKKyAgICAgICAgLyogV2FpdCB1bnRpbCBjbG9jayBp
cyBzdG9wcGVkLiAqLworICAgICAgICBmb3IgKHRpbW8gPSAxMDAwOyB0aW1vID4gMDsgdGltby0t
KSB7CisgICAgICAgICAgICAgICAgaWYgKGluMzJyYihzYy0+c2NfcmVnICsgSTJTX0lOVCkgJiBJ
MlNfSU5UX0NMS1NUT1BQRU5EKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwor
ICAgICAgICAgICAgICAgIGRlbGF5KDEpOworICAgICAgICB9CisgICAgICAgIHByaW50ZigiaTJz
X3NldF9yYXRlOiB0aW1lb3V0XG4iKTsKK2RvbmU6CisgICAgICAgIG91dDMycmIoc2MtPnNjX3Jl
ZyArIEkyU19GT1JNQVQsIHJlZyk7CisKKyAgICAgICAgeCA9IGluMzJyYigweDgwMDAwMDNjKTsK
KyAgICAgICAgeCB8PSBJMlMwQ0xLRU47CisgICAgICAgIG91dDMycmIoMHg4MDAwMDAzYywgeCk7
CiAKLQkvKiBzdGVyZW8gaW5wdXQgYW5kIG91dHB1dCAqLwotCURQUklOVEYoIkkyU1NldERhdGFX
b3JkU2l6ZVJlZyAweCUwOHggLT4gMHglMDh4XG4iLAotCSAgICBpbjMycmIoc2MtPnNjX3JlZyAr
IEkyU19XT1JEU0laRSksIDB4MDIwMDAyMDApOwotCW91dDMycmIoc2MtPnNjX3JlZyArIEkyU19X
T1JEU0laRSwgMHgwMjAwMDIwMCk7Ci0KLQlEUFJJTlRGKCJJMlNTZXRTZXJpYWxGb3JtYXRSZWcg
MHgleCAtPiAweCV4XG4iLAotCSAgICBpbjMycmIoc2MtPnNjX3JlZyArIEkyU19GT1JNQVQpLCBy
ZWcpOwotCW91dDMycmIoc2MtPnNjX3JlZyArIEkyU19GT1JNQVQsIHJlZyk7Ci0KLQlyZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIDA7CiB9CiAKICNkZWZpbmUgREVRYWRkciAweDZhCkBAIC0xMTgx
LDE0ICsxMjE2LDYgQEAKIAlyZXR1cm4gLTE7CiB9CiAKLS8qIEZDUigweDNjKSBiaXRzICovCi0j
ZGVmaW5lIEkyUzBDTEtFTgkweDEwMDAKLSNkZWZpbmUgSTJTMEVOCQkweDIwMDAKLSNkZWZpbmUg
STJTMUNMS0VOCTB4MDgwMDAwCi0jZGVmaW5lIEkyUzFFTgkJMHgxMDAwMDAKLQotI2RlZmluZSBG
Q1IzQ19CSVRNQVNLICJcMDIwXDI1STJTMUVOXDI0STJTMUNMS0VOXDE2STJTMEVOXDE1STJTMENM
S0VOIgotCiB2b2lkCiBzbmFwcGVyX2luaXQoc3RydWN0IHNuYXBwZXJfc29mdGMgKnNjLCBpbnQg
bm9kZSkKIHsK
------=_Part_65686_24672065.1165524286845--