10b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart/* 20b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * Aptina Sensor PLL Configuration 30b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * 40b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * Copyright (C) 2012 Laurent Pinchart <laurent.pinchart@ideasonboard.com> 50b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * 60b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * This program is free software; you can redistribute it and/or 70b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * modify it under the terms of the GNU General Public License 80b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * version 2 as published by the Free Software Foundation. 90b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * 100b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * This program is distributed in the hope that it will be useful, but 110b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * WITHOUT ANY WARRANTY; without even the implied warranty of 120b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 130b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * General Public License for more details. 140b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * 150b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * You should have received a copy of the GNU General Public License 160b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * along with this program; if not, write to the Free Software 170b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 180b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart * 02110-1301 USA 190b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart */ 200b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 210b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart#ifndef __APTINA_PLL_H 220b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart#define __APTINA_PLL_H 230b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 240b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchartstruct aptina_pll { 250b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int ext_clock; 260b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int pix_clock; 270b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 280b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int n; 290b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int m; 300b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int p1; 310b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart}; 320b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 330b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchartstruct aptina_pll_limits { 340b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int ext_clock_min; 350b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int ext_clock_max; 360b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int int_clock_min; 370b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int int_clock_max; 380b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int out_clock_min; 390b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int out_clock_max; 400b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int pix_clock_max; 410b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 420b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int n_min; 430b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int n_max; 440b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int m_min; 450b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int m_max; 460b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int p1_min; 470b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart unsigned int p1_max; 480b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart}; 490b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 500b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchartstruct device; 510b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 520b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchartint aptina_pll_calculate(struct device *dev, 530b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart const struct aptina_pll_limits *limits, 540b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart struct aptina_pll *pll); 550b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart 560b27c81ba32de6f5eb9df769d839bab399c4c6deLaurent Pinchart#endif /* __APTINA_PLL_H */ 57