Le recours est rejeté pour le surplus dans la mesure où il est recevable. 2. La demande d'assistance judiciaire est rejetée dans la mesure où elle n'est pas sans objet. 3. Une partie des frais judiciaires, arrêtée à CHF 800.00, est mise à la charge du recourant. 4. Le canton de Berne versera à l'avocat du recourant une indemnité de CHF 1'500.00 à titre de dépens réduits pour la procédure devant le Tribunal fédéral. 5. Le présent arrêt est communiqué aux parties et à la Cour suprême du canton de Berne, 2e Chambre pénale.