NFC: pn544: i2c: Add firmware download mode power-on support
This is in preparation for pn544-i2c firmware download feature, where we need to know if we're in regular or firmware upload mode. Signed-off-by: Eric Lapuyade <eric.lapuyade@intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
		
							parent
							
								
									ef04158e13
								
							
						
					
					
						commit
						eab10b71a7
					
				| @ -65,6 +65,7 @@ struct pn544_i2c_phy { | ||||
| 	unsigned int en_polarity; | ||||
| 
 | ||||
| 	int powered; | ||||
| 	int run_mode; | ||||
| 
 | ||||
| 	int hard_fault;		/*
 | ||||
| 				 * < 0 if hardware error occured (e.g. i2c err) | ||||
| @ -122,15 +123,22 @@ out: | ||||
| 	gpio_set_value(phy->gpio_en, !phy->en_polarity); | ||||
| } | ||||
| 
 | ||||
| static void pn544_hci_i2c_enable_mode(struct pn544_i2c_phy *phy, int run_mode) | ||||
| { | ||||
| 	gpio_set_value(phy->gpio_fw, run_mode == PN544_FW_MODE ? 1 : 0); | ||||
| 	gpio_set_value(phy->gpio_en, phy->en_polarity); | ||||
| 	usleep_range(10000, 15000); | ||||
| 
 | ||||
| 	phy->run_mode = run_mode; | ||||
| } | ||||
| 
 | ||||
| static int pn544_hci_i2c_enable(void *phy_id) | ||||
| { | ||||
| 	struct pn544_i2c_phy *phy = phy_id; | ||||
| 
 | ||||
| 	pr_info(DRIVER_DESC ": %s\n", __func__); | ||||
| 
 | ||||
| 	gpio_set_value(phy->gpio_fw, 0); | ||||
| 	gpio_set_value(phy->gpio_en, phy->en_polarity); | ||||
| 	usleep_range(10000, 15000); | ||||
| 	pn544_hci_i2c_enable_mode(phy, PN544_HCI_MODE); | ||||
| 
 | ||||
| 	phy->powered = 1; | ||||
| 
 | ||||
|  | ||||
| @ -31,9 +31,6 @@ | ||||
| /* Timing restrictions (ms) */ | ||||
| #define PN544_HCI_RESETVEN_TIME		30 | ||||
| 
 | ||||
| #define HCI_MODE 0 | ||||
| #define FW_MODE 1 | ||||
| 
 | ||||
| enum pn544_state { | ||||
| 	PN544_ST_COLD, | ||||
| 	PN544_ST_FW_READY, | ||||
|  | ||||
| @ -24,6 +24,9 @@ | ||||
| 
 | ||||
| #define DRIVER_DESC "HCI NFC driver for PN544" | ||||
| 
 | ||||
| #define PN544_HCI_MODE 0 | ||||
| #define PN544_FW_MODE 1 | ||||
| 
 | ||||
| int pn544_hci_probe(void *phy_id, struct nfc_phy_ops *phy_ops, char *llc_name, | ||||
| 		    int phy_headroom, int phy_tailroom, int phy_payload, | ||||
| 		    struct nfc_hci_dev **hdev); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user